{
  "contractName": "SignaturitUser",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "addressAttr",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "numberAttr",
      "outputs": [
        {
          "name": "",
          "type": "int256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "boolAttr",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ownerAddress",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "numberArrayAttr",
      "outputs": [
        {
          "name": "",
          "type": "int256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "rootAddress",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "boolArrayAttr",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "stringAttr",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "addressArrayAttr",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_ownerAddress",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "value",
          "type": "string"
        }
      ],
      "name": "setStringAttribute",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        }
      ],
      "name": "deleteStringAttribute",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        }
      ],
      "name": "getStringAttribute",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "value",
          "type": "string"
        }
      ],
      "name": "setStringArrayAttribute",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "deleteStringArrayAttribute",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getStringArrayAttribute",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "value",
          "type": "int256"
        }
      ],
      "name": "setNumberAttribute",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        }
      ],
      "name": "deleteNumberAttribute",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        }
      ],
      "name": "getNumberAttribute",
      "outputs": [
        {
          "name": "",
          "type": "int256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "value",
          "type": "int256"
        }
      ],
      "name": "setNumberArrayAttribute",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "deleteNumberArrayAttribute",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getNumberArrayAttribute",
      "outputs": [
        {
          "name": "",
          "type": "int256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "value",
          "type": "address"
        }
      ],
      "name": "setAddressAttribute",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        }
      ],
      "name": "deleteAddressAttribute",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        }
      ],
      "name": "getAddressAttribute",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "value",
          "type": "address"
        }
      ],
      "name": "setAddressArrayAttribute",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "deleteAddressArrayAttribute",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getAddressArrayAttribute",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "value",
          "type": "bool"
        }
      ],
      "name": "setBooleanAttribute",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        }
      ],
      "name": "deleteBooleanAttribute",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        }
      ],
      "name": "getBooleanAttribute",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "value",
          "type": "bool"
        }
      ],
      "name": "setBooleanArrayAttribute",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getBooleanArrayAttribute",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "deleteBooleanArrayAttribute",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506040516020806129718339810180604052602081101561003057600080fd5b5051600a805433600160a060020a031991821617909155600b8054909116600160a060020a039092169190911790556129038061006e6000396000f3fe6080604052600436106101875763ffffffff60e060020a6000350416630611ff70811461018c578063080f7f90146102b457806310a093331461036957806324ead3c61461041c5780632ccc8381146104cd57806334311d8e146105925780633454a8161461064e578063366e8b8f1461069457806344947cec146107475780635e734e291461080c57806361aab0181461094257806361d5b6571461096c57806366ae09bc14610a1f5780636793bcc214610a495780636b21944a14610afc57806375b877e514610bad57806383eff6ef14610c5e5780638c9c487414610d115780638caf4de314610dc25780638f84aa0914610ef85780639226b7e414610f0d5780639518d93314610fbe5780639cefb31e14610fee578063a6d1c1b7146110a1578063aaa2b8c814611154578063ac3e500114611169578063d47f3f2514611199578063d661f878146111c3578063e09b5a971461127f578063eebb59a014611330578063ef0ac8c814611360578063f3a2627414611413578063ff6ccad6146114c6575b600080fd5b34801561019857600080fd5b5061023f600480360360408110156101af57600080fd5b810190602081018135602060020a8111156101c957600080fd5b8201836020820111156101db57600080fd5b803590602001918460018302840111602060020a831117156101fc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611577915050565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610279578181015183820152602001610261565b50505050905090810190601f1680156102a65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102c057600080fd5b50610367600480360360408110156102d757600080fd5b810190602081018135602060020a8111156102f157600080fd5b82018360208201111561030357600080fd5b803590602001918460018302840111602060020a8311171561032457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061166a915050565b005b34801561037557600080fd5b506103676004803603604081101561038c57600080fd5b810190602081018135602060020a8111156103a657600080fd5b8201836020820111156103b857600080fd5b803590602001918460018302840111602060020a831117156103d957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506117ad915050565b34801561042857600080fd5b5061023f6004803603602081101561043f57600080fd5b810190602081018135602060020a81111561045957600080fd5b82018360208201111561046b57600080fd5b803590602001918460018302840111602060020a8311171561048c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506118e0945050505050565b3480156104d957600080fd5b5061057e600480360360208110156104f057600080fd5b810190602081018135602060020a81111561050a57600080fd5b82018360208201111561051c57600080fd5b803590602001918460018302840111602060020a8311171561053d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061198f945050505050565b604080519115158252519081900360200190f35b34801561059e57600080fd5b50610367600480360360408110156105b557600080fd5b810190602081018135602060020a8111156105cf57600080fd5b8201836020820111156105e157600080fd5b803590602001918460018302840111602060020a8311171561060257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506119b49050565b34801561065a57600080fd5b506106786004803603602081101561067157600080fd5b5035611a52565b60408051600160a060020a039092168252519081900360200190f35b3480156106a057600080fd5b50610367600480360360408110156106b757600080fd5b810190602081018135602060020a8111156106d157600080fd5b8201836020820111156106e357600080fd5b803590602001918460018302840111602060020a8311171561070457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050503515159050611a6d565b34801561075357600080fd5b506107fa6004803603604081101561076a57600080fd5b810190602081018135602060020a81111561078457600080fd5b82018360208201111561079657600080fd5b803590602001918460018302840111602060020a831117156107b757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611afc915050565b60408051918252519081900360200190f35b34801561081857600080fd5b506103676004803603604081101561082f57600080fd5b810190602081018135602060020a81111561084957600080fd5b82018360208201111561085b57600080fd5b803590602001918460018302840111602060020a8311171561087c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a8111156108ce57600080fd5b8201836020820111156108e057600080fd5b803590602001918460018302840111602060020a8311171561090157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611b58945050505050565b34801561094e57600080fd5b506107fa6004803603602081101561096557600080fd5b5035611bfd565b34801561097857600080fd5b5061057e6004803603604081101561098f57600080fd5b810190602081018135602060020a8111156109a957600080fd5b8201836020820111156109bb57600080fd5b803590602001918460018302840111602060020a831117156109dc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611c0f915050565b348015610a2b57600080fd5b5061057e60048036036020811015610a4257600080fd5b5035611c76565b348015610a5557600080fd5b5061036760048036036040811015610a6c57600080fd5b810190602081018135602060020a811115610a8657600080fd5b820183602082011115610a9857600080fd5b803590602001918460018302840111602060020a83111715610ab957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050503515159050611c8b565b348015610b0857600080fd5b5061036760048036036020811015610b1f57600080fd5b810190602081018135602060020a811115610b3957600080fd5b820183602082011115610b4b57600080fd5b803590602001918460018302840111602060020a83111715610b6c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611d3d945050505050565b348015610bb957600080fd5b5061036760048036036020811015610bd057600080fd5b810190602081018135602060020a811115610bea57600080fd5b820183602082011115610bfc57600080fd5b803590602001918460018302840111602060020a83111715610c1d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611dc4945050505050565b348015610c6a57600080fd5b5061036760048036036040811015610c8157600080fd5b810190602081018135602060020a811115610c9b57600080fd5b820183602082011115610cad57600080fd5b803590602001918460018302840111602060020a83111715610cce57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611e63915050565b348015610d1d57600080fd5b5061067860048036036020811015610d3457600080fd5b810190602081018135602060020a811115610d4e57600080fd5b820183602082011115610d6057600080fd5b803590602001918460018302840111602060020a83111715610d8157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611fa9945050505050565b348015610dce57600080fd5b5061036760048036036040811015610de557600080fd5b810190602081018135602060020a811115610dff57600080fd5b820183602082011115610e1157600080fd5b803590602001918460018302840111602060020a83111715610e3257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a811115610e8457600080fd5b820183602082011115610e9657600080fd5b803590602001918460018302840111602060020a83111715610eb757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611fd4945050505050565b348015610f0457600080fd5b5061067861206b565b348015610f1957600080fd5b5061036760048036036020811015610f3057600080fd5b810190602081018135602060020a811115610f4a57600080fd5b820183602082011115610f5c57600080fd5b803590602001918460018302840111602060020a83111715610f7d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061207a945050505050565b348015610fca57600080fd5b506107fa60048036036040811015610fe157600080fd5b5080359060200135612107565b348015610ffa57600080fd5b506103676004803603604081101561101157600080fd5b810190602081018135602060020a81111561102b57600080fd5b82018360208201111561103d57600080fd5b803590602001918460018302840111602060020a8311171561105e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250612137915050565b3480156110ad57600080fd5b50610367600480360360408110156110c457600080fd5b810190602081018135602060020a8111156110de57600080fd5b8201836020820111156110f057600080fd5b803590602001918460018302840111602060020a8311171561111157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506121ba915050565b34801561116057600080fd5b5061067861224d565b34801561117557600080fd5b5061057e6004803603604081101561118c57600080fd5b508035906020013561225c565b3480156111a557600080fd5b5061023f600480360360208110156111bc57600080fd5b503561229e565b3480156111cf57600080fd5b50610367600480360360408110156111e657600080fd5b810190602081018135602060020a81111561120057600080fd5b82018360208201111561121257600080fd5b803590602001918460018302840111602060020a8311171561123357600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506123399050565b34801561128b57600080fd5b50610367600480360360208110156112a257600080fd5b810190602081018135602060020a8111156112bc57600080fd5b8201836020820111156112ce57600080fd5b803590602001918460018302840111602060020a831117156112ef57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506123e7945050505050565b34801561133c57600080fd5b506106786004803603604081101561135357600080fd5b5080359060200135612467565b34801561136c57600080fd5b506103676004803603604081101561138357600080fd5b810190602081018135602060020a81111561139d57600080fd5b8201836020820111156113af57600080fd5b803590602001918460018302840111602060020a831117156113d057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061249e915050565b34801561141f57600080fd5b506106786004803603604081101561143657600080fd5b810190602081018135602060020a81111561145057600080fd5b82018360208201111561146257600080fd5b803590602001918460018302840111602060020a8311171561148357600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506125b4915050565b3480156114d257600080fd5b506107fa600480360360208110156114e957600080fd5b810190602081018135602060020a81111561150357600080fd5b82018360208201111561151557600080fd5b803590602001918460018302840111602060020a8311171561153657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612611945050505050565b6060600061158484612633565b6000818152600d6020526040902054909150831015611652576000818152600d602052604090208054849081106115b757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156116455780601f1061161a57610100808354040283529160200191611645565b820191906000526020600020905b81548152906001019060200180831161162857829003601f168201915b5050505050915050611664565b50506040805160208101909152600081525b92915050565b600a54600160a060020a031632146116cc576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b60006116d783612633565b6000818152601160205260409020549091508083106116f75750506117a9565b825b6001820381101561178557600083815260116020526040902080546001830190811061172157fe5b6000918252602080832090910154858352601190915260409091208054600160a060020a03909216918390811061175457fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790556001016116f9565b5060008281526011602052604090208054906117a59060001983016126c5565b5050505b5050565b600a54600160a060020a0316321461180f576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b600061181a83612633565b6000818152600d602052604090205490915080831061183a5750506117a9565b825b600182038110156118c0576000838152600d6020526040902080546001830190811061186457fe5b90600052602060002001600d60008581526020019081526020016000208281548110151561188e57fe5b9060005260206000200190805460018160011615610100020316600290046118b79291906126e9565b5060010161183c565b506000828152600d602052604090208054906117a590600019830161276e565b606060006118ed83612633565b6000818152600c60209081526040918290208054835160026001831615610100026000190190921691909104601f810184900484028201840190945283815293945091908301828280156119825780601f1061195757610100808354040283529160200191611982565b820191906000526020600020905b81548152906001019060200180831161196557829003601f168201915b5050505050915050919050565b60008061199b83612633565b60009081526012602052604090205460ff169392505050565b600a54600160a060020a03163214611a16576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b6000611a2183612633565b60009081526010602052604090208054600160a060020a031916600160a060020a0393909316929092179091555050565b601060205260009081526040902054600160a060020a031681565b600a54600160a060020a03163214611acf576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b6000611ada83612633565b6000908152601260205260409020805460ff1916921515929092179091555050565b600080611b0884612633565b6000818152600f6020526040902054909150831015611b4e576000818152600f60205260409020805484908110611b3b57fe5b9060005260206000200154915050611664565b5060009392505050565b600a54600160a060020a03163214611bba576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b6000611bc583612633565b6000818152600d60209081526040822080546001810180835591845292829020865194955090936117a5939190910191860190612792565b600e6020526000908152604090205481565b600080611c1b84612633565b600081815260136020526040902054909150831015611b4e576000818152601360205260409020805484908110611c4e57fe5b90600052602060002090602091828204019190069054906101000a900460ff16915050611664565b60126020526000908152604090205460ff1681565b600a54600160a060020a03163214611ced576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b6000611cf883612633565b60009081526013602090815260408220805460018101825590835291819020908204018054931515601f9092166101000a91820260ff90920219909316179091555050565b600a54600160a060020a03163214611d9f576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b6000611daa82612633565b6000908152601260205260409020805460ff191690555050565b600a54600160a060020a03163214611e26576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b6000611e3182612633565b6040805160208181018084526000808452858152600c9092529290209051929350611e5e92909190612792565b505050565b600a54600160a060020a03163214611ec5576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b6000611ed083612633565b600081815260136020526040902054909150808310611ef05750506117a9565b825b60018203811015611f89576000838152601360205260409020805460018301908110611f1a57fe5b600091825260208083208183040154868452601390915260409092208054601f9092166101000a90920460ff16919083908110611f5357fe5b90600052602060002090602091828204019190066101000a81548160ff0219169083151502179055508080600101915050611ef2565b5060008281526013602052604090208054906117a5906000198301612800565b600080611fb583612633565b600090815260106020526040902054600160a060020a03169392505050565b600a54600160a060020a03163214612036576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b600061204183612633565b6000818152600c602090815260409091208451929350612065929091850190612792565b50505050565b600b54600160a060020a031681565b600a54600160a060020a031632146120dc576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b60006120e782612633565b60009081526010602052604090208054600160a060020a03191690555050565b600f6020528160005260406000208181548110151561212257fe5b90600052602060002001600091509150505481565b600a54600160a060020a03163214612199576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b60006121a483612633565b6000908152600e60205260409020919091555050565b600a54600160a060020a0316321461221c576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b600061222783612633565b6000908152600f6020908152604082208054600181018255908352912001919091555050565b600a54600160a060020a031681565b60136020528160005260406000208181548110151561227757fe5b9060005260206000209060209182820401919006915091509054906101000a900460ff1681565b600c6020908152600091825260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156123315780601f1061230657610100808354040283529160200191612331565b820191906000526020600020905b81548152906001019060200180831161231457829003601f168201915b505050505081565b600a54600160a060020a0316321461239b576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b60006123a683612633565b6000908152601160209081526040822080546001810182559083529120018054600160a060020a031916600160a060020a0393909316929092179091555050565b600a54600160a060020a03163214612449576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b600061245482612633565b6000908152600e60205260408120555050565b60116020528160005260406000208181548110151561248257fe5b600091825260209091200154600160a060020a03169150829050565b600a54600160a060020a03163214612500576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b600061250b83612633565b6000818152600f602052604090205490915080831061252b5750506117a9565b825b60018203811015612594576000838152600f6020526040902080546001830190811061255557fe5b9060005260206000200154600f60008581526020019081526020016000208281548110151561258057fe5b60009182526020909120015560010161252d565b506000828152600f602052604090208054906117a59060001983016126c5565b6000806125c084612633565b600081815260116020526040902054909150831015611b4e5760008181526011602052604090208054849081106125f357fe5b600091825260209091200154600160a060020a031691506116649050565b60008061261d83612633565b6000908152600e60205260409020549392505050565b6000816040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561267657818101518382015260200161265e565b50505050905090810190601f1680156126a35780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001209050919050565b815481835581811115611e5e57600083815260209020611e5e918101908301612830565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612722578054855561275e565b8280016001018555821561275e57600052602060002091601f016020900482015b8281111561275e578254825591600101919060010190612743565b5061276a929150612830565b5090565b815481835581811115611e5e57600083815260209020611e5e91810190830161284d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106127d357805160ff191683800117855561275e565b8280016001018555821561275e579182015b8281111561275e5782518255916020019190600101906127e5565b815481835581811115611e5e57601f016020900481601f01602090048360005260206000209182019101611e5e91905b61284a91905b8082111561276a5760008155600101612836565b90565b61284a91905b8082111561276a5760006128678282612870565b50600101612853565b50805460018160011615610100020316600290046000825580601f1061289657506128b4565b601f0160209004906000526020600020908101906128b49190612830565b5056fe4f6e6c7920746865206f776e65722063616e20706572666f726d207468697320a165627a7a723058205658995a0e2c4d843fb7a1764aa9caaf1b41ae1e622b2534778535c1233559150029",
  "deployedBytecode": "0x6080604052600436106101875763ffffffff60e060020a6000350416630611ff70811461018c578063080f7f90146102b457806310a093331461036957806324ead3c61461041c5780632ccc8381146104cd57806334311d8e146105925780633454a8161461064e578063366e8b8f1461069457806344947cec146107475780635e734e291461080c57806361aab0181461094257806361d5b6571461096c57806366ae09bc14610a1f5780636793bcc214610a495780636b21944a14610afc57806375b877e514610bad57806383eff6ef14610c5e5780638c9c487414610d115780638caf4de314610dc25780638f84aa0914610ef85780639226b7e414610f0d5780639518d93314610fbe5780639cefb31e14610fee578063a6d1c1b7146110a1578063aaa2b8c814611154578063ac3e500114611169578063d47f3f2514611199578063d661f878146111c3578063e09b5a971461127f578063eebb59a014611330578063ef0ac8c814611360578063f3a2627414611413578063ff6ccad6146114c6575b600080fd5b34801561019857600080fd5b5061023f600480360360408110156101af57600080fd5b810190602081018135602060020a8111156101c957600080fd5b8201836020820111156101db57600080fd5b803590602001918460018302840111602060020a831117156101fc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611577915050565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610279578181015183820152602001610261565b50505050905090810190601f1680156102a65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102c057600080fd5b50610367600480360360408110156102d757600080fd5b810190602081018135602060020a8111156102f157600080fd5b82018360208201111561030357600080fd5b803590602001918460018302840111602060020a8311171561032457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061166a915050565b005b34801561037557600080fd5b506103676004803603604081101561038c57600080fd5b810190602081018135602060020a8111156103a657600080fd5b8201836020820111156103b857600080fd5b803590602001918460018302840111602060020a831117156103d957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506117ad915050565b34801561042857600080fd5b5061023f6004803603602081101561043f57600080fd5b810190602081018135602060020a81111561045957600080fd5b82018360208201111561046b57600080fd5b803590602001918460018302840111602060020a8311171561048c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506118e0945050505050565b3480156104d957600080fd5b5061057e600480360360208110156104f057600080fd5b810190602081018135602060020a81111561050a57600080fd5b82018360208201111561051c57600080fd5b803590602001918460018302840111602060020a8311171561053d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061198f945050505050565b604080519115158252519081900360200190f35b34801561059e57600080fd5b50610367600480360360408110156105b557600080fd5b810190602081018135602060020a8111156105cf57600080fd5b8201836020820111156105e157600080fd5b803590602001918460018302840111602060020a8311171561060257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506119b49050565b34801561065a57600080fd5b506106786004803603602081101561067157600080fd5b5035611a52565b60408051600160a060020a039092168252519081900360200190f35b3480156106a057600080fd5b50610367600480360360408110156106b757600080fd5b810190602081018135602060020a8111156106d157600080fd5b8201836020820111156106e357600080fd5b803590602001918460018302840111602060020a8311171561070457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050503515159050611a6d565b34801561075357600080fd5b506107fa6004803603604081101561076a57600080fd5b810190602081018135602060020a81111561078457600080fd5b82018360208201111561079657600080fd5b803590602001918460018302840111602060020a831117156107b757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611afc915050565b60408051918252519081900360200190f35b34801561081857600080fd5b506103676004803603604081101561082f57600080fd5b810190602081018135602060020a81111561084957600080fd5b82018360208201111561085b57600080fd5b803590602001918460018302840111602060020a8311171561087c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a8111156108ce57600080fd5b8201836020820111156108e057600080fd5b803590602001918460018302840111602060020a8311171561090157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611b58945050505050565b34801561094e57600080fd5b506107fa6004803603602081101561096557600080fd5b5035611bfd565b34801561097857600080fd5b5061057e6004803603604081101561098f57600080fd5b810190602081018135602060020a8111156109a957600080fd5b8201836020820111156109bb57600080fd5b803590602001918460018302840111602060020a831117156109dc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611c0f915050565b348015610a2b57600080fd5b5061057e60048036036020811015610a4257600080fd5b5035611c76565b348015610a5557600080fd5b5061036760048036036040811015610a6c57600080fd5b810190602081018135602060020a811115610a8657600080fd5b820183602082011115610a9857600080fd5b803590602001918460018302840111602060020a83111715610ab957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050503515159050611c8b565b348015610b0857600080fd5b5061036760048036036020811015610b1f57600080fd5b810190602081018135602060020a811115610b3957600080fd5b820183602082011115610b4b57600080fd5b803590602001918460018302840111602060020a83111715610b6c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611d3d945050505050565b348015610bb957600080fd5b5061036760048036036020811015610bd057600080fd5b810190602081018135602060020a811115610bea57600080fd5b820183602082011115610bfc57600080fd5b803590602001918460018302840111602060020a83111715610c1d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611dc4945050505050565b348015610c6a57600080fd5b5061036760048036036040811015610c8157600080fd5b810190602081018135602060020a811115610c9b57600080fd5b820183602082011115610cad57600080fd5b803590602001918460018302840111602060020a83111715610cce57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611e63915050565b348015610d1d57600080fd5b5061067860048036036020811015610d3457600080fd5b810190602081018135602060020a811115610d4e57600080fd5b820183602082011115610d6057600080fd5b803590602001918460018302840111602060020a83111715610d8157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611fa9945050505050565b348015610dce57600080fd5b5061036760048036036040811015610de557600080fd5b810190602081018135602060020a811115610dff57600080fd5b820183602082011115610e1157600080fd5b803590602001918460018302840111602060020a83111715610e3257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a811115610e8457600080fd5b820183602082011115610e9657600080fd5b803590602001918460018302840111602060020a83111715610eb757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611fd4945050505050565b348015610f0457600080fd5b5061067861206b565b348015610f1957600080fd5b5061036760048036036020811015610f3057600080fd5b810190602081018135602060020a811115610f4a57600080fd5b820183602082011115610f5c57600080fd5b803590602001918460018302840111602060020a83111715610f7d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061207a945050505050565b348015610fca57600080fd5b506107fa60048036036040811015610fe157600080fd5b5080359060200135612107565b348015610ffa57600080fd5b506103676004803603604081101561101157600080fd5b810190602081018135602060020a81111561102b57600080fd5b82018360208201111561103d57600080fd5b803590602001918460018302840111602060020a8311171561105e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250612137915050565b3480156110ad57600080fd5b50610367600480360360408110156110c457600080fd5b810190602081018135602060020a8111156110de57600080fd5b8201836020820111156110f057600080fd5b803590602001918460018302840111602060020a8311171561111157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506121ba915050565b34801561116057600080fd5b5061067861224d565b34801561117557600080fd5b5061057e6004803603604081101561118c57600080fd5b508035906020013561225c565b3480156111a557600080fd5b5061023f600480360360208110156111bc57600080fd5b503561229e565b3480156111cf57600080fd5b50610367600480360360408110156111e657600080fd5b810190602081018135602060020a81111561120057600080fd5b82018360208201111561121257600080fd5b803590602001918460018302840111602060020a8311171561123357600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506123399050565b34801561128b57600080fd5b50610367600480360360208110156112a257600080fd5b810190602081018135602060020a8111156112bc57600080fd5b8201836020820111156112ce57600080fd5b803590602001918460018302840111602060020a831117156112ef57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506123e7945050505050565b34801561133c57600080fd5b506106786004803603604081101561135357600080fd5b5080359060200135612467565b34801561136c57600080fd5b506103676004803603604081101561138357600080fd5b810190602081018135602060020a81111561139d57600080fd5b8201836020820111156113af57600080fd5b803590602001918460018302840111602060020a831117156113d057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061249e915050565b34801561141f57600080fd5b506106786004803603604081101561143657600080fd5b810190602081018135602060020a81111561145057600080fd5b82018360208201111561146257600080fd5b803590602001918460018302840111602060020a8311171561148357600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506125b4915050565b3480156114d257600080fd5b506107fa600480360360208110156114e957600080fd5b810190602081018135602060020a81111561150357600080fd5b82018360208201111561151557600080fd5b803590602001918460018302840111602060020a8311171561153657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612611945050505050565b6060600061158484612633565b6000818152600d6020526040902054909150831015611652576000818152600d602052604090208054849081106115b757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156116455780601f1061161a57610100808354040283529160200191611645565b820191906000526020600020905b81548152906001019060200180831161162857829003601f168201915b5050505050915050611664565b50506040805160208101909152600081525b92915050565b600a54600160a060020a031632146116cc576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b60006116d783612633565b6000818152601160205260409020549091508083106116f75750506117a9565b825b6001820381101561178557600083815260116020526040902080546001830190811061172157fe5b6000918252602080832090910154858352601190915260409091208054600160a060020a03909216918390811061175457fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790556001016116f9565b5060008281526011602052604090208054906117a59060001983016126c5565b5050505b5050565b600a54600160a060020a0316321461180f576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b600061181a83612633565b6000818152600d602052604090205490915080831061183a5750506117a9565b825b600182038110156118c0576000838152600d6020526040902080546001830190811061186457fe5b90600052602060002001600d60008581526020019081526020016000208281548110151561188e57fe5b9060005260206000200190805460018160011615610100020316600290046118b79291906126e9565b5060010161183c565b506000828152600d602052604090208054906117a590600019830161276e565b606060006118ed83612633565b6000818152600c60209081526040918290208054835160026001831615610100026000190190921691909104601f810184900484028201840190945283815293945091908301828280156119825780601f1061195757610100808354040283529160200191611982565b820191906000526020600020905b81548152906001019060200180831161196557829003601f168201915b5050505050915050919050565b60008061199b83612633565b60009081526012602052604090205460ff169392505050565b600a54600160a060020a03163214611a16576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b6000611a2183612633565b60009081526010602052604090208054600160a060020a031916600160a060020a0393909316929092179091555050565b601060205260009081526040902054600160a060020a031681565b600a54600160a060020a03163214611acf576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b6000611ada83612633565b6000908152601260205260409020805460ff1916921515929092179091555050565b600080611b0884612633565b6000818152600f6020526040902054909150831015611b4e576000818152600f60205260409020805484908110611b3b57fe5b9060005260206000200154915050611664565b5060009392505050565b600a54600160a060020a03163214611bba576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b6000611bc583612633565b6000818152600d60209081526040822080546001810180835591845292829020865194955090936117a5939190910191860190612792565b600e6020526000908152604090205481565b600080611c1b84612633565b600081815260136020526040902054909150831015611b4e576000818152601360205260409020805484908110611c4e57fe5b90600052602060002090602091828204019190069054906101000a900460ff16915050611664565b60126020526000908152604090205460ff1681565b600a54600160a060020a03163214611ced576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b6000611cf883612633565b60009081526013602090815260408220805460018101825590835291819020908204018054931515601f9092166101000a91820260ff90920219909316179091555050565b600a54600160a060020a03163214611d9f576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b6000611daa82612633565b6000908152601260205260409020805460ff191690555050565b600a54600160a060020a03163214611e26576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b6000611e3182612633565b6040805160208181018084526000808452858152600c9092529290209051929350611e5e92909190612792565b505050565b600a54600160a060020a03163214611ec5576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b6000611ed083612633565b600081815260136020526040902054909150808310611ef05750506117a9565b825b60018203811015611f89576000838152601360205260409020805460018301908110611f1a57fe5b600091825260208083208183040154868452601390915260409092208054601f9092166101000a90920460ff16919083908110611f5357fe5b90600052602060002090602091828204019190066101000a81548160ff0219169083151502179055508080600101915050611ef2565b5060008281526013602052604090208054906117a5906000198301612800565b600080611fb583612633565b600090815260106020526040902054600160a060020a03169392505050565b600a54600160a060020a03163214612036576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b600061204183612633565b6000818152600c602090815260409091208451929350612065929091850190612792565b50505050565b600b54600160a060020a031681565b600a54600160a060020a031632146120dc576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b60006120e782612633565b60009081526010602052604090208054600160a060020a03191690555050565b600f6020528160005260406000208181548110151561212257fe5b90600052602060002001600091509150505481565b600a54600160a060020a03163214612199576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b60006121a483612633565b6000908152600e60205260409020919091555050565b600a54600160a060020a0316321461221c576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b600061222783612633565b6000908152600f6020908152604082208054600181018255908352912001919091555050565b600a54600160a060020a031681565b60136020528160005260406000208181548110151561227757fe5b9060005260206000209060209182820401919006915091509054906101000a900460ff1681565b600c6020908152600091825260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156123315780601f1061230657610100808354040283529160200191612331565b820191906000526020600020905b81548152906001019060200180831161231457829003601f168201915b505050505081565b600a54600160a060020a0316321461239b576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b60006123a683612633565b6000908152601160209081526040822080546001810182559083529120018054600160a060020a031916600160a060020a0393909316929092179091555050565b600a54600160a060020a03163214612449576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b600061245482612633565b6000908152600e60205260408120555050565b60116020528160005260406000208181548110151561248257fe5b600091825260209091200154600160a060020a03169150829050565b600a54600160a060020a03163214612500576040805160e560020a62461bcd02815260206004820152602660248201526000805160206128b8833981519152604482015260d160020a6530b1ba34b7b702606482015290519081900360840190fd5b600061250b83612633565b6000818152600f602052604090205490915080831061252b5750506117a9565b825b60018203811015612594576000838152600f6020526040902080546001830190811061255557fe5b9060005260206000200154600f60008581526020019081526020016000208281548110151561258057fe5b60009182526020909120015560010161252d565b506000828152600f602052604090208054906117a59060001983016126c5565b6000806125c084612633565b600081815260116020526040902054909150831015611b4e5760008181526011602052604090208054849081106125f357fe5b600091825260209091200154600160a060020a031691506116649050565b60008061261d83612633565b6000908152600e60205260409020549392505050565b6000816040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561267657818101518382015260200161265e565b50505050905090810190601f1680156126a35780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001209050919050565b815481835581811115611e5e57600083815260209020611e5e918101908301612830565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612722578054855561275e565b8280016001018555821561275e57600052602060002091601f016020900482015b8281111561275e578254825591600101919060010190612743565b5061276a929150612830565b5090565b815481835581811115611e5e57600083815260209020611e5e91810190830161284d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106127d357805160ff191683800117855561275e565b8280016001018555821561275e579182015b8281111561275e5782518255916020019190600101906127e5565b815481835581811115611e5e57601f016020900481601f01602090048360005260206000209182019101611e5e91905b61284a91905b8082111561276a5760008155600101612836565b90565b61284a91905b8082111561276a5760006128678282612870565b50600101612853565b50805460018160011615610100020316600290046000825580601f1061289657506128b4565b601f0160209004906000526020600020908101906128b49190612830565b5056fe4f6e6c7920746865206f776e65722063616e20706572666f726d207468697320a165627a7a723058205658995a0e2c4d843fb7a1764aa9caaf1b41ae1e622b2534778535c1233559150029",
  "sourceMap": "141:7750:17:-;;;692:136;8:9:-1;5:2;;;30:1;27;20:12;5:2;692:136:17;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;692:136:17;759:11;:24;;773:10;-1:-1:-1;;;;;;759:24:17;;;;;;;793:12;:28;;;;;-1:-1:-1;;;;;793:28:17;;;;;;;;;141:7750;;;-1:-1:-1;141:7750:17;;",
  "deployedSourceMap": "141:7750:17:-;;;;;;;;;-1:-1:-1;;;141:7750:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2387:350;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2387:350:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2387:350:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2387:350:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2387:350:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2387:350:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2387:350:17;;-1:-1:-1;;2387:350:17;;;-1:-1:-1;2387:350:17;;-1:-1:-1;;2387:350:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2387:350:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5342:486;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5342:486:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5342:486:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5342:486:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5342:486:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5342:486:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5342:486:17;;-1:-1:-1;;5342:486:17;;;-1:-1:-1;5342:486:17;;-1:-1:-1;;5342:486:17;;;1900:481;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1900:481:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1900:481:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1900:481:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1900:481:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1900:481:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1900:481:17;;-1:-1:-1;;1900:481:17;;;-1:-1:-1;1900:481:17;;-1:-1:-1;;1900:481:17;1430:221;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1430:221:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1430:221:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1430:221:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1430:221:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1430:221:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1430:221:17;;-1:-1:-1;1430:221:17;;-1:-1:-1;;;;;1430:221:17;6618:211;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6618:211:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6618:211:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6618:211:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6618:211:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6618:211:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6618:211:17;;-1:-1:-1;6618:211:17;;-1:-1:-1;;;;;6618:211:17;;;;;;;;;;;;;;;;;;;4443:220;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4443:220:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4443:220:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4443:220:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4443:220:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4443:220:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4443:220:17;;-1:-1:-1;;;4443:220:17;;-1:-1:-1;;;;;4443:220:17;;-1:-1:-1;4443:220:17;;-1:-1:-1;4443:220:17;477:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;477:47:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;477:47:17;;;;;;;-1:-1:-1;;;;;477:47:17;;;;;;;;;;;;;;6195:214;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6195:214:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6195:214:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6195:214:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6195:214:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6195:214:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6195:214:17;;-1:-1:-1;;;;6195:214:17;;;;-1:-1:-1;6195:214:17;;4098:339;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4098:339:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4098:339:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4098:339:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4098:339:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4098:339:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4098:339:17;;-1:-1:-1;;4098:339:17;;;-1:-1:-1;4098:339:17;;-1:-1:-1;;4098:339:17;;;;;;;;;;;;;;;;;1657:237;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1657:237:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1657:237:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1657:237:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1657:237:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1657:237:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1657:237:17;;;;;;;;-1:-1:-1;1657:237:17;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1657:237:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1657:237:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1657:237:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1657:237:17;;-1:-1:-1;1657:237:17;;-1:-1:-1;;;;;1657:237:17;374:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;374:42:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;374:42:17;;;7068:341;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7068:341:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7068:341:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7068:341:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7068:341:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7068:341:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7068:341:17;;-1:-1:-1;;7068:341:17;;;-1:-1:-1;7068:341:17;;-1:-1:-1;;7068:341:17;590:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;590:41:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;590:41:17;;;6835:227;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6835:227:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6835:227:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6835:227:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6835:227:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6835:227:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6835:227:17;;-1:-1:-1;;;;6835:227:17;;;;-1:-1:-1;6835:227:17;;6415:197;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6415:197:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6415:197:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6415:197:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6415:197:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6415:197:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6415:197:17;;-1:-1:-1;6415:197:17;;-1:-1:-1;;;;;6415:197:17;1229:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1229:195:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1229:195:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1229:195:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1229:195:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1229:195:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1229:195:17;;-1:-1:-1;1229:195:17;;-1:-1:-1;;;;;1229:195:17;7415:474;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7415:474:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7415:474:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7415:474:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7415:474:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7415:474:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7415:474:17;;-1:-1:-1;;7415:474:17;;;-1:-1:-1;7415:474:17;;-1:-1:-1;;7415:474:17;4880:217;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4880:217:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4880:217:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4880:217:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4880:217:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4880:217:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4880:217:17;;-1:-1:-1;4880:217:17;;-1:-1:-1;;;;;4880:217:17;999:224;;8:9:-1;5:2;;;30:1;27;20:12;5:2;999:224:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;999:224:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;999:224:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;999:224:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;999:224:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;999:224:17;;;;;;;;-1:-1:-1;999:224:17;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;999:224:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;999:224:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;999:224:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;999:224:17;;-1:-1:-1;999:224:17;;-1:-1:-1;;;;;999:224:17;230:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;230:27:17;;;;4669:205;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4669:205:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4669:205:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4669:205:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4669:205:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4669:205:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4669:205:17;;-1:-1:-1;4669:205:17;;-1:-1:-1;;;;;4669:205:17;422:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;422:49:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;422:49:17;;;;;;;;2743:213;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2743:213:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2743:213:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2743:213:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2743:213:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2743:213:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2743:213:17;;-1:-1:-1;;2743:213:17;;;-1:-1:-1;2743:213:17;;-1:-1:-1;;2743:213:17;3378:227;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3378:227:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3378:227:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3378:227:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3378:227:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3378:227:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3378:227:17;;-1:-1:-1;;3378:227:17;;;-1:-1:-1;3378:227:17;;-1:-1:-1;;3378:227:17;198:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;198:26:17;;;;637:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;637:48:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;637:48:17;;;;;;;;264:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;264:45:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;264:45:17;;;5103:233;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5103:233:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5103:233:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5103:233:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5103:233:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5103:233:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5103:233:17;;-1:-1:-1;;;5103:233:17;;-1:-1:-1;;;;;5103:233:17;;-1:-1:-1;5103:233:17;;-1:-1:-1;5103:233:17;2962:193;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2962:193:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2962:193:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2962:193:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2962:193:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2962:193:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2962:193:17;;-1:-1:-1;2962:193:17;;-1:-1:-1;;;;;2962:193:17;530:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;530:54:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;530:54:17;;;;;;;;3611:481;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3611:481:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3611:481:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3611:481:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3611:481:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3611:481:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3611:481:17;;-1:-1:-1;;3611:481:17;;;-1:-1:-1;3611:481:17;;-1:-1:-1;;3611:481:17;5834:355;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5834:355:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5834:355:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5834:355:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5834:355:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5834:355:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5834:355:17;;-1:-1:-1;;5834:355:17;;;-1:-1:-1;5834:355:17;;-1:-1:-1;;5834:355:17;3161:211;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3161:211:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3161:211:17;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3161:211:17;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3161:211:17;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3161:211:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3161:211:17;;-1:-1:-1;3161:211:17;;-1:-1:-1;;;;;3161:211:17;2387:350;2519:13;2548:18;2569:17;2582:3;2569:12;:17::i;:::-;2601:27;;;;:15;:27;;;;;:34;2548:38;;-1:-1:-1;2601:42:17;-1:-1:-1;2597:114:17;;;2666:27;;;;:15;:27;;;;;:34;;2694:5;;2666:34;;;;;;;;;;;;;;;;2659:41;;;;;;;-1:-1:-1;;2659:41:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2666:34;2659:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2597:114;-1:-1:-1;;2721:9:17;;;;;;;;;-1:-1:-1;2721:9:17;;2387:350;;;;;:::o;5342:486::-;899:11;;-1:-1:-1;;;;;899:11:17;886:9;:24;865:109;;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;865:109:17;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;;;;5480:18;5501:17;5514:3;5501:12;:17::i;:::-;5528:16;5547:28;;;:16;:28;;;;;:35;5480:38;;-1:-1:-1;5597:20:17;;;5593:33;;5619:7;;;;5593:33;5650:5;5636:138;5675:1;5661:11;:15;5657:1;:19;5636:138;;;5730:28;;;;:16;:28;;;;;:33;;5761:1;5759:3;;;5730:33;;;;;;;;;;;;;;;;;;5696:28;;;:16;:28;;;;;;;:31;;-1:-1:-1;;;;;5730:33:17;;;;5725:1;;5696:31;;;;;;;;;;;;;;;:67;;-1:-1:-1;;;;;;5696:67:17;-1:-1:-1;;;;;5696:67:17;;;;;;;;;;-1:-1:-1;5678:3:17;5636:138;;;-1:-1:-1;5784:28:17;;;;:16;:28;;;;;:37;;;;;-1:-1:-1;;5784:37:17;;;:::i;:::-;;985:1;;;5342:486;;:::o;1900:481::-;899:11;;-1:-1:-1;;;;;899:11:17;886:9;:24;865:109;;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;865:109:17;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;;;;2037:18;2058:17;2071:3;2058:12;:17::i;:::-;2085:16;2104:27;;;:15;:27;;;;;:34;2037:38;;-1:-1:-1;2153:20:17;;;2149:33;;2175:7;;;;2149:33;2206:5;2192:136;2231:1;2217:11;:15;2213:1;:19;2192:136;;;2285:27;;;;:15;:27;;;;;:32;;2315:1;2313:3;;;2285:32;;;;;;;;;;;;;2252:15;:27;2268:10;2252:27;;;;;;;;;;;2280:1;2252:30;;;;;;;;;;;;;;;;;:65;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2234:3:17;;2192:136;;;-1:-1:-1;2338:27:17;;;;:15;:27;;;;;:36;;;;;-1:-1:-1;;2338:36:17;;;:::i;1430:221::-;1537:13;1566:18;1587:17;1600:3;1587:12;:17::i;:::-;1622:22;;;;:10;:22;;;;;;;;;1615:29;;;;;;;;;;;-1:-1:-1;;1615:29:17;;;;;;;;;;;;;;;;;;;;;;;;;;1622:22;;-1:-1:-1;1622:22:17;1615:29;;;1622:22;1615:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1430:221;;;:::o;6618:211::-;6726:4;6746:18;6767:17;6780:3;6767:12;:17::i;:::-;6802:20;;;;:8;:20;;;;;;;;;6618:211;-1:-1:-1;;;6618:211:17:o;4443:220::-;899:11;;-1:-1:-1;;;;;899:11:17;886:9;:24;865:109;;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;865:109:17;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;;;;4576:18;4597:17;4610:3;4597:12;:17::i;:::-;4625:23;;;;:11;:23;;;;;:31;;-1:-1:-1;;;;;;4625:31:17;-1:-1:-1;;;;;4625:31:17;;;;;;;;;;;-1:-1:-1;;4443:220:17:o;477:47::-;;;;;;;;;;;;-1:-1:-1;;;;;477:47:17;;:::o;6195:214::-;899:11;;-1:-1:-1;;;;;899:11:17;886:9;:24;865:109;;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;865:109:17;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;;;;6325:18;6346:17;6359:3;6346:12;:17::i;:::-;6374:20;;;;:8;:20;;;;;:28;;-1:-1:-1;;6374:28:17;;;;;;;;;;;-1:-1:-1;;6195:214:17:o;4098:339::-;4230:3;4249:18;4270:17;4283:3;4270:12;:17::i;:::-;4302:27;;;;:15;:27;;;;;:34;4249:38;;-1:-1:-1;4302:42:17;-1:-1:-1;4298:114:17;;;4367:27;;;;:15;:27;;;;;:34;;4395:5;;4367:34;;;;;;;;;;;;;;4360:41;;;;;4298:114;-1:-1:-1;4429:1:17;;4098:339;-1:-1:-1;;;4098:339:17:o;1657:237::-;899:11;;-1:-1:-1;;;;;899:11:17;886:9;:24;865:109;;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;865:109:17;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;;;;1800:18;1821:17;1834:3;1821:12;:17::i;:::-;1848:27;;;;:15;:27;;;;;;;27:10:-1;;39:1;23:18;;45:23;;;1848:39:17;;;;;;;;;1800:38;;-1:-1:-1;23:18;;1848:39:17;;;;;;;;;;;:::i;374:42::-;;;;;;;;;;;;;:::o;7068:341::-;7201:4;7221:18;7242:17;7255:3;7242:12;:17::i;:::-;7274:25;;;;:13;:25;;;;;:32;7221:38;;-1:-1:-1;7274:40:17;-1:-1:-1;7270:110:17;;;7337:25;;;;:13;:25;;;;;:32;;7363:5;;7337:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7330:39;;;;;590:41;;;;;;;;;;;;;;;:::o;6835:227::-;899:11;;-1:-1:-1;;;;;899:11:17;886:9;:24;865:109;;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;865:109:17;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;;;;6970:18;6991:17;7004:3;6991:12;:17::i;:::-;7018:25;;;;:13;:25;;;;;;;27:10:-1;;39:1;23:18;;45:23;;7018:37:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6835:227:17:o;6415:197::-;899:11;;-1:-1:-1;;;;;899:11:17;886:9;:24;865:109;;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;865:109:17;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;;;;6528:18;6549:17;6562:3;6549:12;:17::i;:::-;6600:5;6577:20;;;:8;:20;;;;;:28;;-1:-1:-1;;6577:28:17;;;-1:-1:-1;;6415:197:17:o;1229:195::-;899:11;;-1:-1:-1;;;;;899:11:17;886:9;:24;865:109;;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;865:109:17;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;;;;1341:18;1362:17;1375:3;1362:12;:17::i;:::-;1390:27;;;;;;;;;;-1:-1:-1;1390:27:17;;;:22;;;:10;:22;;;;;;:27;;1341:38;;-1:-1:-1;1390:27:17;;:22;;:27;;:::i;:::-;;985:1;1229:195;:::o;7415:474::-;899:11;;-1:-1:-1;;;;;899:11:17;886:9;:24;865:109;;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;865:109:17;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;;;;7553:18;7574:17;7587:3;7574:12;:17::i;:::-;7601:16;7620:25;;;:13;:25;;;;;:32;7553:38;;-1:-1:-1;7667:20:17;;;7663:33;;7689:7;;;;7663:33;7720:5;7706:132;7745:1;7731:11;:15;7727:1;:19;7706:132;;;7797:25;;;;:13;:25;;;;;:30;;7825:1;7823:3;;;7797:30;;;;;;;;;;;;;;;;;;;7766:25;;;:13;:25;;;;;;;:28;;7797:30;;;;;;;;;;;;7766:25;7792:1;;7766:28;;;;;;;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;7748:3;;;;;;;7706:132;;;-1:-1:-1;7848:25:17;;;;:13;:25;;;;;:34;;;;;-1:-1:-1;;7848:34:17;;;:::i;4880:217::-;4988:7;5011:18;5032:17;5045:3;5032:12;:17::i;:::-;5067:23;;;;:11;:23;;;;;;-1:-1:-1;;;;;5067:23:17;;4880:217;-1:-1:-1;;;4880:217:17:o;999:224::-;899:11;;-1:-1:-1;;;;;899:11:17;886:9;:24;865:109;;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;865:109:17;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;;;;1137:18;1158:17;1171:3;1158:12;:17::i;:::-;1186:22;;;;:10;:22;;;;;;;;:30;;1137:38;;-1:-1:-1;1186:30:17;;:22;;:30;;;;:::i;:::-;;985:1;999:224;;:::o;230:27::-;;;-1:-1:-1;;;;;230:27:17;;:::o;4669:205::-;899:11;;-1:-1:-1;;;;;899:11:17;886:9;:24;865:109;;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;865:109:17;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;;;;4782:18;4803:17;4816:3;4803:12;:17::i;:::-;4865:1;4831:23;;;:11;:23;;;;;:36;;-1:-1:-1;;;;;;4831:36:17;;;-1:-1:-1;;4669:205:17:o;422:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2743:213::-;899:11;;-1:-1:-1;;;;;899:11:17;886:9;:24;865:109;;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;865:109:17;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;;;;2871:18;2892:17;2905:3;2892:12;:17::i;:::-;2919:22;;;;:10;:22;;;;;:30;;;;-1:-1:-1;;2743:213:17:o;3378:227::-;899:11;;-1:-1:-1;;;;;899:11:17;886:9;:24;865:109;;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;865:109:17;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;;;;3511:18;3532:17;3545:3;3532:12;:17::i;:::-;3559:27;;;;:15;:27;;;;;;;27:10:-1;;39:1;23:18;;45:23;;3559:39:17;;;;;;;;;;-1:-1:-1;;3378:227:17:o;198:26::-;;;-1:-1:-1;;;;;198:26:17;;:::o;637:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;264:45::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;264:45:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5103:233::-;899:11;;-1:-1:-1;;;;;899:11:17;886:9;:24;865:109;;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;865:109:17;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;;;;5241:18;5262:17;5275:3;5262:12;:17::i;:::-;5289:28;;;;:16;:28;;;;;;;27:10:-1;;39:1;23:18;;45:23;;5289:40:17;;;;;;;;-1:-1:-1;;;;;;5289:40:17;-1:-1:-1;;;;;5289:40:17;;;;;;;;;;;-1:-1:-1;;5103:233:17:o;2962:193::-;899:11;;-1:-1:-1;;;;;899:11:17;886:9;:24;865:109;;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;865:109:17;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;;;;3074:18;3095:17;3108:3;3095:12;:17::i;:::-;3147:1;3122:22;;;:10;:22;;;;;:26;-1:-1:-1;;2962:193:17:o;530:54::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;530:54:17;;-1:-1:-1;530:54:17;;-1:-1:-1;530:54:17:o;3611:481::-;899:11;;-1:-1:-1;;;;;899:11:17;886:9;:24;865:109;;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;865:109:17;;;;-1:-1:-1;;;;;865:109:17;;;;;;;;;;;;;;;3748:18;3769:17;3782:3;3769:12;:17::i;:::-;3796:16;3815:27;;;:15;:27;;;;;:34;3748:38;;-1:-1:-1;3864:20:17;;;3860:33;;3886:7;;;;3860:33;3917:5;3903:136;3942:1;3928:11;:15;3924:1;:19;3903:136;;;3996:27;;;;:15;:27;;;;;:32;;4026:1;4024:3;;;3996:32;;;;;;;;;;;;;;3963:15;:27;3979:10;3963:27;;;;;;;;;;;3991:1;3963:30;;;;;;;;;;;;;;;;;;;:65;3945:3;;3903:136;;;-1:-1:-1;4049:27:17;;;;:15;:27;;;;;:36;;;;;-1:-1:-1;;4049:36:17;;;:::i;5834:355::-;5967:7;5990:18;6011:17;6024:3;6011:12;:17::i;:::-;6043:28;;;;:16;:28;;;;;:35;5990:38;;-1:-1:-1;6043:43:17;-1:-1:-1;6039:116:17;;;6109:28;;;;:16;:28;;;;;:35;;6138:5;;6109:35;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6109:35:17;;-1:-1:-1;6102:42:17;;-1:-1:-1;6102:42:17;3161:211;3268:3;3287:18;3308:17;3321:3;3308:12;:17::i;:::-;3343:22;;;;:10;:22;;;;;;;3161:211;-1:-1:-1;;;3161:211:17:o;342:182:31:-;439:7;503:3;492:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;492:15:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;492:15:31;;;469:48;;;;;;462:55;;342:182;;;:::o;141:7750:17:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;141:7750:17;;;-1:-1:-1;141:7750:17;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o",
  "source": "pragma solidity <0.6.0;\n\nimport \"./interfaces/SignaturitUserInterface.sol\";\nimport \"./libraries/Utils.sol\";\n\n/*\nGas to deploy: 2.896.394\n*/\n\ncontract SignaturitUser is SignaturitUserInterface {\n    address public rootAddress;\n    address public ownerAddress;\n\n    mapping (bytes32 => string) public stringAttr;\n    mapping (bytes32 => string[]) private stringArrayAttr;\n    mapping (bytes32 => int) public numberAttr;\n    mapping (bytes32 => int[]) public numberArrayAttr;\n    mapping (bytes32 => address) public addressAttr;\n    mapping (bytes32 => address[]) public addressArrayAttr;\n    mapping (bytes32 => bool) public boolAttr;\n    mapping (bytes32 => bool[]) public boolArrayAttr;\n\n    constructor (\n        address _ownerAddress\n    ) public {\n        rootAddress = msg.sender;\n        ownerAddress = _ownerAddress;\n    }\n\n    modifier protected() {\n        require(\n            tx.origin == rootAddress,\n            \"Only the owner can perform this action\"\n        );\n\n        _;\n    }\n\n    function setStringAttribute (\n        string memory key,\n        string memory value\n    )\n        public\n        protected\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n\n        stringAttr[bytes32key] = value;\n    }\n\n    function deleteStringAttribute (\n        string memory key\n    )\n        public\n        protected\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n\n        stringAttr[bytes32key] = \"\";\n    }\n\n    function getStringAttribute (\n        string memory key\n    )\n        public\n        view\n        returns (string memory)\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n\n        return stringAttr[bytes32key];\n    }\n\n    function setStringArrayAttribute (\n        string memory key,\n        string memory value\n    )\n        public\n        protected\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n        stringArrayAttr[bytes32key].push(value);\n    }\n\n    function deleteStringArrayAttribute (\n        string memory key,\n        uint index\n    )\n        public\n        protected\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n        uint arrayLength = stringArrayAttr[bytes32key].length;\n\n        if (index >= arrayLength) return;\n\n        for (uint i = index; i < arrayLength - 1; i++){\n            stringArrayAttr[bytes32key][i] = stringArrayAttr[bytes32key][i+1];\n        }\n\n        stringArrayAttr[bytes32key].length--;\n    }\n\n    function getStringArrayAttribute (\n        string memory key,\n        uint index\n    )\n        public\n        view\n        returns (string memory)\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n\n        if (stringArrayAttr[bytes32key].length > index) {\n            return stringArrayAttr[bytes32key][index];\n        }\n\n        return \"\";\n    }\n\n    function setNumberAttribute (\n        string memory key,\n        int value\n    )\n        public\n        protected\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n        numberAttr[bytes32key] = value;\n    }\n\n    function deleteNumberAttribute (\n        string memory key\n    )\n        public\n        protected\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n        numberAttr[bytes32key] = 0;\n    }\n\n    function getNumberAttribute (\n        string memory key\n    )\n        public\n        view\n        returns (int)\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n\n        return numberAttr[bytes32key];\n    }\n\n    function setNumberArrayAttribute (\n        string memory key,\n        int value\n    )\n        public\n        protected\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n        numberArrayAttr[bytes32key].push(value);\n    }\n\n    function deleteNumberArrayAttribute (\n        string memory key,\n        uint index\n    )\n        public\n        protected\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n        uint arrayLength = numberArrayAttr[bytes32key].length;\n\n        if (index >= arrayLength) return;\n\n        for (uint i = index; i < arrayLength - 1; i++){\n            numberArrayAttr[bytes32key][i] = numberArrayAttr[bytes32key][i+1];\n        }\n\n        numberArrayAttr[bytes32key].length--;\n    }\n\n    function getNumberArrayAttribute (\n        string memory key,\n        uint index\n    )\n        public\n        view\n        returns (int)\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n\n        if (numberArrayAttr[bytes32key].length > index) {\n            return numberArrayAttr[bytes32key][index];\n        }\n\n        return 0;\n    }\n\n    function setAddressAttribute (\n        string memory key,\n        address value\n    )\n        public\n        protected\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n\n        addressAttr[bytes32key] = value;\n    }\n\n    function deleteAddressAttribute (\n        string memory key\n    )\n        public\n        protected\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n\n        addressAttr[bytes32key] = address(0);\n    }\n\n    function getAddressAttribute (\n        string memory key\n    )\n        public\n        view\n        returns (address)\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n\n        return addressAttr[bytes32key];\n    }\n\n    function setAddressArrayAttribute (\n        string memory key,\n        address value\n    )\n        public\n        protected\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n        addressArrayAttr[bytes32key].push(value);\n    }\n\n    function deleteAddressArrayAttribute (\n        string memory key,\n        uint index\n    )\n        public\n        protected\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n        uint arrayLength = addressArrayAttr[bytes32key].length;\n\n        if (index >= arrayLength) return;\n\n        for (uint i = index; i < arrayLength - 1; i++){\n            addressArrayAttr[bytes32key][i] = addressArrayAttr[bytes32key][i+1];\n        }\n\n        addressArrayAttr[bytes32key].length--;\n    }\n\n    function getAddressArrayAttribute (\n        string memory key,\n        uint index\n    )\n        public\n        view\n        returns (address)\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n\n        if (addressArrayAttr[bytes32key].length > index) {\n            return addressArrayAttr[bytes32key][index];\n        }\n\n        return address(0);\n    }\n\n    function setBooleanAttribute (\n        string memory key,\n        bool value\n    )\n        public\n        protected\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n\n        boolAttr[bytes32key] = value;\n    }\n\n    function deleteBooleanAttribute (\n        string memory key\n    )\n        public\n        protected\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n\n        boolAttr[bytes32key] = false;\n    }\n\n    function getBooleanAttribute (\n        string memory key\n    )\n        public\n        view\n        returns (bool)\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n\n        return boolAttr[bytes32key];\n    }\n\n    function setBooleanArrayAttribute (\n        string memory key,\n        bool value\n    )\n        public\n        protected\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n        boolArrayAttr[bytes32key].push(value);\n    }\n\n    function getBooleanArrayAttribute (\n        string memory key,\n        uint index\n    )\n        public\n        view\n        returns (bool)\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n\n        if (boolArrayAttr[bytes32key].length > index) {\n            return boolArrayAttr[bytes32key][index];\n        }\n\n        return false;\n    }\n\n    function deleteBooleanArrayAttribute (\n        string memory key,\n        uint index\n    )\n        public\n        protected\n    {\n        bytes32 bytes32key = Utils.keccak(key);\n        uint arrayLength = boolArrayAttr[bytes32key].length;\n\n        if (index >= arrayLength) return;\n\n        for (uint i = index; i < arrayLength - 1; i++){\n            boolArrayAttr[bytes32key][i] = boolArrayAttr[bytes32key][i+1];\n        }\n\n        boolArrayAttr[bytes32key].length--;\n    }\n}\n",
  "sourcePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/SignaturitUser.sol",
  "ast": {
    "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/SignaturitUser.sol",
    "exportedSymbols": {
      "SignaturitUser": [
        4847
      ]
    },
    "id": 4848,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4039,
        "literals": [
          "solidity",
          "<",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:17"
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/SignaturitUserInterface.sol",
        "file": "./interfaces/SignaturitUserInterface.sol",
        "id": 4040,
        "nodeType": "ImportDirective",
        "scope": 4848,
        "sourceUnit": 7252,
        "src": "25:50:17",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/libraries/Utils.sol",
        "file": "./libraries/Utils.sol",
        "id": 4041,
        "nodeType": "ImportDirective",
        "scope": 4848,
        "sourceUnit": 7290,
        "src": "76:31:17",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4042,
              "name": "SignaturitUserInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7251,
              "src": "168:23:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                "typeString": "contract SignaturitUserInterface"
              }
            },
            "id": 4043,
            "nodeType": "InheritanceSpecifier",
            "src": "168:23:17"
          }
        ],
        "contractDependencies": [
          7251
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 4847,
        "linearizedBaseContracts": [
          4847,
          7251
        ],
        "name": "SignaturitUser",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 4045,
            "name": "rootAddress",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "198:26:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 4044,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "198:7:17",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4047,
            "name": "ownerAddress",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "230:27:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 4046,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "230:7:17",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4051,
            "name": "stringAttr",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "264:45:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
              "typeString": "mapping(bytes32 => string)"
            },
            "typeName": {
              "id": 4050,
              "keyType": {
                "id": 4048,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "273:7:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "264:27:17",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
                "typeString": "mapping(bytes32 => string)"
              },
              "valueType": {
                "id": 4049,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "284:6:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4056,
            "name": "stringArrayAttr",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "315:53:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_string_storage_$dyn_storage_$",
              "typeString": "mapping(bytes32 => string[])"
            },
            "typeName": {
              "id": 4055,
              "keyType": {
                "id": 4052,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "324:7:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "315:29:17",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_string_storage_$dyn_storage_$",
                "typeString": "mapping(bytes32 => string[])"
              },
              "valueType": {
                "baseType": {
                  "id": 4053,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "335:6:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "id": 4054,
                "length": null,
                "nodeType": "ArrayTypeName",
                "src": "335:8:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                  "typeString": "string[]"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 4060,
            "name": "numberAttr",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "374:42:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_int256_$",
              "typeString": "mapping(bytes32 => int256)"
            },
            "typeName": {
              "id": 4059,
              "keyType": {
                "id": 4057,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "383:7:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "374:24:17",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_int256_$",
                "typeString": "mapping(bytes32 => int256)"
              },
              "valueType": {
                "id": 4058,
                "name": "int",
                "nodeType": "ElementaryTypeName",
                "src": "394:3:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_int256",
                  "typeString": "int256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4065,
            "name": "numberArrayAttr",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "422:49:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_int256_$dyn_storage_$",
              "typeString": "mapping(bytes32 => int256[])"
            },
            "typeName": {
              "id": 4064,
              "keyType": {
                "id": 4061,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "431:7:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "422:26:17",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_int256_$dyn_storage_$",
                "typeString": "mapping(bytes32 => int256[])"
              },
              "valueType": {
                "baseType": {
                  "id": 4062,
                  "name": "int",
                  "nodeType": "ElementaryTypeName",
                  "src": "442:3:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  }
                },
                "id": 4063,
                "length": null,
                "nodeType": "ArrayTypeName",
                "src": "442:5:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_int256_$dyn_storage_ptr",
                  "typeString": "int256[]"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4069,
            "name": "addressAttr",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "477:47:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 4068,
              "keyType": {
                "id": 4066,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "486:7:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "477:28:17",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 4067,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "497:7:17",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4074,
            "name": "addressArrayAttr",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "530:54:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
              "typeString": "mapping(bytes32 => address[])"
            },
            "typeName": {
              "id": 4073,
              "keyType": {
                "id": 4070,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "539:7:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "530:30:17",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
                "typeString": "mapping(bytes32 => address[])"
              },
              "valueType": {
                "baseType": {
                  "id": 4071,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "550:7:17",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "id": 4072,
                "length": null,
                "nodeType": "ArrayTypeName",
                "src": "550:9:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                  "typeString": "address[]"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4078,
            "name": "boolAttr",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "590:41:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
              "typeString": "mapping(bytes32 => bool)"
            },
            "typeName": {
              "id": 4077,
              "keyType": {
                "id": 4075,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "599:7:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "590:25:17",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                "typeString": "mapping(bytes32 => bool)"
              },
              "valueType": {
                "id": 4076,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "610:4:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4083,
            "name": "boolArrayAttr",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "637:48:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$dyn_storage_$",
              "typeString": "mapping(bytes32 => bool[])"
            },
            "typeName": {
              "id": 4082,
              "keyType": {
                "id": 4079,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "646:7:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "637:27:17",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$dyn_storage_$",
                "typeString": "mapping(bytes32 => bool[])"
              },
              "valueType": {
                "baseType": {
                  "id": 4080,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "657:4:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "id": 4081,
                "length": null,
                "nodeType": "ArrayTypeName",
                "src": "657:6:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                  "typeString": "bool[]"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4097,
              "nodeType": "Block",
              "src": "749:79:17",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4091,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4088,
                      "name": "rootAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4045,
                      "src": "759:11:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4089,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7304,
                        "src": "773:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4090,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "773:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "759:24:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4092,
                  "nodeType": "ExpressionStatement",
                  "src": "759:24:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4093,
                      "name": "ownerAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4047,
                      "src": "793:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4094,
                      "name": "_ownerAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4085,
                      "src": "808:13:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "793:28:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4096,
                  "nodeType": "ExpressionStatement",
                  "src": "793:28:17"
                }
              ]
            },
            "documentation": null,
            "id": 4098,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4086,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4085,
                  "name": "_ownerAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 4098,
                  "src": "714:21:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4084,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "714:7:17",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "704:37:17"
            },
            "returnParameters": {
              "id": 4087,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "749:0:17"
            },
            "scope": 4847,
            "src": "692:136:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4109,
              "nodeType": "Block",
              "src": "855:138:17",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4104,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4101,
                            "name": "tx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7316,
                            "src": "886:2:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_transaction",
                              "typeString": "tx"
                            }
                          },
                          "id": 4102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "origin",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "886:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 4103,
                          "name": "rootAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4045,
                          "src": "899:11:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "886:24:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c7920746865206f776e65722063616e20706572666f726d207468697320616374696f6e",
                        "id": 4105,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "924:40:17",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2a1cb988fffa75dab1f18f6e33d352b421b15b8203fb8b7f8559967fd8de80e5",
                          "typeString": "literal_string \"Only the owner can perform this action\""
                        },
                        "value": "Only the owner can perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2a1cb988fffa75dab1f18f6e33d352b421b15b8203fb8b7f8559967fd8de80e5",
                          "typeString": "literal_string \"Only the owner can perform this action\""
                        }
                      ],
                      "id": 4100,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "865:7:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4106,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "865:109:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4107,
                  "nodeType": "ExpressionStatement",
                  "src": "865:109:17"
                },
                {
                  "id": 4108,
                  "nodeType": "PlaceholderStatement",
                  "src": "985:1:17"
                }
              ]
            },
            "documentation": null,
            "id": 4110,
            "name": "protected",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 4099,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "852:2:17"
            },
            "src": "834:159:17",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4132,
              "nodeType": "Block",
              "src": "1127:96:17",
              "statements": [
                {
                  "assignments": [
                    4120
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4120,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4132,
                      "src": "1137:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4119,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1137:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4125,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4123,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4112,
                        "src": "1171:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4121,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "1158:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4122,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "1158:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1158:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1137:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4130,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4126,
                        "name": "stringAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4051,
                        "src": "1186:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
                          "typeString": "mapping(bytes32 => string storage ref)"
                        }
                      },
                      "id": 4128,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4127,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4120,
                        "src": "1197:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1186:22:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4129,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4114,
                      "src": "1211:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1186:30:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 4131,
                  "nodeType": "ExpressionStatement",
                  "src": "1186:30:17"
                }
              ]
            },
            "documentation": null,
            "id": 4133,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4117,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4116,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "1113:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1113:9:17"
              }
            ],
            "name": "setStringAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4115,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4112,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4133,
                  "src": "1037:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4111,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1037:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4114,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 4133,
                  "src": "1064:19:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4113,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1064:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1027:62:17"
            },
            "returnParameters": {
              "id": 4118,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1127:0:17"
            },
            "scope": 4847,
            "src": "999:224:17",
            "stateMutability": "nonpayable",
            "superFunction": 7137,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4153,
              "nodeType": "Block",
              "src": "1331:93:17",
              "statements": [
                {
                  "assignments": [
                    4141
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4141,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4153,
                      "src": "1341:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4140,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1341:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4146,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4144,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4135,
                        "src": "1375:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4142,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "1362:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4143,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "1362:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4145,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1362:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1341:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4151,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4147,
                        "name": "stringAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4051,
                        "src": "1390:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
                          "typeString": "mapping(bytes32 => string storage ref)"
                        }
                      },
                      "id": 4149,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4148,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4141,
                        "src": "1401:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1390:22:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "",
                      "id": 4150,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1415:2:17",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                        "typeString": "literal_string \"\""
                      },
                      "value": ""
                    },
                    "src": "1390:27:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 4152,
                  "nodeType": "ExpressionStatement",
                  "src": "1390:27:17"
                }
              ]
            },
            "documentation": null,
            "id": 4154,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4138,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4137,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "1317:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1317:9:17"
              }
            ],
            "name": "deleteStringAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4136,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4135,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4154,
                  "src": "1270:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4134,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1270:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1260:33:17"
            },
            "returnParameters": {
              "id": 4139,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1331:0:17"
            },
            "scope": 4847,
            "src": "1229:195:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4172,
              "nodeType": "Block",
              "src": "1556:95:17",
              "statements": [
                {
                  "assignments": [
                    4162
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4162,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4172,
                      "src": "1566:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4161,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1566:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4167,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4165,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4156,
                        "src": "1600:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4163,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "1587:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4164,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "1587:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1587:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1566:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4168,
                      "name": "stringAttr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4051,
                      "src": "1622:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
                        "typeString": "mapping(bytes32 => string storage ref)"
                      }
                    },
                    "id": 4170,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4169,
                      "name": "bytes32key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4162,
                      "src": "1633:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1622:22:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 4160,
                  "id": 4171,
                  "nodeType": "Return",
                  "src": "1615:29:17"
                }
              ]
            },
            "documentation": null,
            "id": 4173,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getStringAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4157,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4156,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4173,
                  "src": "1468:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4155,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1468:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1458:33:17"
            },
            "returnParameters": {
              "id": 4160,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4159,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4173,
                  "src": "1537:13:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4158,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1537:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1536:15:17"
            },
            "scope": 4847,
            "src": "1430:221:17",
            "stateMutability": "view",
            "superFunction": 7144,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4196,
              "nodeType": "Block",
              "src": "1790:104:17",
              "statements": [
                {
                  "assignments": [
                    4183
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4183,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4196,
                      "src": "1800:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4182,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1800:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4188,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4186,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4175,
                        "src": "1834:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4184,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "1821:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4185,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "1821:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4187,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1821:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1800:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4193,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4177,
                        "src": "1881:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4189,
                          "name": "stringArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4056,
                          "src": "1848:15:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_string_storage_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => string storage ref[] storage ref)"
                          }
                        },
                        "id": 4191,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4190,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4183,
                          "src": "1864:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1848:27:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 4192,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1848:32:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$_t_uint256_$",
                        "typeString": "function (string storage ref) returns (uint256)"
                      }
                    },
                    "id": 4194,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1848:39:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4195,
                  "nodeType": "ExpressionStatement",
                  "src": "1848:39:17"
                }
              ]
            },
            "documentation": null,
            "id": 4197,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4180,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4179,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "1776:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1776:9:17"
              }
            ],
            "name": "setStringArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4178,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4175,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4197,
                  "src": "1700:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4174,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1700:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4177,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 4197,
                  "src": "1727:19:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4176,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1727:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1690:62:17"
            },
            "returnParameters": {
              "id": 4181,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1790:0:17"
            },
            "scope": 4847,
            "src": "1657:237:17",
            "stateMutability": "nonpayable",
            "superFunction": 7151,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4259,
              "nodeType": "Block",
              "src": "2027:354:17",
              "statements": [
                {
                  "assignments": [
                    4207
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4207,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4259,
                      "src": "2037:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4206,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2037:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4212,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4210,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4199,
                        "src": "2071:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4208,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "2058:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4209,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "2058:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2058:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2037:38:17"
                },
                {
                  "assignments": [
                    4214
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4214,
                      "name": "arrayLength",
                      "nodeType": "VariableDeclaration",
                      "scope": 4259,
                      "src": "2085:16:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4213,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2085:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4219,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4215,
                        "name": "stringArrayAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4056,
                        "src": "2104:15:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_string_storage_$dyn_storage_$",
                          "typeString": "mapping(bytes32 => string storage ref[] storage ref)"
                        }
                      },
                      "id": 4217,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4216,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4207,
                        "src": "2120:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2104:27:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                        "typeString": "string storage ref[] storage ref"
                      }
                    },
                    "id": 4218,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "2104:34:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2085:53:17"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4222,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4220,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4201,
                      "src": "2153:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4221,
                      "name": "arrayLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4214,
                      "src": "2162:11:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2153:20:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4224,
                  "nodeType": "IfStatement",
                  "src": "2149:33:17",
                  "trueBody": {
                    "expression": null,
                    "functionReturnParameters": 4205,
                    "id": 4223,
                    "nodeType": "Return",
                    "src": "2175:7:17"
                  }
                },
                {
                  "body": {
                    "id": 4251,
                    "nodeType": "Block",
                    "src": "2238:90:17",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4249,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4237,
                                "name": "stringArrayAttr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4056,
                                "src": "2252:15:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_string_storage_$dyn_storage_$",
                                  "typeString": "mapping(bytes32 => string storage ref[] storage ref)"
                                }
                              },
                              "id": 4240,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4238,
                                "name": "bytes32key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4207,
                                "src": "2268:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2252:27:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                "typeString": "string storage ref[] storage ref"
                              }
                            },
                            "id": 4241,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4239,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4226,
                              "src": "2280:1:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2252:30:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4242,
                                "name": "stringArrayAttr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4056,
                                "src": "2285:15:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_string_storage_$dyn_storage_$",
                                  "typeString": "mapping(bytes32 => string storage ref[] storage ref)"
                                }
                              },
                              "id": 4244,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4243,
                                "name": "bytes32key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4207,
                                "src": "2301:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2285:27:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                "typeString": "string storage ref[] storage ref"
                              }
                            },
                            "id": 4248,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4247,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4245,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4226,
                                "src": "2313:1:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 4246,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2315:1:17",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "2313:3:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2285:32:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "src": "2252:65:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 4250,
                        "nodeType": "ExpressionStatement",
                        "src": "2252:65:17"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4229,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4226,
                      "src": "2213:1:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4232,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4230,
                        "name": "arrayLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4214,
                        "src": "2217:11:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 4231,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2231:1:17",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "2217:15:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2213:19:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4252,
                  "initializationExpression": {
                    "assignments": [
                      4226
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4226,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4252,
                        "src": "2197:6:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4225,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2197:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4228,
                    "initialValue": {
                      "argumentTypes": null,
                      "id": 4227,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4201,
                      "src": "2206:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2197:14:17"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4235,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2234:3:17",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4234,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4226,
                        "src": "2234:1:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4236,
                    "nodeType": "ExpressionStatement",
                    "src": "2234:3:17"
                  },
                  "nodeType": "ForStatement",
                  "src": "2192:136:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "--",
                    "prefix": false,
                    "src": "2338:36:17",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4253,
                          "name": "stringArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4056,
                          "src": "2338:15:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_string_storage_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => string storage ref[] storage ref)"
                          }
                        },
                        "id": 4255,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4254,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4207,
                          "src": "2354:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2338:27:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 4256,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2338:34:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4258,
                  "nodeType": "ExpressionStatement",
                  "src": "2338:36:17"
                }
              ]
            },
            "documentation": null,
            "id": 4260,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4204,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4203,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "2013:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2013:9:17"
              }
            ],
            "name": "deleteStringArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4202,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4199,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4260,
                  "src": "1946:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4198,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1946:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4201,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 4260,
                  "src": "1973:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4200,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1973:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1936:53:17"
            },
            "returnParameters": {
              "id": 4205,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2027:0:17"
            },
            "scope": 4847,
            "src": "1900:481:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4292,
              "nodeType": "Block",
              "src": "2538:199:17",
              "statements": [
                {
                  "assignments": [
                    4270
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4270,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4292,
                      "src": "2548:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4269,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2548:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4275,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4273,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4262,
                        "src": "2582:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4271,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "2569:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4272,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "2569:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4274,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2569:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2548:38:17"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4281,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4276,
                          "name": "stringArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4056,
                          "src": "2601:15:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_string_storage_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => string storage ref[] storage ref)"
                          }
                        },
                        "id": 4278,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4277,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4270,
                          "src": "2617:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2601:27:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 4279,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2601:34:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4280,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4264,
                      "src": "2638:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2601:42:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4289,
                  "nodeType": "IfStatement",
                  "src": "2597:114:17",
                  "trueBody": {
                    "id": 4288,
                    "nodeType": "Block",
                    "src": "2645:66:17",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4282,
                              "name": "stringArrayAttr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4056,
                              "src": "2666:15:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_string_storage_$dyn_storage_$",
                                "typeString": "mapping(bytes32 => string storage ref[] storage ref)"
                              }
                            },
                            "id": 4284,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4283,
                              "name": "bytes32key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4270,
                              "src": "2682:10:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2666:27:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                              "typeString": "string storage ref[] storage ref"
                            }
                          },
                          "id": 4286,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4285,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4264,
                            "src": "2694:5:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2666:34:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 4268,
                        "id": 4287,
                        "nodeType": "Return",
                        "src": "2659:41:17"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "",
                    "id": 4290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2728:2:17",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                      "typeString": "literal_string \"\""
                    },
                    "value": ""
                  },
                  "functionReturnParameters": 4268,
                  "id": 4291,
                  "nodeType": "Return",
                  "src": "2721:9:17"
                }
              ]
            },
            "documentation": null,
            "id": 4293,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getStringArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4265,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4262,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4293,
                  "src": "2430:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4261,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2430:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4264,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 4293,
                  "src": "2457:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4263,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2457:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2420:53:17"
            },
            "returnParameters": {
              "id": 4268,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4267,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4293,
                  "src": "2519:13:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4266,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2519:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2518:15:17"
            },
            "scope": 4847,
            "src": "2387:350:17",
            "stateMutability": "view",
            "superFunction": 7160,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4315,
              "nodeType": "Block",
              "src": "2861:95:17",
              "statements": [
                {
                  "assignments": [
                    4303
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4303,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4315,
                      "src": "2871:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4302,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2871:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4308,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4306,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4295,
                        "src": "2905:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4304,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "2892:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4305,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "2892:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4307,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2892:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2871:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4313,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4309,
                        "name": "numberAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4060,
                        "src": "2919:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_int256_$",
                          "typeString": "mapping(bytes32 => int256)"
                        }
                      },
                      "id": 4311,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4310,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4303,
                        "src": "2930:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2919:22:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4312,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4297,
                      "src": "2944:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "2919:30:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 4314,
                  "nodeType": "ExpressionStatement",
                  "src": "2919:30:17"
                }
              ]
            },
            "documentation": null,
            "id": 4316,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4300,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4299,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "2847:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2847:9:17"
              }
            ],
            "name": "setNumberAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4298,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4295,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4316,
                  "src": "2781:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4294,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2781:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4297,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 4316,
                  "src": "2808:9:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4296,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "2808:3:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2771:52:17"
            },
            "returnParameters": {
              "id": 4301,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2861:0:17"
            },
            "scope": 4847,
            "src": "2743:213:17",
            "stateMutability": "nonpayable",
            "superFunction": 7167,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4336,
              "nodeType": "Block",
              "src": "3064:91:17",
              "statements": [
                {
                  "assignments": [
                    4324
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4324,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4336,
                      "src": "3074:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4323,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3074:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4329,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4327,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4318,
                        "src": "3108:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4325,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "3095:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4326,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "3095:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4328,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3095:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3074:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4334,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4330,
                        "name": "numberAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4060,
                        "src": "3122:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_int256_$",
                          "typeString": "mapping(bytes32 => int256)"
                        }
                      },
                      "id": 4332,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4331,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4324,
                        "src": "3133:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3122:22:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4333,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3147:1:17",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3122:26:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 4335,
                  "nodeType": "ExpressionStatement",
                  "src": "3122:26:17"
                }
              ]
            },
            "documentation": null,
            "id": 4337,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4321,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4320,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "3050:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3050:9:17"
              }
            ],
            "name": "deleteNumberAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4319,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4318,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4337,
                  "src": "3003:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4317,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3003:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2993:33:17"
            },
            "returnParameters": {
              "id": 4322,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3064:0:17"
            },
            "scope": 4847,
            "src": "2962:193:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4355,
              "nodeType": "Block",
              "src": "3277:95:17",
              "statements": [
                {
                  "assignments": [
                    4345
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4345,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4355,
                      "src": "3287:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4344,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3287:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4350,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4348,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4339,
                        "src": "3321:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4346,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "3308:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4347,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "3308:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4349,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3308:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3287:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4351,
                      "name": "numberAttr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4060,
                      "src": "3343:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_int256_$",
                        "typeString": "mapping(bytes32 => int256)"
                      }
                    },
                    "id": 4353,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4352,
                      "name": "bytes32key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4345,
                      "src": "3354:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3343:22:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 4343,
                  "id": 4354,
                  "nodeType": "Return",
                  "src": "3336:29:17"
                }
              ]
            },
            "documentation": null,
            "id": 4356,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNumberAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4340,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4339,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4356,
                  "src": "3199:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4338,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3199:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3189:33:17"
            },
            "returnParameters": {
              "id": 4343,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4342,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4356,
                  "src": "3268:3:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4341,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "3268:3:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3267:5:17"
            },
            "scope": 4847,
            "src": "3161:211:17",
            "stateMutability": "view",
            "superFunction": 7174,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4379,
              "nodeType": "Block",
              "src": "3501:104:17",
              "statements": [
                {
                  "assignments": [
                    4366
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4366,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4379,
                      "src": "3511:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4365,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3511:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4371,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4369,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4358,
                        "src": "3545:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4367,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "3532:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4368,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "3532:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3532:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3511:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4376,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4360,
                        "src": "3592:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4372,
                          "name": "numberArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4065,
                          "src": "3559:15:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_int256_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => int256[] storage ref)"
                          }
                        },
                        "id": 4374,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4373,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4366,
                          "src": "3575:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3559:27:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_int256_$dyn_storage",
                          "typeString": "int256[] storage ref"
                        }
                      },
                      "id": 4375,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3559:32:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_int256_$returns$_t_uint256_$",
                        "typeString": "function (int256) returns (uint256)"
                      }
                    },
                    "id": 4377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3559:39:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4378,
                  "nodeType": "ExpressionStatement",
                  "src": "3559:39:17"
                }
              ]
            },
            "documentation": null,
            "id": 4380,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4363,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4362,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "3487:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3487:9:17"
              }
            ],
            "name": "setNumberArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4361,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4358,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4380,
                  "src": "3421:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4357,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3421:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4360,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 4380,
                  "src": "3448:9:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4359,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "3448:3:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3411:52:17"
            },
            "returnParameters": {
              "id": 4364,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3501:0:17"
            },
            "scope": 4847,
            "src": "3378:227:17",
            "stateMutability": "nonpayable",
            "superFunction": 7181,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4442,
              "nodeType": "Block",
              "src": "3738:354:17",
              "statements": [
                {
                  "assignments": [
                    4390
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4390,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4442,
                      "src": "3748:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4389,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3748:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4395,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4393,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4382,
                        "src": "3782:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4391,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "3769:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4392,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "3769:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3769:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3748:38:17"
                },
                {
                  "assignments": [
                    4397
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4397,
                      "name": "arrayLength",
                      "nodeType": "VariableDeclaration",
                      "scope": 4442,
                      "src": "3796:16:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4396,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3796:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4402,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4398,
                        "name": "numberArrayAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4065,
                        "src": "3815:15:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_int256_$dyn_storage_$",
                          "typeString": "mapping(bytes32 => int256[] storage ref)"
                        }
                      },
                      "id": 4400,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4399,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4390,
                        "src": "3831:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3815:27:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_int256_$dyn_storage",
                        "typeString": "int256[] storage ref"
                      }
                    },
                    "id": 4401,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "3815:34:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3796:53:17"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4403,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4384,
                      "src": "3864:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4404,
                      "name": "arrayLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4397,
                      "src": "3873:11:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3864:20:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4407,
                  "nodeType": "IfStatement",
                  "src": "3860:33:17",
                  "trueBody": {
                    "expression": null,
                    "functionReturnParameters": 4388,
                    "id": 4406,
                    "nodeType": "Return",
                    "src": "3886:7:17"
                  }
                },
                {
                  "body": {
                    "id": 4434,
                    "nodeType": "Block",
                    "src": "3949:90:17",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4420,
                                "name": "numberArrayAttr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4065,
                                "src": "3963:15:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_int256_$dyn_storage_$",
                                  "typeString": "mapping(bytes32 => int256[] storage ref)"
                                }
                              },
                              "id": 4423,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4421,
                                "name": "bytes32key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4390,
                                "src": "3979:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3963:27:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_int256_$dyn_storage",
                                "typeString": "int256[] storage ref"
                              }
                            },
                            "id": 4424,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4422,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4409,
                              "src": "3991:1:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3963:30:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4425,
                                "name": "numberArrayAttr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4065,
                                "src": "3996:15:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_int256_$dyn_storage_$",
                                  "typeString": "mapping(bytes32 => int256[] storage ref)"
                                }
                              },
                              "id": 4427,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4426,
                                "name": "bytes32key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4390,
                                "src": "4012:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3996:27:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_int256_$dyn_storage",
                                "typeString": "int256[] storage ref"
                              }
                            },
                            "id": 4431,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4430,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4428,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4409,
                                "src": "4024:1:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 4429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4026:1:17",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "4024:3:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3996:32:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "3963:65:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 4433,
                        "nodeType": "ExpressionStatement",
                        "src": "3963:65:17"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4412,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4409,
                      "src": "3924:1:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4415,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4413,
                        "name": "arrayLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4397,
                        "src": "3928:11:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 4414,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3942:1:17",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "3928:15:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3924:19:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4435,
                  "initializationExpression": {
                    "assignments": [
                      4409
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4409,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4435,
                        "src": "3908:6:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4408,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3908:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4411,
                    "initialValue": {
                      "argumentTypes": null,
                      "id": 4410,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4384,
                      "src": "3917:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3908:14:17"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4418,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "3945:3:17",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4417,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4409,
                        "src": "3945:1:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4419,
                    "nodeType": "ExpressionStatement",
                    "src": "3945:3:17"
                  },
                  "nodeType": "ForStatement",
                  "src": "3903:136:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4440,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "--",
                    "prefix": false,
                    "src": "4049:36:17",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4436,
                          "name": "numberArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4065,
                          "src": "4049:15:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_int256_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => int256[] storage ref)"
                          }
                        },
                        "id": 4438,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4437,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4390,
                          "src": "4065:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4049:27:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_int256_$dyn_storage",
                          "typeString": "int256[] storage ref"
                        }
                      },
                      "id": 4439,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4049:34:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4441,
                  "nodeType": "ExpressionStatement",
                  "src": "4049:36:17"
                }
              ]
            },
            "documentation": null,
            "id": 4443,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4387,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4386,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "3724:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3724:9:17"
              }
            ],
            "name": "deleteNumberArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4385,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4382,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4443,
                  "src": "3657:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4381,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3657:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4384,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 4443,
                  "src": "3684:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4383,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3684:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3647:53:17"
            },
            "returnParameters": {
              "id": 4388,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3738:0:17"
            },
            "scope": 4847,
            "src": "3611:481:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4475,
              "nodeType": "Block",
              "src": "4239:198:17",
              "statements": [
                {
                  "assignments": [
                    4453
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4453,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4475,
                      "src": "4249:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4452,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4249:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4458,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4456,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4445,
                        "src": "4283:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4454,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "4270:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4455,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "4270:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4457,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4270:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4249:38:17"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4459,
                          "name": "numberArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4065,
                          "src": "4302:15:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_int256_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => int256[] storage ref)"
                          }
                        },
                        "id": 4461,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4460,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4453,
                          "src": "4318:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4302:27:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_int256_$dyn_storage",
                          "typeString": "int256[] storage ref"
                        }
                      },
                      "id": 4462,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4302:34:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4463,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4447,
                      "src": "4339:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4302:42:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4472,
                  "nodeType": "IfStatement",
                  "src": "4298:114:17",
                  "trueBody": {
                    "id": 4471,
                    "nodeType": "Block",
                    "src": "4346:66:17",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4465,
                              "name": "numberArrayAttr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4065,
                              "src": "4367:15:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_int256_$dyn_storage_$",
                                "typeString": "mapping(bytes32 => int256[] storage ref)"
                              }
                            },
                            "id": 4467,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4466,
                              "name": "bytes32key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4453,
                              "src": "4383:10:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4367:27:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_int256_$dyn_storage",
                              "typeString": "int256[] storage ref"
                            }
                          },
                          "id": 4469,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4468,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4447,
                            "src": "4395:5:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4367:34:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 4451,
                        "id": 4470,
                        "nodeType": "Return",
                        "src": "4360:41:17"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 4473,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4429:1:17",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "functionReturnParameters": 4451,
                  "id": 4474,
                  "nodeType": "Return",
                  "src": "4422:8:17"
                }
              ]
            },
            "documentation": null,
            "id": 4476,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNumberArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4448,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4445,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4476,
                  "src": "4141:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4444,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4141:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4447,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 4476,
                  "src": "4168:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4446,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4168:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4131:53:17"
            },
            "returnParameters": {
              "id": 4451,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4450,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4476,
                  "src": "4230:3:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4449,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "4230:3:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4229:5:17"
            },
            "scope": 4847,
            "src": "4098:339:17",
            "stateMutability": "view",
            "superFunction": 7190,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4498,
              "nodeType": "Block",
              "src": "4566:97:17",
              "statements": [
                {
                  "assignments": [
                    4486
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4486,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4498,
                      "src": "4576:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4485,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4576:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4491,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4489,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4478,
                        "src": "4610:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4487,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "4597:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4488,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "4597:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4597:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4576:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4496,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4492,
                        "name": "addressAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4069,
                        "src": "4625:11:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 4494,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4493,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4486,
                        "src": "4637:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4625:23:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4495,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4480,
                      "src": "4651:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4625:31:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4497,
                  "nodeType": "ExpressionStatement",
                  "src": "4625:31:17"
                }
              ]
            },
            "documentation": null,
            "id": 4499,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4483,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4482,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "4552:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4552:9:17"
              }
            ],
            "name": "setAddressAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4481,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4478,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4499,
                  "src": "4482:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4477,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4482:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4480,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 4499,
                  "src": "4509:13:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4479,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4509:7:17",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4472:56:17"
            },
            "returnParameters": {
              "id": 4484,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4566:0:17"
            },
            "scope": 4847,
            "src": "4443:220:17",
            "stateMutability": "nonpayable",
            "superFunction": 7197,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4521,
              "nodeType": "Block",
              "src": "4772:102:17",
              "statements": [
                {
                  "assignments": [
                    4507
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4507,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4521,
                      "src": "4782:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4506,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4782:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4512,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4510,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4501,
                        "src": "4816:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4508,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "4803:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "4803:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4803:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4782:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4519,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4513,
                        "name": "addressAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4069,
                        "src": "4831:11:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 4515,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4514,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4507,
                        "src": "4843:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4831:23:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4865:1:17",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 4516,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4857:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 4518,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4857:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "4831:36:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4520,
                  "nodeType": "ExpressionStatement",
                  "src": "4831:36:17"
                }
              ]
            },
            "documentation": null,
            "id": 4522,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4504,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4503,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "4758:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4758:9:17"
              }
            ],
            "name": "deleteAddressAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4502,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4501,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4522,
                  "src": "4711:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4500,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4711:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4701:33:17"
            },
            "returnParameters": {
              "id": 4505,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4772:0:17"
            },
            "scope": 4847,
            "src": "4669:205:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4540,
              "nodeType": "Block",
              "src": "5001:96:17",
              "statements": [
                {
                  "assignments": [
                    4530
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4530,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4540,
                      "src": "5011:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4529,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5011:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4535,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4533,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4524,
                        "src": "5045:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4531,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "5032:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4532,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "5032:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4534,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5032:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5011:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4536,
                      "name": "addressAttr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4069,
                      "src": "5067:11:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 4538,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4537,
                      "name": "bytes32key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4530,
                      "src": "5079:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5067:23:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 4528,
                  "id": 4539,
                  "nodeType": "Return",
                  "src": "5060:30:17"
                }
              ]
            },
            "documentation": null,
            "id": 4541,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAddressAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4525,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4524,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4541,
                  "src": "4919:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4523,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4919:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4909:33:17"
            },
            "returnParameters": {
              "id": 4528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4527,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4541,
                  "src": "4988:7:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4526,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4988:7:17",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4987:9:17"
            },
            "scope": 4847,
            "src": "4880:217:17",
            "stateMutability": "view",
            "superFunction": 7204,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4564,
              "nodeType": "Block",
              "src": "5231:105:17",
              "statements": [
                {
                  "assignments": [
                    4551
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4551,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4564,
                      "src": "5241:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4550,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5241:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4556,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4554,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4543,
                        "src": "5275:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4552,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "5262:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4553,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "5262:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4555,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5262:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5241:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4561,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4545,
                        "src": "5323:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4557,
                          "name": "addressArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4074,
                          "src": "5289:16:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => address[] storage ref)"
                          }
                        },
                        "id": 4559,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4558,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4551,
                          "src": "5306:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5289:28:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4560,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5289:33:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) returns (uint256)"
                      }
                    },
                    "id": 4562,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5289:40:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4563,
                  "nodeType": "ExpressionStatement",
                  "src": "5289:40:17"
                }
              ]
            },
            "documentation": null,
            "id": 4565,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4548,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4547,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "5217:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5217:9:17"
              }
            ],
            "name": "setAddressArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4546,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4543,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4565,
                  "src": "5147:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4542,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5147:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4545,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 4565,
                  "src": "5174:13:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4544,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5174:7:17",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5137:56:17"
            },
            "returnParameters": {
              "id": 4549,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5231:0:17"
            },
            "scope": 4847,
            "src": "5103:233:17",
            "stateMutability": "nonpayable",
            "superFunction": 7211,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4627,
              "nodeType": "Block",
              "src": "5470:358:17",
              "statements": [
                {
                  "assignments": [
                    4575
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4575,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4627,
                      "src": "5480:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4574,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5480:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4580,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4578,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4567,
                        "src": "5514:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4576,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "5501:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4577,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "5501:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5501:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5480:38:17"
                },
                {
                  "assignments": [
                    4582
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4582,
                      "name": "arrayLength",
                      "nodeType": "VariableDeclaration",
                      "scope": 4627,
                      "src": "5528:16:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4581,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5528:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4587,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4583,
                        "name": "addressArrayAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4074,
                        "src": "5547:16:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
                          "typeString": "mapping(bytes32 => address[] storage ref)"
                        }
                      },
                      "id": 4585,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4584,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4575,
                        "src": "5564:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "5547:28:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "id": 4586,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "5547:35:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5528:54:17"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4588,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4569,
                      "src": "5597:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4589,
                      "name": "arrayLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4582,
                      "src": "5606:11:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5597:20:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4592,
                  "nodeType": "IfStatement",
                  "src": "5593:33:17",
                  "trueBody": {
                    "expression": null,
                    "functionReturnParameters": 4573,
                    "id": 4591,
                    "nodeType": "Return",
                    "src": "5619:7:17"
                  }
                },
                {
                  "body": {
                    "id": 4619,
                    "nodeType": "Block",
                    "src": "5682:92:17",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4605,
                                "name": "addressArrayAttr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4074,
                                "src": "5696:16:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
                                  "typeString": "mapping(bytes32 => address[] storage ref)"
                                }
                              },
                              "id": 4608,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4606,
                                "name": "bytes32key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4575,
                                "src": "5713:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5696:28:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 4609,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4607,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4594,
                              "src": "5725:1:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5696:31:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4610,
                                "name": "addressArrayAttr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4074,
                                "src": "5730:16:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
                                  "typeString": "mapping(bytes32 => address[] storage ref)"
                                }
                              },
                              "id": 4612,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4611,
                                "name": "bytes32key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4575,
                                "src": "5747:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5730:28:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 4616,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4615,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4613,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4594,
                                "src": "5759:1:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 4614,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5761:1:17",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "5759:3:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5730:33:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5696:67:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4618,
                        "nodeType": "ExpressionStatement",
                        "src": "5696:67:17"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4601,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4597,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4594,
                      "src": "5657:1:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4600,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4598,
                        "name": "arrayLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4582,
                        "src": "5661:11:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 4599,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5675:1:17",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "5661:15:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5657:19:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4620,
                  "initializationExpression": {
                    "assignments": [
                      4594
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4594,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4620,
                        "src": "5641:6:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4593,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5641:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4596,
                    "initialValue": {
                      "argumentTypes": null,
                      "id": 4595,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4569,
                      "src": "5650:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5641:14:17"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4603,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5678:3:17",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4602,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4594,
                        "src": "5678:1:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4604,
                    "nodeType": "ExpressionStatement",
                    "src": "5678:3:17"
                  },
                  "nodeType": "ForStatement",
                  "src": "5636:138:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "--",
                    "prefix": false,
                    "src": "5784:37:17",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4621,
                          "name": "addressArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4074,
                          "src": "5784:16:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => address[] storage ref)"
                          }
                        },
                        "id": 4623,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4622,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4575,
                          "src": "5801:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5784:28:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4624,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5784:35:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4626,
                  "nodeType": "ExpressionStatement",
                  "src": "5784:37:17"
                }
              ]
            },
            "documentation": null,
            "id": 4628,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4572,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4571,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "5456:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5456:9:17"
              }
            ],
            "name": "deleteAddressArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4570,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4567,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4628,
                  "src": "5389:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4566,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5389:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4569,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 4628,
                  "src": "5416:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4568,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5416:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5379:53:17"
            },
            "returnParameters": {
              "id": 4573,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5470:0:17"
            },
            "scope": 4847,
            "src": "5342:486:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4662,
              "nodeType": "Block",
              "src": "5980:209:17",
              "statements": [
                {
                  "assignments": [
                    4638
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4638,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4662,
                      "src": "5990:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4637,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5990:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4643,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4641,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4630,
                        "src": "6024:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4639,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "6011:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4640,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "6011:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6011:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5990:38:17"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4649,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4644,
                          "name": "addressArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4074,
                          "src": "6043:16:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => address[] storage ref)"
                          }
                        },
                        "id": 4646,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4645,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4638,
                          "src": "6060:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6043:28:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4647,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6043:35:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4648,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4632,
                      "src": "6081:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6043:43:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4657,
                  "nodeType": "IfStatement",
                  "src": "6039:116:17",
                  "trueBody": {
                    "id": 4656,
                    "nodeType": "Block",
                    "src": "6088:67:17",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4650,
                              "name": "addressArrayAttr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4074,
                              "src": "6109:16:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
                                "typeString": "mapping(bytes32 => address[] storage ref)"
                              }
                            },
                            "id": 4652,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4651,
                              "name": "bytes32key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4638,
                              "src": "6126:10:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6109:28:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 4654,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4653,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4632,
                            "src": "6138:5:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6109:35:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 4636,
                        "id": 4655,
                        "nodeType": "Return",
                        "src": "6102:42:17"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4659,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6180:1:17",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 4658,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "6172:7:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 4660,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6172:10:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 4636,
                  "id": 4661,
                  "nodeType": "Return",
                  "src": "6165:17:17"
                }
              ]
            },
            "documentation": null,
            "id": 4663,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAddressArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4633,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4630,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4663,
                  "src": "5878:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4629,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5878:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4632,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 4663,
                  "src": "5905:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4631,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5905:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5868:53:17"
            },
            "returnParameters": {
              "id": 4636,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4635,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4663,
                  "src": "5967:7:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4634,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5967:7:17",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5966:9:17"
            },
            "scope": 4847,
            "src": "5834:355:17",
            "stateMutability": "view",
            "superFunction": 7220,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4685,
              "nodeType": "Block",
              "src": "6315:94:17",
              "statements": [
                {
                  "assignments": [
                    4673
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4673,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4685,
                      "src": "6325:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4672,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6325:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4678,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4676,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4665,
                        "src": "6359:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4674,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "6346:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4675,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "6346:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4677,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6346:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6325:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4683,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4679,
                        "name": "boolAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4078,
                        "src": "6374:8:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                          "typeString": "mapping(bytes32 => bool)"
                        }
                      },
                      "id": 4681,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4680,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4673,
                        "src": "6383:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6374:20:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4682,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4667,
                      "src": "6397:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "6374:28:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4684,
                  "nodeType": "ExpressionStatement",
                  "src": "6374:28:17"
                }
              ]
            },
            "documentation": null,
            "id": 4686,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4670,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4669,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "6301:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6301:9:17"
              }
            ],
            "name": "setBooleanAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4665,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4686,
                  "src": "6234:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4664,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6234:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4667,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 4686,
                  "src": "6261:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4666,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6261:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6224:53:17"
            },
            "returnParameters": {
              "id": 4671,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6315:0:17"
            },
            "scope": 4847,
            "src": "6195:214:17",
            "stateMutability": "nonpayable",
            "superFunction": 7227,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4706,
              "nodeType": "Block",
              "src": "6518:94:17",
              "statements": [
                {
                  "assignments": [
                    4694
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4694,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4706,
                      "src": "6528:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4693,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6528:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4699,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4697,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4688,
                        "src": "6562:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4695,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "6549:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4696,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "6549:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4698,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6549:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6528:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4704,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4700,
                        "name": "boolAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4078,
                        "src": "6577:8:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                          "typeString": "mapping(bytes32 => bool)"
                        }
                      },
                      "id": 4702,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4701,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4694,
                        "src": "6586:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6577:20:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 4703,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6600:5:17",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "6577:28:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4705,
                  "nodeType": "ExpressionStatement",
                  "src": "6577:28:17"
                }
              ]
            },
            "documentation": null,
            "id": 4707,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4691,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4690,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "6504:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6504:9:17"
              }
            ],
            "name": "deleteBooleanAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4689,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4688,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4707,
                  "src": "6457:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4687,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6457:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6447:33:17"
            },
            "returnParameters": {
              "id": 4692,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6518:0:17"
            },
            "scope": 4847,
            "src": "6415:197:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4725,
              "nodeType": "Block",
              "src": "6736:93:17",
              "statements": [
                {
                  "assignments": [
                    4715
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4715,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4725,
                      "src": "6746:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4714,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6746:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4720,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4718,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4709,
                        "src": "6780:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4716,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "6767:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4717,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "6767:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6767:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6746:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4721,
                      "name": "boolAttr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4078,
                      "src": "6802:8:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                        "typeString": "mapping(bytes32 => bool)"
                      }
                    },
                    "id": 4723,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4722,
                      "name": "bytes32key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4715,
                      "src": "6811:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6802:20:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 4713,
                  "id": 4724,
                  "nodeType": "Return",
                  "src": "6795:27:17"
                }
              ]
            },
            "documentation": null,
            "id": 4726,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBooleanAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4710,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4709,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4726,
                  "src": "6657:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4708,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6657:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6647:33:17"
            },
            "returnParameters": {
              "id": 4713,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4712,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4726,
                  "src": "6726:4:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4711,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6726:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6725:6:17"
            },
            "scope": 4847,
            "src": "6618:211:17",
            "stateMutability": "view",
            "superFunction": 7234,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4749,
              "nodeType": "Block",
              "src": "6960:102:17",
              "statements": [
                {
                  "assignments": [
                    4736
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4736,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4749,
                      "src": "6970:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4735,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6970:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4741,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4739,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4728,
                        "src": "7004:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4737,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "6991:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4738,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "6991:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4740,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6991:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6970:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4746,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4730,
                        "src": "7049:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4742,
                          "name": "boolArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4083,
                          "src": "7018:13:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => bool[] storage ref)"
                          }
                        },
                        "id": 4744,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4743,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4736,
                          "src": "7032:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7018:25:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_storage",
                          "typeString": "bool[] storage ref"
                        }
                      },
                      "id": 4745,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7018:30:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_bool_$returns$_t_uint256_$",
                        "typeString": "function (bool) returns (uint256)"
                      }
                    },
                    "id": 4747,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7018:37:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4748,
                  "nodeType": "ExpressionStatement",
                  "src": "7018:37:17"
                }
              ]
            },
            "documentation": null,
            "id": 4750,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4733,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4732,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "6946:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6946:9:17"
              }
            ],
            "name": "setBooleanArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4731,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4728,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4750,
                  "src": "6879:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4727,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6879:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4730,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 4750,
                  "src": "6906:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4729,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6906:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6869:53:17"
            },
            "returnParameters": {
              "id": 4734,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6960:0:17"
            },
            "scope": 4847,
            "src": "6835:227:17",
            "stateMutability": "nonpayable",
            "superFunction": 7241,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4782,
              "nodeType": "Block",
              "src": "7211:198:17",
              "statements": [
                {
                  "assignments": [
                    4760
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4760,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4782,
                      "src": "7221:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4759,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7221:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4765,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4763,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4752,
                        "src": "7255:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4761,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "7242:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4762,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "7242:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4764,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7242:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7221:38:17"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4771,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4766,
                          "name": "boolArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4083,
                          "src": "7274:13:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => bool[] storage ref)"
                          }
                        },
                        "id": 4768,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4767,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4760,
                          "src": "7288:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7274:25:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_storage",
                          "typeString": "bool[] storage ref"
                        }
                      },
                      "id": 4769,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7274:32:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4770,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4754,
                      "src": "7309:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7274:40:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4779,
                  "nodeType": "IfStatement",
                  "src": "7270:110:17",
                  "trueBody": {
                    "id": 4778,
                    "nodeType": "Block",
                    "src": "7316:64:17",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4772,
                              "name": "boolArrayAttr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4083,
                              "src": "7337:13:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$dyn_storage_$",
                                "typeString": "mapping(bytes32 => bool[] storage ref)"
                              }
                            },
                            "id": 4774,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4773,
                              "name": "bytes32key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4760,
                              "src": "7351:10:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7337:25:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_storage",
                              "typeString": "bool[] storage ref"
                            }
                          },
                          "id": 4776,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4775,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4754,
                            "src": "7363:5:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7337:32:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4758,
                        "id": 4777,
                        "nodeType": "Return",
                        "src": "7330:39:17"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 4780,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7397:5:17",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 4758,
                  "id": 4781,
                  "nodeType": "Return",
                  "src": "7390:12:17"
                }
              ]
            },
            "documentation": null,
            "id": 4783,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBooleanArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4755,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4752,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4783,
                  "src": "7112:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4751,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7112:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4754,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 4783,
                  "src": "7139:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4753,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7139:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7102:53:17"
            },
            "returnParameters": {
              "id": 4758,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4757,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4783,
                  "src": "7201:4:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4756,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7201:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7200:6:17"
            },
            "scope": 4847,
            "src": "7068:341:17",
            "stateMutability": "view",
            "superFunction": 7250,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4845,
              "nodeType": "Block",
              "src": "7543:346:17",
              "statements": [
                {
                  "assignments": [
                    4793
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4793,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4845,
                      "src": "7553:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4792,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7553:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4798,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4796,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4785,
                        "src": "7587:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4794,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "7574:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4795,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "7574:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4797,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7574:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7553:38:17"
                },
                {
                  "assignments": [
                    4800
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4800,
                      "name": "arrayLength",
                      "nodeType": "VariableDeclaration",
                      "scope": 4845,
                      "src": "7601:16:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4799,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7601:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4805,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4801,
                        "name": "boolArrayAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4083,
                        "src": "7620:13:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$dyn_storage_$",
                          "typeString": "mapping(bytes32 => bool[] storage ref)"
                        }
                      },
                      "id": 4803,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4802,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4793,
                        "src": "7634:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7620:25:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bool_$dyn_storage",
                        "typeString": "bool[] storage ref"
                      }
                    },
                    "id": 4804,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "7620:32:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7601:51:17"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4808,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4806,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4787,
                      "src": "7667:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4807,
                      "name": "arrayLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4800,
                      "src": "7676:11:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7667:20:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4810,
                  "nodeType": "IfStatement",
                  "src": "7663:33:17",
                  "trueBody": {
                    "expression": null,
                    "functionReturnParameters": 4791,
                    "id": 4809,
                    "nodeType": "Return",
                    "src": "7689:7:17"
                  }
                },
                {
                  "body": {
                    "id": 4837,
                    "nodeType": "Block",
                    "src": "7752:86:17",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4823,
                                "name": "boolArrayAttr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4083,
                                "src": "7766:13:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$dyn_storage_$",
                                  "typeString": "mapping(bytes32 => bool[] storage ref)"
                                }
                              },
                              "id": 4826,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4824,
                                "name": "bytes32key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4793,
                                "src": "7780:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7766:25:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage",
                                "typeString": "bool[] storage ref"
                              }
                            },
                            "id": 4827,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4825,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4812,
                              "src": "7792:1:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7766:28:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4828,
                                "name": "boolArrayAttr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4083,
                                "src": "7797:13:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$dyn_storage_$",
                                  "typeString": "mapping(bytes32 => bool[] storage ref)"
                                }
                              },
                              "id": 4830,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4829,
                                "name": "bytes32key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4793,
                                "src": "7811:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7797:25:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage",
                                "typeString": "bool[] storage ref"
                              }
                            },
                            "id": 4834,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4833,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4831,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4812,
                                "src": "7823:1:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 4832,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7825:1:17",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "7823:3:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7797:30:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7766:61:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4836,
                        "nodeType": "ExpressionStatement",
                        "src": "7766:61:17"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4815,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4812,
                      "src": "7727:1:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4818,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4816,
                        "name": "arrayLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4800,
                        "src": "7731:11:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 4817,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7745:1:17",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "7731:15:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7727:19:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4838,
                  "initializationExpression": {
                    "assignments": [
                      4812
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4812,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4838,
                        "src": "7711:6:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4811,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7711:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4814,
                    "initialValue": {
                      "argumentTypes": null,
                      "id": 4813,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4787,
                      "src": "7720:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7711:14:17"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4821,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "7748:3:17",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4820,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4812,
                        "src": "7748:1:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4822,
                    "nodeType": "ExpressionStatement",
                    "src": "7748:3:17"
                  },
                  "nodeType": "ForStatement",
                  "src": "7706:132:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4843,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "--",
                    "prefix": false,
                    "src": "7848:34:17",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4839,
                          "name": "boolArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4083,
                          "src": "7848:13:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => bool[] storage ref)"
                          }
                        },
                        "id": 4841,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4840,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4793,
                          "src": "7862:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7848:25:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_storage",
                          "typeString": "bool[] storage ref"
                        }
                      },
                      "id": 4842,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7848:32:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4844,
                  "nodeType": "ExpressionStatement",
                  "src": "7848:34:17"
                }
              ]
            },
            "documentation": null,
            "id": 4846,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4790,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4789,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "7529:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7529:9:17"
              }
            ],
            "name": "deleteBooleanArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4788,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4785,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4846,
                  "src": "7462:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4784,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7462:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4787,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 4846,
                  "src": "7489:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4786,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7489:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7452:53:17"
            },
            "returnParameters": {
              "id": 4791,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7543:0:17"
            },
            "scope": 4847,
            "src": "7415:474:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 4848,
        "src": "141:7750:17"
      }
    ],
    "src": "0:7892:17"
  },
  "legacyAST": {
    "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/SignaturitUser.sol",
    "exportedSymbols": {
      "SignaturitUser": [
        4847
      ]
    },
    "id": 4848,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4039,
        "literals": [
          "solidity",
          "<",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:17"
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/SignaturitUserInterface.sol",
        "file": "./interfaces/SignaturitUserInterface.sol",
        "id": 4040,
        "nodeType": "ImportDirective",
        "scope": 4848,
        "sourceUnit": 7252,
        "src": "25:50:17",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/libraries/Utils.sol",
        "file": "./libraries/Utils.sol",
        "id": 4041,
        "nodeType": "ImportDirective",
        "scope": 4848,
        "sourceUnit": 7290,
        "src": "76:31:17",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4042,
              "name": "SignaturitUserInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7251,
              "src": "168:23:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                "typeString": "contract SignaturitUserInterface"
              }
            },
            "id": 4043,
            "nodeType": "InheritanceSpecifier",
            "src": "168:23:17"
          }
        ],
        "contractDependencies": [
          7251
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 4847,
        "linearizedBaseContracts": [
          4847,
          7251
        ],
        "name": "SignaturitUser",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 4045,
            "name": "rootAddress",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "198:26:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 4044,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "198:7:17",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4047,
            "name": "ownerAddress",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "230:27:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 4046,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "230:7:17",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4051,
            "name": "stringAttr",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "264:45:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
              "typeString": "mapping(bytes32 => string)"
            },
            "typeName": {
              "id": 4050,
              "keyType": {
                "id": 4048,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "273:7:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "264:27:17",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
                "typeString": "mapping(bytes32 => string)"
              },
              "valueType": {
                "id": 4049,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "284:6:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4056,
            "name": "stringArrayAttr",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "315:53:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_string_storage_$dyn_storage_$",
              "typeString": "mapping(bytes32 => string[])"
            },
            "typeName": {
              "id": 4055,
              "keyType": {
                "id": 4052,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "324:7:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "315:29:17",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_string_storage_$dyn_storage_$",
                "typeString": "mapping(bytes32 => string[])"
              },
              "valueType": {
                "baseType": {
                  "id": 4053,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "335:6:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "id": 4054,
                "length": null,
                "nodeType": "ArrayTypeName",
                "src": "335:8:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                  "typeString": "string[]"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 4060,
            "name": "numberAttr",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "374:42:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_int256_$",
              "typeString": "mapping(bytes32 => int256)"
            },
            "typeName": {
              "id": 4059,
              "keyType": {
                "id": 4057,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "383:7:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "374:24:17",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_int256_$",
                "typeString": "mapping(bytes32 => int256)"
              },
              "valueType": {
                "id": 4058,
                "name": "int",
                "nodeType": "ElementaryTypeName",
                "src": "394:3:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_int256",
                  "typeString": "int256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4065,
            "name": "numberArrayAttr",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "422:49:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_int256_$dyn_storage_$",
              "typeString": "mapping(bytes32 => int256[])"
            },
            "typeName": {
              "id": 4064,
              "keyType": {
                "id": 4061,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "431:7:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "422:26:17",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_int256_$dyn_storage_$",
                "typeString": "mapping(bytes32 => int256[])"
              },
              "valueType": {
                "baseType": {
                  "id": 4062,
                  "name": "int",
                  "nodeType": "ElementaryTypeName",
                  "src": "442:3:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  }
                },
                "id": 4063,
                "length": null,
                "nodeType": "ArrayTypeName",
                "src": "442:5:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_int256_$dyn_storage_ptr",
                  "typeString": "int256[]"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4069,
            "name": "addressAttr",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "477:47:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 4068,
              "keyType": {
                "id": 4066,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "486:7:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "477:28:17",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 4067,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "497:7:17",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4074,
            "name": "addressArrayAttr",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "530:54:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
              "typeString": "mapping(bytes32 => address[])"
            },
            "typeName": {
              "id": 4073,
              "keyType": {
                "id": 4070,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "539:7:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "530:30:17",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
                "typeString": "mapping(bytes32 => address[])"
              },
              "valueType": {
                "baseType": {
                  "id": 4071,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "550:7:17",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "id": 4072,
                "length": null,
                "nodeType": "ArrayTypeName",
                "src": "550:9:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                  "typeString": "address[]"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4078,
            "name": "boolAttr",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "590:41:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
              "typeString": "mapping(bytes32 => bool)"
            },
            "typeName": {
              "id": 4077,
              "keyType": {
                "id": 4075,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "599:7:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "590:25:17",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                "typeString": "mapping(bytes32 => bool)"
              },
              "valueType": {
                "id": 4076,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "610:4:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4083,
            "name": "boolArrayAttr",
            "nodeType": "VariableDeclaration",
            "scope": 4847,
            "src": "637:48:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$dyn_storage_$",
              "typeString": "mapping(bytes32 => bool[])"
            },
            "typeName": {
              "id": 4082,
              "keyType": {
                "id": 4079,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "646:7:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "637:27:17",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$dyn_storage_$",
                "typeString": "mapping(bytes32 => bool[])"
              },
              "valueType": {
                "baseType": {
                  "id": 4080,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "657:4:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "id": 4081,
                "length": null,
                "nodeType": "ArrayTypeName",
                "src": "657:6:17",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                  "typeString": "bool[]"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4097,
              "nodeType": "Block",
              "src": "749:79:17",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4091,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4088,
                      "name": "rootAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4045,
                      "src": "759:11:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4089,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7304,
                        "src": "773:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4090,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "773:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "759:24:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4092,
                  "nodeType": "ExpressionStatement",
                  "src": "759:24:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4093,
                      "name": "ownerAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4047,
                      "src": "793:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4094,
                      "name": "_ownerAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4085,
                      "src": "808:13:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "793:28:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4096,
                  "nodeType": "ExpressionStatement",
                  "src": "793:28:17"
                }
              ]
            },
            "documentation": null,
            "id": 4098,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4086,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4085,
                  "name": "_ownerAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 4098,
                  "src": "714:21:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4084,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "714:7:17",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "704:37:17"
            },
            "returnParameters": {
              "id": 4087,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "749:0:17"
            },
            "scope": 4847,
            "src": "692:136:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4109,
              "nodeType": "Block",
              "src": "855:138:17",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4104,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4101,
                            "name": "tx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7316,
                            "src": "886:2:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_transaction",
                              "typeString": "tx"
                            }
                          },
                          "id": 4102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "origin",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "886:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 4103,
                          "name": "rootAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4045,
                          "src": "899:11:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "886:24:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c7920746865206f776e65722063616e20706572666f726d207468697320616374696f6e",
                        "id": 4105,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "924:40:17",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2a1cb988fffa75dab1f18f6e33d352b421b15b8203fb8b7f8559967fd8de80e5",
                          "typeString": "literal_string \"Only the owner can perform this action\""
                        },
                        "value": "Only the owner can perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2a1cb988fffa75dab1f18f6e33d352b421b15b8203fb8b7f8559967fd8de80e5",
                          "typeString": "literal_string \"Only the owner can perform this action\""
                        }
                      ],
                      "id": 4100,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "865:7:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4106,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "865:109:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4107,
                  "nodeType": "ExpressionStatement",
                  "src": "865:109:17"
                },
                {
                  "id": 4108,
                  "nodeType": "PlaceholderStatement",
                  "src": "985:1:17"
                }
              ]
            },
            "documentation": null,
            "id": 4110,
            "name": "protected",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 4099,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "852:2:17"
            },
            "src": "834:159:17",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4132,
              "nodeType": "Block",
              "src": "1127:96:17",
              "statements": [
                {
                  "assignments": [
                    4120
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4120,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4132,
                      "src": "1137:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4119,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1137:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4125,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4123,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4112,
                        "src": "1171:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4121,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "1158:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4122,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "1158:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1158:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1137:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4130,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4126,
                        "name": "stringAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4051,
                        "src": "1186:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
                          "typeString": "mapping(bytes32 => string storage ref)"
                        }
                      },
                      "id": 4128,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4127,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4120,
                        "src": "1197:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1186:22:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4129,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4114,
                      "src": "1211:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1186:30:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 4131,
                  "nodeType": "ExpressionStatement",
                  "src": "1186:30:17"
                }
              ]
            },
            "documentation": null,
            "id": 4133,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4117,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4116,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "1113:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1113:9:17"
              }
            ],
            "name": "setStringAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4115,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4112,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4133,
                  "src": "1037:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4111,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1037:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4114,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 4133,
                  "src": "1064:19:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4113,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1064:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1027:62:17"
            },
            "returnParameters": {
              "id": 4118,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1127:0:17"
            },
            "scope": 4847,
            "src": "999:224:17",
            "stateMutability": "nonpayable",
            "superFunction": 7137,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4153,
              "nodeType": "Block",
              "src": "1331:93:17",
              "statements": [
                {
                  "assignments": [
                    4141
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4141,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4153,
                      "src": "1341:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4140,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1341:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4146,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4144,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4135,
                        "src": "1375:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4142,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "1362:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4143,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "1362:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4145,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1362:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1341:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4151,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4147,
                        "name": "stringAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4051,
                        "src": "1390:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
                          "typeString": "mapping(bytes32 => string storage ref)"
                        }
                      },
                      "id": 4149,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4148,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4141,
                        "src": "1401:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1390:22:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "",
                      "id": 4150,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1415:2:17",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                        "typeString": "literal_string \"\""
                      },
                      "value": ""
                    },
                    "src": "1390:27:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 4152,
                  "nodeType": "ExpressionStatement",
                  "src": "1390:27:17"
                }
              ]
            },
            "documentation": null,
            "id": 4154,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4138,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4137,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "1317:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1317:9:17"
              }
            ],
            "name": "deleteStringAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4136,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4135,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4154,
                  "src": "1270:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4134,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1270:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1260:33:17"
            },
            "returnParameters": {
              "id": 4139,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1331:0:17"
            },
            "scope": 4847,
            "src": "1229:195:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4172,
              "nodeType": "Block",
              "src": "1556:95:17",
              "statements": [
                {
                  "assignments": [
                    4162
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4162,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4172,
                      "src": "1566:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4161,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1566:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4167,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4165,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4156,
                        "src": "1600:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4163,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "1587:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4164,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "1587:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1587:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1566:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4168,
                      "name": "stringAttr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4051,
                      "src": "1622:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
                        "typeString": "mapping(bytes32 => string storage ref)"
                      }
                    },
                    "id": 4170,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4169,
                      "name": "bytes32key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4162,
                      "src": "1633:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1622:22:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 4160,
                  "id": 4171,
                  "nodeType": "Return",
                  "src": "1615:29:17"
                }
              ]
            },
            "documentation": null,
            "id": 4173,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getStringAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4157,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4156,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4173,
                  "src": "1468:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4155,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1468:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1458:33:17"
            },
            "returnParameters": {
              "id": 4160,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4159,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4173,
                  "src": "1537:13:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4158,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1537:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1536:15:17"
            },
            "scope": 4847,
            "src": "1430:221:17",
            "stateMutability": "view",
            "superFunction": 7144,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4196,
              "nodeType": "Block",
              "src": "1790:104:17",
              "statements": [
                {
                  "assignments": [
                    4183
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4183,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4196,
                      "src": "1800:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4182,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1800:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4188,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4186,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4175,
                        "src": "1834:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4184,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "1821:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4185,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "1821:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4187,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1821:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1800:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4193,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4177,
                        "src": "1881:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4189,
                          "name": "stringArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4056,
                          "src": "1848:15:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_string_storage_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => string storage ref[] storage ref)"
                          }
                        },
                        "id": 4191,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4190,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4183,
                          "src": "1864:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1848:27:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 4192,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1848:32:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$_t_uint256_$",
                        "typeString": "function (string storage ref) returns (uint256)"
                      }
                    },
                    "id": 4194,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1848:39:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4195,
                  "nodeType": "ExpressionStatement",
                  "src": "1848:39:17"
                }
              ]
            },
            "documentation": null,
            "id": 4197,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4180,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4179,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "1776:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1776:9:17"
              }
            ],
            "name": "setStringArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4178,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4175,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4197,
                  "src": "1700:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4174,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1700:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4177,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 4197,
                  "src": "1727:19:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4176,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1727:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1690:62:17"
            },
            "returnParameters": {
              "id": 4181,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1790:0:17"
            },
            "scope": 4847,
            "src": "1657:237:17",
            "stateMutability": "nonpayable",
            "superFunction": 7151,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4259,
              "nodeType": "Block",
              "src": "2027:354:17",
              "statements": [
                {
                  "assignments": [
                    4207
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4207,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4259,
                      "src": "2037:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4206,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2037:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4212,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4210,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4199,
                        "src": "2071:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4208,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "2058:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4209,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "2058:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2058:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2037:38:17"
                },
                {
                  "assignments": [
                    4214
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4214,
                      "name": "arrayLength",
                      "nodeType": "VariableDeclaration",
                      "scope": 4259,
                      "src": "2085:16:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4213,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2085:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4219,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4215,
                        "name": "stringArrayAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4056,
                        "src": "2104:15:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_string_storage_$dyn_storage_$",
                          "typeString": "mapping(bytes32 => string storage ref[] storage ref)"
                        }
                      },
                      "id": 4217,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4216,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4207,
                        "src": "2120:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2104:27:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                        "typeString": "string storage ref[] storage ref"
                      }
                    },
                    "id": 4218,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "2104:34:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2085:53:17"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4222,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4220,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4201,
                      "src": "2153:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4221,
                      "name": "arrayLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4214,
                      "src": "2162:11:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2153:20:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4224,
                  "nodeType": "IfStatement",
                  "src": "2149:33:17",
                  "trueBody": {
                    "expression": null,
                    "functionReturnParameters": 4205,
                    "id": 4223,
                    "nodeType": "Return",
                    "src": "2175:7:17"
                  }
                },
                {
                  "body": {
                    "id": 4251,
                    "nodeType": "Block",
                    "src": "2238:90:17",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4249,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4237,
                                "name": "stringArrayAttr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4056,
                                "src": "2252:15:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_string_storage_$dyn_storage_$",
                                  "typeString": "mapping(bytes32 => string storage ref[] storage ref)"
                                }
                              },
                              "id": 4240,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4238,
                                "name": "bytes32key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4207,
                                "src": "2268:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2252:27:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                "typeString": "string storage ref[] storage ref"
                              }
                            },
                            "id": 4241,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4239,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4226,
                              "src": "2280:1:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2252:30:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4242,
                                "name": "stringArrayAttr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4056,
                                "src": "2285:15:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_string_storage_$dyn_storage_$",
                                  "typeString": "mapping(bytes32 => string storage ref[] storage ref)"
                                }
                              },
                              "id": 4244,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4243,
                                "name": "bytes32key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4207,
                                "src": "2301:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2285:27:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                "typeString": "string storage ref[] storage ref"
                              }
                            },
                            "id": 4248,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4247,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4245,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4226,
                                "src": "2313:1:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 4246,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2315:1:17",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "2313:3:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2285:32:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "src": "2252:65:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 4250,
                        "nodeType": "ExpressionStatement",
                        "src": "2252:65:17"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4229,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4226,
                      "src": "2213:1:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4232,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4230,
                        "name": "arrayLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4214,
                        "src": "2217:11:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 4231,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2231:1:17",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "2217:15:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2213:19:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4252,
                  "initializationExpression": {
                    "assignments": [
                      4226
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4226,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4252,
                        "src": "2197:6:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4225,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2197:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4228,
                    "initialValue": {
                      "argumentTypes": null,
                      "id": 4227,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4201,
                      "src": "2206:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2197:14:17"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4235,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2234:3:17",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4234,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4226,
                        "src": "2234:1:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4236,
                    "nodeType": "ExpressionStatement",
                    "src": "2234:3:17"
                  },
                  "nodeType": "ForStatement",
                  "src": "2192:136:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "--",
                    "prefix": false,
                    "src": "2338:36:17",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4253,
                          "name": "stringArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4056,
                          "src": "2338:15:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_string_storage_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => string storage ref[] storage ref)"
                          }
                        },
                        "id": 4255,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4254,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4207,
                          "src": "2354:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2338:27:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 4256,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2338:34:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4258,
                  "nodeType": "ExpressionStatement",
                  "src": "2338:36:17"
                }
              ]
            },
            "documentation": null,
            "id": 4260,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4204,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4203,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "2013:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2013:9:17"
              }
            ],
            "name": "deleteStringArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4202,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4199,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4260,
                  "src": "1946:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4198,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1946:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4201,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 4260,
                  "src": "1973:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4200,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1973:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1936:53:17"
            },
            "returnParameters": {
              "id": 4205,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2027:0:17"
            },
            "scope": 4847,
            "src": "1900:481:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4292,
              "nodeType": "Block",
              "src": "2538:199:17",
              "statements": [
                {
                  "assignments": [
                    4270
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4270,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4292,
                      "src": "2548:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4269,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2548:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4275,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4273,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4262,
                        "src": "2582:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4271,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "2569:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4272,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "2569:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4274,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2569:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2548:38:17"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4281,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4276,
                          "name": "stringArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4056,
                          "src": "2601:15:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_string_storage_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => string storage ref[] storage ref)"
                          }
                        },
                        "id": 4278,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4277,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4270,
                          "src": "2617:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2601:27:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 4279,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2601:34:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4280,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4264,
                      "src": "2638:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2601:42:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4289,
                  "nodeType": "IfStatement",
                  "src": "2597:114:17",
                  "trueBody": {
                    "id": 4288,
                    "nodeType": "Block",
                    "src": "2645:66:17",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4282,
                              "name": "stringArrayAttr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4056,
                              "src": "2666:15:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_string_storage_$dyn_storage_$",
                                "typeString": "mapping(bytes32 => string storage ref[] storage ref)"
                              }
                            },
                            "id": 4284,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4283,
                              "name": "bytes32key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4270,
                              "src": "2682:10:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2666:27:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                              "typeString": "string storage ref[] storage ref"
                            }
                          },
                          "id": 4286,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4285,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4264,
                            "src": "2694:5:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2666:34:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 4268,
                        "id": 4287,
                        "nodeType": "Return",
                        "src": "2659:41:17"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "",
                    "id": 4290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2728:2:17",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                      "typeString": "literal_string \"\""
                    },
                    "value": ""
                  },
                  "functionReturnParameters": 4268,
                  "id": 4291,
                  "nodeType": "Return",
                  "src": "2721:9:17"
                }
              ]
            },
            "documentation": null,
            "id": 4293,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getStringArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4265,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4262,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4293,
                  "src": "2430:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4261,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2430:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4264,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 4293,
                  "src": "2457:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4263,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2457:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2420:53:17"
            },
            "returnParameters": {
              "id": 4268,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4267,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4293,
                  "src": "2519:13:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4266,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2519:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2518:15:17"
            },
            "scope": 4847,
            "src": "2387:350:17",
            "stateMutability": "view",
            "superFunction": 7160,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4315,
              "nodeType": "Block",
              "src": "2861:95:17",
              "statements": [
                {
                  "assignments": [
                    4303
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4303,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4315,
                      "src": "2871:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4302,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2871:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4308,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4306,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4295,
                        "src": "2905:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4304,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "2892:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4305,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "2892:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4307,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2892:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2871:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4313,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4309,
                        "name": "numberAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4060,
                        "src": "2919:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_int256_$",
                          "typeString": "mapping(bytes32 => int256)"
                        }
                      },
                      "id": 4311,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4310,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4303,
                        "src": "2930:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2919:22:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4312,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4297,
                      "src": "2944:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "2919:30:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 4314,
                  "nodeType": "ExpressionStatement",
                  "src": "2919:30:17"
                }
              ]
            },
            "documentation": null,
            "id": 4316,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4300,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4299,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "2847:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2847:9:17"
              }
            ],
            "name": "setNumberAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4298,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4295,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4316,
                  "src": "2781:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4294,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2781:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4297,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 4316,
                  "src": "2808:9:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4296,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "2808:3:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2771:52:17"
            },
            "returnParameters": {
              "id": 4301,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2861:0:17"
            },
            "scope": 4847,
            "src": "2743:213:17",
            "stateMutability": "nonpayable",
            "superFunction": 7167,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4336,
              "nodeType": "Block",
              "src": "3064:91:17",
              "statements": [
                {
                  "assignments": [
                    4324
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4324,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4336,
                      "src": "3074:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4323,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3074:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4329,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4327,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4318,
                        "src": "3108:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4325,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "3095:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4326,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "3095:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4328,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3095:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3074:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4334,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4330,
                        "name": "numberAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4060,
                        "src": "3122:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_int256_$",
                          "typeString": "mapping(bytes32 => int256)"
                        }
                      },
                      "id": 4332,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4331,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4324,
                        "src": "3133:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3122:22:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4333,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3147:1:17",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3122:26:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 4335,
                  "nodeType": "ExpressionStatement",
                  "src": "3122:26:17"
                }
              ]
            },
            "documentation": null,
            "id": 4337,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4321,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4320,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "3050:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3050:9:17"
              }
            ],
            "name": "deleteNumberAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4319,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4318,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4337,
                  "src": "3003:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4317,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3003:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2993:33:17"
            },
            "returnParameters": {
              "id": 4322,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3064:0:17"
            },
            "scope": 4847,
            "src": "2962:193:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4355,
              "nodeType": "Block",
              "src": "3277:95:17",
              "statements": [
                {
                  "assignments": [
                    4345
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4345,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4355,
                      "src": "3287:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4344,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3287:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4350,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4348,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4339,
                        "src": "3321:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4346,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "3308:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4347,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "3308:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4349,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3308:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3287:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4351,
                      "name": "numberAttr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4060,
                      "src": "3343:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_int256_$",
                        "typeString": "mapping(bytes32 => int256)"
                      }
                    },
                    "id": 4353,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4352,
                      "name": "bytes32key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4345,
                      "src": "3354:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3343:22:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 4343,
                  "id": 4354,
                  "nodeType": "Return",
                  "src": "3336:29:17"
                }
              ]
            },
            "documentation": null,
            "id": 4356,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNumberAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4340,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4339,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4356,
                  "src": "3199:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4338,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3199:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3189:33:17"
            },
            "returnParameters": {
              "id": 4343,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4342,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4356,
                  "src": "3268:3:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4341,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "3268:3:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3267:5:17"
            },
            "scope": 4847,
            "src": "3161:211:17",
            "stateMutability": "view",
            "superFunction": 7174,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4379,
              "nodeType": "Block",
              "src": "3501:104:17",
              "statements": [
                {
                  "assignments": [
                    4366
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4366,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4379,
                      "src": "3511:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4365,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3511:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4371,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4369,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4358,
                        "src": "3545:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4367,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "3532:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4368,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "3532:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3532:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3511:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4376,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4360,
                        "src": "3592:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4372,
                          "name": "numberArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4065,
                          "src": "3559:15:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_int256_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => int256[] storage ref)"
                          }
                        },
                        "id": 4374,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4373,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4366,
                          "src": "3575:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3559:27:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_int256_$dyn_storage",
                          "typeString": "int256[] storage ref"
                        }
                      },
                      "id": 4375,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3559:32:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_int256_$returns$_t_uint256_$",
                        "typeString": "function (int256) returns (uint256)"
                      }
                    },
                    "id": 4377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3559:39:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4378,
                  "nodeType": "ExpressionStatement",
                  "src": "3559:39:17"
                }
              ]
            },
            "documentation": null,
            "id": 4380,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4363,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4362,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "3487:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3487:9:17"
              }
            ],
            "name": "setNumberArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4361,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4358,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4380,
                  "src": "3421:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4357,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3421:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4360,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 4380,
                  "src": "3448:9:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4359,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "3448:3:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3411:52:17"
            },
            "returnParameters": {
              "id": 4364,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3501:0:17"
            },
            "scope": 4847,
            "src": "3378:227:17",
            "stateMutability": "nonpayable",
            "superFunction": 7181,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4442,
              "nodeType": "Block",
              "src": "3738:354:17",
              "statements": [
                {
                  "assignments": [
                    4390
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4390,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4442,
                      "src": "3748:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4389,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3748:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4395,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4393,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4382,
                        "src": "3782:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4391,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "3769:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4392,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "3769:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3769:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3748:38:17"
                },
                {
                  "assignments": [
                    4397
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4397,
                      "name": "arrayLength",
                      "nodeType": "VariableDeclaration",
                      "scope": 4442,
                      "src": "3796:16:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4396,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3796:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4402,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4398,
                        "name": "numberArrayAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4065,
                        "src": "3815:15:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_int256_$dyn_storage_$",
                          "typeString": "mapping(bytes32 => int256[] storage ref)"
                        }
                      },
                      "id": 4400,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4399,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4390,
                        "src": "3831:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3815:27:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_int256_$dyn_storage",
                        "typeString": "int256[] storage ref"
                      }
                    },
                    "id": 4401,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "3815:34:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3796:53:17"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4403,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4384,
                      "src": "3864:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4404,
                      "name": "arrayLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4397,
                      "src": "3873:11:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3864:20:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4407,
                  "nodeType": "IfStatement",
                  "src": "3860:33:17",
                  "trueBody": {
                    "expression": null,
                    "functionReturnParameters": 4388,
                    "id": 4406,
                    "nodeType": "Return",
                    "src": "3886:7:17"
                  }
                },
                {
                  "body": {
                    "id": 4434,
                    "nodeType": "Block",
                    "src": "3949:90:17",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4420,
                                "name": "numberArrayAttr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4065,
                                "src": "3963:15:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_int256_$dyn_storage_$",
                                  "typeString": "mapping(bytes32 => int256[] storage ref)"
                                }
                              },
                              "id": 4423,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4421,
                                "name": "bytes32key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4390,
                                "src": "3979:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3963:27:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_int256_$dyn_storage",
                                "typeString": "int256[] storage ref"
                              }
                            },
                            "id": 4424,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4422,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4409,
                              "src": "3991:1:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3963:30:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4425,
                                "name": "numberArrayAttr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4065,
                                "src": "3996:15:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_int256_$dyn_storage_$",
                                  "typeString": "mapping(bytes32 => int256[] storage ref)"
                                }
                              },
                              "id": 4427,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4426,
                                "name": "bytes32key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4390,
                                "src": "4012:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3996:27:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_int256_$dyn_storage",
                                "typeString": "int256[] storage ref"
                              }
                            },
                            "id": 4431,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4430,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4428,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4409,
                                "src": "4024:1:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 4429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4026:1:17",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "4024:3:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3996:32:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "3963:65:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 4433,
                        "nodeType": "ExpressionStatement",
                        "src": "3963:65:17"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4412,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4409,
                      "src": "3924:1:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4415,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4413,
                        "name": "arrayLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4397,
                        "src": "3928:11:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 4414,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3942:1:17",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "3928:15:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3924:19:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4435,
                  "initializationExpression": {
                    "assignments": [
                      4409
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4409,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4435,
                        "src": "3908:6:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4408,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3908:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4411,
                    "initialValue": {
                      "argumentTypes": null,
                      "id": 4410,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4384,
                      "src": "3917:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3908:14:17"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4418,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "3945:3:17",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4417,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4409,
                        "src": "3945:1:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4419,
                    "nodeType": "ExpressionStatement",
                    "src": "3945:3:17"
                  },
                  "nodeType": "ForStatement",
                  "src": "3903:136:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4440,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "--",
                    "prefix": false,
                    "src": "4049:36:17",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4436,
                          "name": "numberArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4065,
                          "src": "4049:15:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_int256_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => int256[] storage ref)"
                          }
                        },
                        "id": 4438,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4437,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4390,
                          "src": "4065:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4049:27:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_int256_$dyn_storage",
                          "typeString": "int256[] storage ref"
                        }
                      },
                      "id": 4439,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4049:34:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4441,
                  "nodeType": "ExpressionStatement",
                  "src": "4049:36:17"
                }
              ]
            },
            "documentation": null,
            "id": 4443,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4387,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4386,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "3724:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3724:9:17"
              }
            ],
            "name": "deleteNumberArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4385,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4382,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4443,
                  "src": "3657:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4381,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3657:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4384,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 4443,
                  "src": "3684:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4383,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3684:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3647:53:17"
            },
            "returnParameters": {
              "id": 4388,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3738:0:17"
            },
            "scope": 4847,
            "src": "3611:481:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4475,
              "nodeType": "Block",
              "src": "4239:198:17",
              "statements": [
                {
                  "assignments": [
                    4453
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4453,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4475,
                      "src": "4249:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4452,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4249:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4458,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4456,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4445,
                        "src": "4283:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4454,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "4270:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4455,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "4270:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4457,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4270:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4249:38:17"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4459,
                          "name": "numberArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4065,
                          "src": "4302:15:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_int256_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => int256[] storage ref)"
                          }
                        },
                        "id": 4461,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4460,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4453,
                          "src": "4318:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4302:27:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_int256_$dyn_storage",
                          "typeString": "int256[] storage ref"
                        }
                      },
                      "id": 4462,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4302:34:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4463,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4447,
                      "src": "4339:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4302:42:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4472,
                  "nodeType": "IfStatement",
                  "src": "4298:114:17",
                  "trueBody": {
                    "id": 4471,
                    "nodeType": "Block",
                    "src": "4346:66:17",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4465,
                              "name": "numberArrayAttr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4065,
                              "src": "4367:15:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_int256_$dyn_storage_$",
                                "typeString": "mapping(bytes32 => int256[] storage ref)"
                              }
                            },
                            "id": 4467,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4466,
                              "name": "bytes32key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4453,
                              "src": "4383:10:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4367:27:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_int256_$dyn_storage",
                              "typeString": "int256[] storage ref"
                            }
                          },
                          "id": 4469,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4468,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4447,
                            "src": "4395:5:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4367:34:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 4451,
                        "id": 4470,
                        "nodeType": "Return",
                        "src": "4360:41:17"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 4473,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4429:1:17",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "functionReturnParameters": 4451,
                  "id": 4474,
                  "nodeType": "Return",
                  "src": "4422:8:17"
                }
              ]
            },
            "documentation": null,
            "id": 4476,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNumberArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4448,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4445,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4476,
                  "src": "4141:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4444,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4141:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4447,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 4476,
                  "src": "4168:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4446,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4168:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4131:53:17"
            },
            "returnParameters": {
              "id": 4451,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4450,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4476,
                  "src": "4230:3:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4449,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "4230:3:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4229:5:17"
            },
            "scope": 4847,
            "src": "4098:339:17",
            "stateMutability": "view",
            "superFunction": 7190,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4498,
              "nodeType": "Block",
              "src": "4566:97:17",
              "statements": [
                {
                  "assignments": [
                    4486
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4486,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4498,
                      "src": "4576:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4485,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4576:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4491,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4489,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4478,
                        "src": "4610:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4487,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "4597:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4488,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "4597:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4597:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4576:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4496,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4492,
                        "name": "addressAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4069,
                        "src": "4625:11:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 4494,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4493,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4486,
                        "src": "4637:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4625:23:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4495,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4480,
                      "src": "4651:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4625:31:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4497,
                  "nodeType": "ExpressionStatement",
                  "src": "4625:31:17"
                }
              ]
            },
            "documentation": null,
            "id": 4499,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4483,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4482,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "4552:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4552:9:17"
              }
            ],
            "name": "setAddressAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4481,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4478,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4499,
                  "src": "4482:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4477,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4482:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4480,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 4499,
                  "src": "4509:13:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4479,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4509:7:17",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4472:56:17"
            },
            "returnParameters": {
              "id": 4484,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4566:0:17"
            },
            "scope": 4847,
            "src": "4443:220:17",
            "stateMutability": "nonpayable",
            "superFunction": 7197,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4521,
              "nodeType": "Block",
              "src": "4772:102:17",
              "statements": [
                {
                  "assignments": [
                    4507
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4507,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4521,
                      "src": "4782:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4506,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4782:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4512,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4510,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4501,
                        "src": "4816:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4508,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "4803:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "4803:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4803:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4782:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4519,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4513,
                        "name": "addressAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4069,
                        "src": "4831:11:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 4515,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4514,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4507,
                        "src": "4843:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4831:23:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4865:1:17",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 4516,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4857:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 4518,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4857:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "4831:36:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4520,
                  "nodeType": "ExpressionStatement",
                  "src": "4831:36:17"
                }
              ]
            },
            "documentation": null,
            "id": 4522,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4504,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4503,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "4758:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4758:9:17"
              }
            ],
            "name": "deleteAddressAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4502,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4501,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4522,
                  "src": "4711:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4500,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4711:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4701:33:17"
            },
            "returnParameters": {
              "id": 4505,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4772:0:17"
            },
            "scope": 4847,
            "src": "4669:205:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4540,
              "nodeType": "Block",
              "src": "5001:96:17",
              "statements": [
                {
                  "assignments": [
                    4530
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4530,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4540,
                      "src": "5011:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4529,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5011:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4535,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4533,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4524,
                        "src": "5045:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4531,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "5032:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4532,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "5032:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4534,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5032:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5011:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4536,
                      "name": "addressAttr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4069,
                      "src": "5067:11:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 4538,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4537,
                      "name": "bytes32key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4530,
                      "src": "5079:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5067:23:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 4528,
                  "id": 4539,
                  "nodeType": "Return",
                  "src": "5060:30:17"
                }
              ]
            },
            "documentation": null,
            "id": 4541,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAddressAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4525,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4524,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4541,
                  "src": "4919:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4523,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4919:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4909:33:17"
            },
            "returnParameters": {
              "id": 4528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4527,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4541,
                  "src": "4988:7:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4526,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4988:7:17",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4987:9:17"
            },
            "scope": 4847,
            "src": "4880:217:17",
            "stateMutability": "view",
            "superFunction": 7204,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4564,
              "nodeType": "Block",
              "src": "5231:105:17",
              "statements": [
                {
                  "assignments": [
                    4551
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4551,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4564,
                      "src": "5241:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4550,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5241:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4556,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4554,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4543,
                        "src": "5275:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4552,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "5262:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4553,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "5262:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4555,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5262:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5241:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4561,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4545,
                        "src": "5323:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4557,
                          "name": "addressArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4074,
                          "src": "5289:16:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => address[] storage ref)"
                          }
                        },
                        "id": 4559,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4558,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4551,
                          "src": "5306:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5289:28:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4560,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5289:33:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) returns (uint256)"
                      }
                    },
                    "id": 4562,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5289:40:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4563,
                  "nodeType": "ExpressionStatement",
                  "src": "5289:40:17"
                }
              ]
            },
            "documentation": null,
            "id": 4565,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4548,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4547,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "5217:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5217:9:17"
              }
            ],
            "name": "setAddressArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4546,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4543,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4565,
                  "src": "5147:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4542,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5147:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4545,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 4565,
                  "src": "5174:13:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4544,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5174:7:17",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5137:56:17"
            },
            "returnParameters": {
              "id": 4549,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5231:0:17"
            },
            "scope": 4847,
            "src": "5103:233:17",
            "stateMutability": "nonpayable",
            "superFunction": 7211,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4627,
              "nodeType": "Block",
              "src": "5470:358:17",
              "statements": [
                {
                  "assignments": [
                    4575
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4575,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4627,
                      "src": "5480:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4574,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5480:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4580,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4578,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4567,
                        "src": "5514:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4576,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "5501:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4577,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "5501:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5501:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5480:38:17"
                },
                {
                  "assignments": [
                    4582
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4582,
                      "name": "arrayLength",
                      "nodeType": "VariableDeclaration",
                      "scope": 4627,
                      "src": "5528:16:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4581,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5528:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4587,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4583,
                        "name": "addressArrayAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4074,
                        "src": "5547:16:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
                          "typeString": "mapping(bytes32 => address[] storage ref)"
                        }
                      },
                      "id": 4585,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4584,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4575,
                        "src": "5564:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "5547:28:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "id": 4586,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "5547:35:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5528:54:17"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4588,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4569,
                      "src": "5597:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4589,
                      "name": "arrayLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4582,
                      "src": "5606:11:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5597:20:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4592,
                  "nodeType": "IfStatement",
                  "src": "5593:33:17",
                  "trueBody": {
                    "expression": null,
                    "functionReturnParameters": 4573,
                    "id": 4591,
                    "nodeType": "Return",
                    "src": "5619:7:17"
                  }
                },
                {
                  "body": {
                    "id": 4619,
                    "nodeType": "Block",
                    "src": "5682:92:17",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4605,
                                "name": "addressArrayAttr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4074,
                                "src": "5696:16:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
                                  "typeString": "mapping(bytes32 => address[] storage ref)"
                                }
                              },
                              "id": 4608,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4606,
                                "name": "bytes32key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4575,
                                "src": "5713:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5696:28:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 4609,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4607,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4594,
                              "src": "5725:1:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5696:31:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4610,
                                "name": "addressArrayAttr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4074,
                                "src": "5730:16:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
                                  "typeString": "mapping(bytes32 => address[] storage ref)"
                                }
                              },
                              "id": 4612,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4611,
                                "name": "bytes32key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4575,
                                "src": "5747:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5730:28:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 4616,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4615,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4613,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4594,
                                "src": "5759:1:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 4614,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5761:1:17",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "5759:3:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5730:33:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5696:67:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4618,
                        "nodeType": "ExpressionStatement",
                        "src": "5696:67:17"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4601,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4597,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4594,
                      "src": "5657:1:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4600,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4598,
                        "name": "arrayLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4582,
                        "src": "5661:11:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 4599,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5675:1:17",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "5661:15:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5657:19:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4620,
                  "initializationExpression": {
                    "assignments": [
                      4594
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4594,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4620,
                        "src": "5641:6:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4593,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5641:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4596,
                    "initialValue": {
                      "argumentTypes": null,
                      "id": 4595,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4569,
                      "src": "5650:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5641:14:17"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4603,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5678:3:17",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4602,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4594,
                        "src": "5678:1:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4604,
                    "nodeType": "ExpressionStatement",
                    "src": "5678:3:17"
                  },
                  "nodeType": "ForStatement",
                  "src": "5636:138:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "--",
                    "prefix": false,
                    "src": "5784:37:17",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4621,
                          "name": "addressArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4074,
                          "src": "5784:16:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => address[] storage ref)"
                          }
                        },
                        "id": 4623,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4622,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4575,
                          "src": "5801:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5784:28:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4624,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5784:35:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4626,
                  "nodeType": "ExpressionStatement",
                  "src": "5784:37:17"
                }
              ]
            },
            "documentation": null,
            "id": 4628,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4572,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4571,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "5456:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5456:9:17"
              }
            ],
            "name": "deleteAddressArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4570,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4567,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4628,
                  "src": "5389:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4566,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5389:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4569,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 4628,
                  "src": "5416:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4568,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5416:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5379:53:17"
            },
            "returnParameters": {
              "id": 4573,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5470:0:17"
            },
            "scope": 4847,
            "src": "5342:486:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4662,
              "nodeType": "Block",
              "src": "5980:209:17",
              "statements": [
                {
                  "assignments": [
                    4638
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4638,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4662,
                      "src": "5990:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4637,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5990:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4643,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4641,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4630,
                        "src": "6024:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4639,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "6011:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4640,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "6011:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6011:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5990:38:17"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4649,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4644,
                          "name": "addressArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4074,
                          "src": "6043:16:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => address[] storage ref)"
                          }
                        },
                        "id": 4646,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4645,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4638,
                          "src": "6060:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6043:28:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4647,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6043:35:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4648,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4632,
                      "src": "6081:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6043:43:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4657,
                  "nodeType": "IfStatement",
                  "src": "6039:116:17",
                  "trueBody": {
                    "id": 4656,
                    "nodeType": "Block",
                    "src": "6088:67:17",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4650,
                              "name": "addressArrayAttr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4074,
                              "src": "6109:16:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
                                "typeString": "mapping(bytes32 => address[] storage ref)"
                              }
                            },
                            "id": 4652,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4651,
                              "name": "bytes32key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4638,
                              "src": "6126:10:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6109:28:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 4654,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4653,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4632,
                            "src": "6138:5:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6109:35:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 4636,
                        "id": 4655,
                        "nodeType": "Return",
                        "src": "6102:42:17"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4659,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6180:1:17",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 4658,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "6172:7:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 4660,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6172:10:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 4636,
                  "id": 4661,
                  "nodeType": "Return",
                  "src": "6165:17:17"
                }
              ]
            },
            "documentation": null,
            "id": 4663,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAddressArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4633,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4630,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4663,
                  "src": "5878:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4629,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5878:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4632,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 4663,
                  "src": "5905:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4631,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5905:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5868:53:17"
            },
            "returnParameters": {
              "id": 4636,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4635,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4663,
                  "src": "5967:7:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4634,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5967:7:17",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5966:9:17"
            },
            "scope": 4847,
            "src": "5834:355:17",
            "stateMutability": "view",
            "superFunction": 7220,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4685,
              "nodeType": "Block",
              "src": "6315:94:17",
              "statements": [
                {
                  "assignments": [
                    4673
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4673,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4685,
                      "src": "6325:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4672,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6325:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4678,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4676,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4665,
                        "src": "6359:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4674,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "6346:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4675,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "6346:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4677,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6346:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6325:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4683,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4679,
                        "name": "boolAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4078,
                        "src": "6374:8:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                          "typeString": "mapping(bytes32 => bool)"
                        }
                      },
                      "id": 4681,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4680,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4673,
                        "src": "6383:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6374:20:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4682,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4667,
                      "src": "6397:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "6374:28:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4684,
                  "nodeType": "ExpressionStatement",
                  "src": "6374:28:17"
                }
              ]
            },
            "documentation": null,
            "id": 4686,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4670,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4669,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "6301:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6301:9:17"
              }
            ],
            "name": "setBooleanAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4665,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4686,
                  "src": "6234:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4664,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6234:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4667,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 4686,
                  "src": "6261:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4666,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6261:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6224:53:17"
            },
            "returnParameters": {
              "id": 4671,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6315:0:17"
            },
            "scope": 4847,
            "src": "6195:214:17",
            "stateMutability": "nonpayable",
            "superFunction": 7227,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4706,
              "nodeType": "Block",
              "src": "6518:94:17",
              "statements": [
                {
                  "assignments": [
                    4694
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4694,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4706,
                      "src": "6528:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4693,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6528:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4699,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4697,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4688,
                        "src": "6562:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4695,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "6549:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4696,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "6549:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4698,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6549:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6528:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4704,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4700,
                        "name": "boolAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4078,
                        "src": "6577:8:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                          "typeString": "mapping(bytes32 => bool)"
                        }
                      },
                      "id": 4702,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4701,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4694,
                        "src": "6586:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6577:20:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 4703,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6600:5:17",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "6577:28:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4705,
                  "nodeType": "ExpressionStatement",
                  "src": "6577:28:17"
                }
              ]
            },
            "documentation": null,
            "id": 4707,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4691,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4690,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "6504:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6504:9:17"
              }
            ],
            "name": "deleteBooleanAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4689,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4688,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4707,
                  "src": "6457:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4687,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6457:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6447:33:17"
            },
            "returnParameters": {
              "id": 4692,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6518:0:17"
            },
            "scope": 4847,
            "src": "6415:197:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4725,
              "nodeType": "Block",
              "src": "6736:93:17",
              "statements": [
                {
                  "assignments": [
                    4715
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4715,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4725,
                      "src": "6746:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4714,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6746:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4720,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4718,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4709,
                        "src": "6780:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4716,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "6767:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4717,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "6767:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6767:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6746:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4721,
                      "name": "boolAttr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4078,
                      "src": "6802:8:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                        "typeString": "mapping(bytes32 => bool)"
                      }
                    },
                    "id": 4723,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4722,
                      "name": "bytes32key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4715,
                      "src": "6811:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6802:20:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 4713,
                  "id": 4724,
                  "nodeType": "Return",
                  "src": "6795:27:17"
                }
              ]
            },
            "documentation": null,
            "id": 4726,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBooleanAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4710,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4709,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4726,
                  "src": "6657:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4708,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6657:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6647:33:17"
            },
            "returnParameters": {
              "id": 4713,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4712,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4726,
                  "src": "6726:4:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4711,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6726:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6725:6:17"
            },
            "scope": 4847,
            "src": "6618:211:17",
            "stateMutability": "view",
            "superFunction": 7234,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4749,
              "nodeType": "Block",
              "src": "6960:102:17",
              "statements": [
                {
                  "assignments": [
                    4736
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4736,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4749,
                      "src": "6970:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4735,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6970:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4741,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4739,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4728,
                        "src": "7004:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4737,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "6991:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4738,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "6991:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4740,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6991:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6970:38:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4746,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4730,
                        "src": "7049:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4742,
                          "name": "boolArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4083,
                          "src": "7018:13:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => bool[] storage ref)"
                          }
                        },
                        "id": 4744,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4743,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4736,
                          "src": "7032:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7018:25:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_storage",
                          "typeString": "bool[] storage ref"
                        }
                      },
                      "id": 4745,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7018:30:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_bool_$returns$_t_uint256_$",
                        "typeString": "function (bool) returns (uint256)"
                      }
                    },
                    "id": 4747,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7018:37:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4748,
                  "nodeType": "ExpressionStatement",
                  "src": "7018:37:17"
                }
              ]
            },
            "documentation": null,
            "id": 4750,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4733,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4732,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "6946:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6946:9:17"
              }
            ],
            "name": "setBooleanArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4731,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4728,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4750,
                  "src": "6879:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4727,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6879:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4730,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 4750,
                  "src": "6906:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4729,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6906:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6869:53:17"
            },
            "returnParameters": {
              "id": 4734,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6960:0:17"
            },
            "scope": 4847,
            "src": "6835:227:17",
            "stateMutability": "nonpayable",
            "superFunction": 7241,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4782,
              "nodeType": "Block",
              "src": "7211:198:17",
              "statements": [
                {
                  "assignments": [
                    4760
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4760,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4782,
                      "src": "7221:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4759,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7221:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4765,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4763,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4752,
                        "src": "7255:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4761,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "7242:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4762,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "7242:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4764,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7242:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7221:38:17"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4771,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4766,
                          "name": "boolArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4083,
                          "src": "7274:13:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => bool[] storage ref)"
                          }
                        },
                        "id": 4768,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4767,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4760,
                          "src": "7288:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7274:25:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_storage",
                          "typeString": "bool[] storage ref"
                        }
                      },
                      "id": 4769,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7274:32:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4770,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4754,
                      "src": "7309:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7274:40:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4779,
                  "nodeType": "IfStatement",
                  "src": "7270:110:17",
                  "trueBody": {
                    "id": 4778,
                    "nodeType": "Block",
                    "src": "7316:64:17",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4772,
                              "name": "boolArrayAttr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4083,
                              "src": "7337:13:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$dyn_storage_$",
                                "typeString": "mapping(bytes32 => bool[] storage ref)"
                              }
                            },
                            "id": 4774,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4773,
                              "name": "bytes32key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4760,
                              "src": "7351:10:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7337:25:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_storage",
                              "typeString": "bool[] storage ref"
                            }
                          },
                          "id": 4776,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4775,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4754,
                            "src": "7363:5:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7337:32:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4758,
                        "id": 4777,
                        "nodeType": "Return",
                        "src": "7330:39:17"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 4780,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7397:5:17",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 4758,
                  "id": 4781,
                  "nodeType": "Return",
                  "src": "7390:12:17"
                }
              ]
            },
            "documentation": null,
            "id": 4783,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBooleanArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4755,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4752,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4783,
                  "src": "7112:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4751,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7112:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4754,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 4783,
                  "src": "7139:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4753,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7139:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7102:53:17"
            },
            "returnParameters": {
              "id": 4758,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4757,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4783,
                  "src": "7201:4:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4756,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7201:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7200:6:17"
            },
            "scope": 4847,
            "src": "7068:341:17",
            "stateMutability": "view",
            "superFunction": 7250,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4845,
              "nodeType": "Block",
              "src": "7543:346:17",
              "statements": [
                {
                  "assignments": [
                    4793
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4793,
                      "name": "bytes32key",
                      "nodeType": "VariableDeclaration",
                      "scope": 4845,
                      "src": "7553:18:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4792,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7553:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4798,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4796,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4785,
                        "src": "7587:3:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4794,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "7574:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 4795,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "7574:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4797,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7574:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7553:38:17"
                },
                {
                  "assignments": [
                    4800
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4800,
                      "name": "arrayLength",
                      "nodeType": "VariableDeclaration",
                      "scope": 4845,
                      "src": "7601:16:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4799,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7601:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4805,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4801,
                        "name": "boolArrayAttr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4083,
                        "src": "7620:13:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$dyn_storage_$",
                          "typeString": "mapping(bytes32 => bool[] storage ref)"
                        }
                      },
                      "id": 4803,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4802,
                        "name": "bytes32key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4793,
                        "src": "7634:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7620:25:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bool_$dyn_storage",
                        "typeString": "bool[] storage ref"
                      }
                    },
                    "id": 4804,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "7620:32:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7601:51:17"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4808,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4806,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4787,
                      "src": "7667:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4807,
                      "name": "arrayLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4800,
                      "src": "7676:11:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7667:20:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4810,
                  "nodeType": "IfStatement",
                  "src": "7663:33:17",
                  "trueBody": {
                    "expression": null,
                    "functionReturnParameters": 4791,
                    "id": 4809,
                    "nodeType": "Return",
                    "src": "7689:7:17"
                  }
                },
                {
                  "body": {
                    "id": 4837,
                    "nodeType": "Block",
                    "src": "7752:86:17",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4823,
                                "name": "boolArrayAttr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4083,
                                "src": "7766:13:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$dyn_storage_$",
                                  "typeString": "mapping(bytes32 => bool[] storage ref)"
                                }
                              },
                              "id": 4826,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4824,
                                "name": "bytes32key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4793,
                                "src": "7780:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7766:25:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage",
                                "typeString": "bool[] storage ref"
                              }
                            },
                            "id": 4827,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4825,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4812,
                              "src": "7792:1:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7766:28:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4828,
                                "name": "boolArrayAttr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4083,
                                "src": "7797:13:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$dyn_storage_$",
                                  "typeString": "mapping(bytes32 => bool[] storage ref)"
                                }
                              },
                              "id": 4830,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4829,
                                "name": "bytes32key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4793,
                                "src": "7811:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7797:25:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage",
                                "typeString": "bool[] storage ref"
                              }
                            },
                            "id": 4834,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4833,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4831,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4812,
                                "src": "7823:1:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 4832,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7825:1:17",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "7823:3:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7797:30:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7766:61:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4836,
                        "nodeType": "ExpressionStatement",
                        "src": "7766:61:17"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4815,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4812,
                      "src": "7727:1:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4818,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4816,
                        "name": "arrayLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4800,
                        "src": "7731:11:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 4817,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7745:1:17",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "7731:15:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7727:19:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4838,
                  "initializationExpression": {
                    "assignments": [
                      4812
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4812,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4838,
                        "src": "7711:6:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4811,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7711:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4814,
                    "initialValue": {
                      "argumentTypes": null,
                      "id": 4813,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4787,
                      "src": "7720:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7711:14:17"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4821,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "7748:3:17",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4820,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4812,
                        "src": "7748:1:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4822,
                    "nodeType": "ExpressionStatement",
                    "src": "7748:3:17"
                  },
                  "nodeType": "ForStatement",
                  "src": "7706:132:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4843,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "--",
                    "prefix": false,
                    "src": "7848:34:17",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4839,
                          "name": "boolArrayAttr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4083,
                          "src": "7848:13:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => bool[] storage ref)"
                          }
                        },
                        "id": 4841,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4840,
                          "name": "bytes32key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4793,
                          "src": "7862:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7848:25:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_storage",
                          "typeString": "bool[] storage ref"
                        }
                      },
                      "id": 4842,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7848:32:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4844,
                  "nodeType": "ExpressionStatement",
                  "src": "7848:34:17"
                }
              ]
            },
            "documentation": null,
            "id": 4846,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4790,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4789,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4110,
                  "src": "7529:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7529:9:17"
              }
            ],
            "name": "deleteBooleanArrayAttribute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4788,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4785,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 4846,
                  "src": "7462:17:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4784,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7462:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4787,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 4846,
                  "src": "7489:10:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4786,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7489:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7452:53:17"
            },
            "returnParameters": {
              "id": 4791,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7543:0:17"
            },
            "scope": 4847,
            "src": "7415:474:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 4848,
        "src": "141:7750:17"
      }
    ],
    "src": "0:7892:17"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.3",
  "updatedAt": "2020-01-15T10:55:50.283Z"
}