{
  "fileName": "IERC777.sol",
  "contractName": "IERC777",
  "source": "pragma solidity ^0.6.0;\n\n/**\n * @dev Interface of the ERC777Token standard as defined in the EIP.\n *\n * This contract uses the\n * https://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let\n * token holders and recipients react to token movements by using setting implementers\n * for the associated interfaces in said registry. See {IERC1820Registry} and\n * {ERC1820Implementer}.\n */\ninterface IERC777 {\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the smallest part of the token that is not divisible. This\n     * means all token operations (creation, movement and destruction) must have\n     * amounts that are a multiple of this number.\n     *\n     * For most token contracts, this value will equal 1.\n     */\n    function granularity() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens owned by an account (`owner`).\n     */\n    function balanceOf(address owner) external view returns (uint256);\n\n    /**\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\n     *\n     * If send or receive hooks are registered for the caller and `recipient`,\n     * the corresponding functions will be called with `data` and empty\n     * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n     *\n     * Emits a {Sent} event.\n     *\n     * Requirements\n     *\n     * - the caller must have at least `amount` tokens.\n     * - `recipient` cannot be the zero address.\n     * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n     * interface.\n     */\n    function send(address recipient, uint256 amount, bytes calldata data) external;\n\n    /**\n     * @dev Destroys `amount` tokens from the caller's account, reducing the\n     * total supply.\n     *\n     * If a send hook is registered for the caller, the corresponding function\n     * will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n     *\n     * Emits a {Burned} event.\n     *\n     * Requirements\n     *\n     * - the caller must have at least `amount` tokens.\n     */\n    function burn(uint256 amount, bytes calldata data) external;\n\n    /**\n     * @dev Returns true if an account is an operator of `tokenHolder`.\n     * Operators can send and burn tokens on behalf of their owners. All\n     * accounts are their own operator.\n     *\n     * See {operatorSend} and {operatorBurn}.\n     */\n    function isOperatorFor(address operator, address tokenHolder) external view returns (bool);\n\n    /**\n     * @dev Make an account an operator of the caller.\n     *\n     * See {isOperatorFor}.\n     *\n     * Emits an {AuthorizedOperator} event.\n     *\n     * Requirements\n     *\n     * - `operator` cannot be calling address.\n     */\n    function authorizeOperator(address operator) external;\n\n    /**\n     * @dev Revoke an account's operator status for the caller.\n     *\n     * See {isOperatorFor} and {defaultOperators}.\n     *\n     * Emits a {RevokedOperator} event.\n     *\n     * Requirements\n     *\n     * - `operator` cannot be calling address.\n     */\n    function revokeOperator(address operator) external;\n\n    /**\n     * @dev Returns the list of default operators. These accounts are operators\n     * for all token holders, even if {authorizeOperator} was never called on\n     * them.\n     *\n     * This list is immutable, but individual holders may revoke these via\n     * {revokeOperator}, in which case {isOperatorFor} will return false.\n     */\n    function defaultOperators() external view returns (address[] memory);\n\n    /**\n     * @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n     * be an operator of `sender`.\n     *\n     * If send or receive hooks are registered for `sender` and `recipient`,\n     * the corresponding functions will be called with `data` and\n     * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n     *\n     * Emits a {Sent} event.\n     *\n     * Requirements\n     *\n     * - `sender` cannot be the zero address.\n     * - `sender` must have at least `amount` tokens.\n     * - the caller must be an operator for `sender`.\n     * - `recipient` cannot be the zero address.\n     * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n     * interface.\n     */\n    function operatorSend(\n        address sender,\n        address recipient,\n        uint256 amount,\n        bytes calldata data,\n        bytes calldata operatorData\n    ) external;\n\n    /**\n     * @dev Destroys `amount` tokens from `account`, reducing the total supply.\n     * The caller must be an operator of `account`.\n     *\n     * If a send hook is registered for `account`, the corresponding function\n     * will be called with `data` and `operatorData`. See {IERC777Sender}.\n     *\n     * Emits a {Burned} event.\n     *\n     * Requirements\n     *\n     * - `account` cannot be the zero address.\n     * - `account` must have at least `amount` tokens.\n     * - the caller must be an operator for `account`.\n     */\n    function operatorBurn(\n        address account,\n        uint256 amount,\n        bytes calldata data,\n        bytes calldata operatorData\n    ) external;\n\n    event Sent(\n        address indexed operator,\n        address indexed from,\n        address indexed to,\n        uint256 amount,\n        bytes data,\n        bytes operatorData\n    );\n\n    event Minted(address indexed operator, address indexed to, uint256 amount, bytes data, bytes operatorData);\n\n    event Burned(address indexed operator, address indexed from, uint256 amount, bytes data, bytes operatorData);\n\n    event AuthorizedOperator(address indexed operator, address indexed tokenHolder);\n\n    event RevokedOperator(address indexed operator, address indexed tokenHolder);\n}\n",
  "sourcePath": "contracts/token/ERC777/IERC777.sol",
  "sourceMap": "",
  "deployedSourceMap": "",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokenHolder",
          "type": "address"
        }
      ],
      "name": "AuthorizedOperator",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "operatorData",
          "type": "bytes"
        }
      ],
      "name": "Burned",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "operatorData",
          "type": "bytes"
        }
      ],
      "name": "Minted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokenHolder",
          "type": "address"
        }
      ],
      "name": "RevokedOperator",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "operatorData",
          "type": "bytes"
        }
      ],
      "name": "Sent",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "authorizeOperator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultOperators",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "granularity",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenHolder",
          "type": "address"
        }
      ],
      "name": "isOperatorFor",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "operatorData",
          "type": "bytes"
        }
      ],
      "name": "operatorBurn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "operatorData",
          "type": "bytes"
        }
      ],
      "name": "operatorSend",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "revokeOperator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "send",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "ast": {
    "absolutePath": "contracts/token/ERC777/IERC777.sol",
    "exportedSymbols": {
      "IERC777": [
        13833
      ]
    },
    "id": 13834,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 13676,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:95"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": {
          "id": 13677,
          "nodeType": "StructuredDocumentation",
          "src": "25:372:95",
          "text": "@dev Interface of the ERC777Token standard as defined in the EIP.\n * This contract uses the\nhttps://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let\ntoken holders and recipients react to token movements by using setting implementers\nfor the associated interfaces in said registry. See {IERC1820Registry} and\n{ERC1820Implementer}."
        },
        "fullyImplemented": false,
        "id": 13833,
        "linearizedBaseContracts": [
          13833
        ],
        "name": "IERC777",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": {
              "id": 13678,
              "nodeType": "StructuredDocumentation",
              "src": "422:54:95",
              "text": "@dev Returns the name of the token."
            },
            "functionSelector": "06fdde03",
            "id": 13683,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "name",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13679,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "494:2:95"
            },
            "returnParameters": {
              "id": 13682,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13681,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13683,
                  "src": "520:13:95",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 13680,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "520:6:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "519:15:95"
            },
            "scope": 13833,
            "src": "481:54:95",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": {
              "id": 13684,
              "nodeType": "StructuredDocumentation",
              "src": "541:102:95",
              "text": "@dev Returns the symbol of the token, usually a shorter version of the\nname."
            },
            "functionSelector": "95d89b41",
            "id": 13689,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "symbol",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13685,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "663:2:95"
            },
            "returnParameters": {
              "id": 13688,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13687,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13689,
                  "src": "689:13:95",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 13686,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "689:6:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "688:15:95"
            },
            "scope": 13833,
            "src": "648:56:95",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": {
              "id": 13690,
              "nodeType": "StructuredDocumentation",
              "src": "710:287:95",
              "text": "@dev Returns the smallest part of the token that is not divisible. This\nmeans all token operations (creation, movement and destruction) must have\namounts that are a multiple of this number.\n     * For most token contracts, this value will equal 1."
            },
            "functionSelector": "556f0dc7",
            "id": 13695,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "granularity",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13691,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1022:2:95"
            },
            "returnParameters": {
              "id": 13694,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13693,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13695,
                  "src": "1048:7:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13692,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1048:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1047:9:95"
            },
            "scope": 13833,
            "src": "1002:55:95",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": {
              "id": 13696,
              "nodeType": "StructuredDocumentation",
              "src": "1063:66:95",
              "text": "@dev Returns the amount of tokens in existence."
            },
            "functionSelector": "18160ddd",
            "id": 13701,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "totalSupply",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13697,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1154:2:95"
            },
            "returnParameters": {
              "id": 13700,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13699,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13701,
                  "src": "1180:7:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13698,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1180:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1179:9:95"
            },
            "scope": 13833,
            "src": "1134:55:95",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": {
              "id": 13702,
              "nodeType": "StructuredDocumentation",
              "src": "1195:83:95",
              "text": "@dev Returns the amount of tokens owned by an account (`owner`)."
            },
            "functionSelector": "70a08231",
            "id": 13709,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "balanceOf",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13705,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13704,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13709,
                  "src": "1302:13:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13703,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1302:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1301:15:95"
            },
            "returnParameters": {
              "id": 13708,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13707,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13709,
                  "src": "1340:7:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13706,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1340:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1339:9:95"
            },
            "scope": 13833,
            "src": "1283:66:95",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": {
              "id": 13710,
              "nodeType": "StructuredDocumentation",
              "src": "1355:585:95",
              "text": "@dev Moves `amount` tokens from the caller's account to `recipient`.\n     * If send or receive hooks are registered for the caller and `recipient`,\nthe corresponding functions will be called with `data` and empty\n`operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n     * Emits a {Sent} event.\n     * Requirements\n     * - the caller must have at least `amount` tokens.\n- `recipient` cannot be the zero address.\n- if `recipient` is a contract, it must implement the {IERC777Recipient}\ninterface."
            },
            "functionSelector": "9bd9bbc6",
            "id": 13719,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "send",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13717,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13712,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13719,
                  "src": "1959:17:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13711,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1959:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13714,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13719,
                  "src": "1978:14:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13713,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1978:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13716,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13719,
                  "src": "1994:19:95",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13715,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1994:5:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1958:56:95"
            },
            "returnParameters": {
              "id": 13718,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2023:0:95"
            },
            "scope": 13833,
            "src": "1945:79:95",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": {
              "id": 13720,
              "nodeType": "StructuredDocumentation",
              "src": "2030:404:95",
              "text": "@dev Destroys `amount` tokens from the caller's account, reducing the\ntotal supply.\n     * If a send hook is registered for the caller, the corresponding function\nwill be called with `data` and empty `operatorData`. See {IERC777Sender}.\n     * Emits a {Burned} event.\n     * Requirements\n     * - the caller must have at least `amount` tokens."
            },
            "functionSelector": "fe9d9303",
            "id": 13727,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "burn",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13725,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13722,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13727,
                  "src": "2453:14:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13721,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2453:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13724,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13727,
                  "src": "2469:19:95",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13723,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2469:5:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2452:37:95"
            },
            "returnParameters": {
              "id": 13726,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2498:0:95"
            },
            "scope": 13833,
            "src": "2439:60:95",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": {
              "id": 13728,
              "nodeType": "StructuredDocumentation",
              "src": "2505:249:95",
              "text": "@dev Returns true if an account is an operator of `tokenHolder`.\nOperators can send and burn tokens on behalf of their owners. All\naccounts are their own operator.\n     * See {operatorSend} and {operatorBurn}."
            },
            "functionSelector": "d95b6371",
            "id": 13737,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "isOperatorFor",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13733,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13730,
                  "mutability": "mutable",
                  "name": "operator",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13737,
                  "src": "2782:16:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13729,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2782:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13732,
                  "mutability": "mutable",
                  "name": "tokenHolder",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13737,
                  "src": "2800:19:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13731,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2800:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2781:39:95"
            },
            "returnParameters": {
              "id": 13736,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13735,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13737,
                  "src": "2844:4:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13734,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2844:4:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2843:6:95"
            },
            "scope": 13833,
            "src": "2759:91:95",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": {
              "id": 13738,
              "nodeType": "StructuredDocumentation",
              "src": "2856:233:95",
              "text": "@dev Make an account an operator of the caller.\n     * See {isOperatorFor}.\n     * Emits an {AuthorizedOperator} event.\n     * Requirements\n     * - `operator` cannot be calling address."
            },
            "functionSelector": "959b8c3f",
            "id": 13743,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "authorizeOperator",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13741,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13740,
                  "mutability": "mutable",
                  "name": "operator",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13743,
                  "src": "3121:16:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13739,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3121:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3120:18:95"
            },
            "returnParameters": {
              "id": 13742,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3147:0:95"
            },
            "scope": 13833,
            "src": "3094:54:95",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": {
              "id": 13744,
              "nodeType": "StructuredDocumentation",
              "src": "3154:261:95",
              "text": "@dev Revoke an account's operator status for the caller.\n     * See {isOperatorFor} and {defaultOperators}.\n     * Emits a {RevokedOperator} event.\n     * Requirements\n     * - `operator` cannot be calling address."
            },
            "functionSelector": "fad8b32a",
            "id": 13749,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "revokeOperator",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13747,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13746,
                  "mutability": "mutable",
                  "name": "operator",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13749,
                  "src": "3444:16:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13745,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3444:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3443:18:95"
            },
            "returnParameters": {
              "id": 13748,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3470:0:95"
            },
            "scope": 13833,
            "src": "3420:51:95",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": {
              "id": 13750,
              "nodeType": "StructuredDocumentation",
              "src": "3477:338:95",
              "text": "@dev Returns the list of default operators. These accounts are operators\nfor all token holders, even if {authorizeOperator} was never called on\nthem.\n     * This list is immutable, but individual holders may revoke these via\n{revokeOperator}, in which case {isOperatorFor} will return false."
            },
            "functionSelector": "06e48538",
            "id": 13756,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "defaultOperators",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13751,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3845:2:95"
            },
            "returnParameters": {
              "id": 13755,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13754,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13756,
                  "src": "3871:16:95",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 13752,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3871:7:95",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 13753,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3871:9:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3870:18:95"
            },
            "scope": 13833,
            "src": "3820:69:95",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": {
              "id": 13757,
              "nodeType": "StructuredDocumentation",
              "src": "3895:714:95",
              "text": "@dev Moves `amount` tokens from `sender` to `recipient`. The caller must\nbe an operator of `sender`.\n     * If send or receive hooks are registered for `sender` and `recipient`,\nthe corresponding functions will be called with `data` and\n`operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n     * Emits a {Sent} event.\n     * Requirements\n     * - `sender` cannot be the zero address.\n- `sender` must have at least `amount` tokens.\n- the caller must be an operator for `sender`.\n- `recipient` cannot be the zero address.\n- if `recipient` is a contract, it must implement the {IERC777Recipient}\ninterface."
            },
            "functionSelector": "62ad1b83",
            "id": 13770,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "operatorSend",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13768,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13759,
                  "mutability": "mutable",
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13770,
                  "src": "4645:14:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13758,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4645:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13761,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13770,
                  "src": "4669:17:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13760,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4669:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13763,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13770,
                  "src": "4696:14:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13762,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4696:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13765,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13770,
                  "src": "4720:19:95",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13764,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4720:5:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13767,
                  "mutability": "mutable",
                  "name": "operatorData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13770,
                  "src": "4749:27:95",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13766,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4749:5:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4635:147:95"
            },
            "returnParameters": {
              "id": 13769,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4791:0:95"
            },
            "scope": 13833,
            "src": "4614:178:95",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": {
              "id": 13771,
              "nodeType": "StructuredDocumentation",
              "src": "4798:532:95",
              "text": "@dev Destroys `amount` tokens from `account`, reducing the total supply.\nThe caller must be an operator of `account`.\n     * If a send hook is registered for `account`, the corresponding function\nwill be called with `data` and `operatorData`. See {IERC777Sender}.\n     * Emits a {Burned} event.\n     * Requirements\n     * - `account` cannot be the zero address.\n- `account` must have at least `amount` tokens.\n- the caller must be an operator for `account`."
            },
            "functionSelector": "fc673c4f",
            "id": 13782,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "operatorBurn",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13780,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13773,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13782,
                  "src": "5366:15:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13772,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5366:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13775,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13782,
                  "src": "5391:14:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13774,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5391:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13777,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13782,
                  "src": "5415:19:95",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13776,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5415:5:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13779,
                  "mutability": "mutable",
                  "name": "operatorData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13782,
                  "src": "5444:27:95",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13778,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5444:5:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5356:121:95"
            },
            "returnParameters": {
              "id": 13781,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5486:0:95"
            },
            "scope": 13833,
            "src": "5335:152:95",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 13796,
            "name": "Sent",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 13795,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13784,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "operator",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13796,
                  "src": "5513:24:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13783,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5513:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13786,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13796,
                  "src": "5547:20:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13785,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5547:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13788,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13796,
                  "src": "5577:18:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13787,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5577:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13790,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13796,
                  "src": "5605:14:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13789,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5605:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13792,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13796,
                  "src": "5629:10:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13791,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5629:5:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13794,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "operatorData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13796,
                  "src": "5649:18:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13793,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5649:5:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5503:170:95"
            },
            "src": "5493:181:95"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 13808,
            "name": "Minted",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 13807,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13798,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "operator",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13808,
                  "src": "5693:24:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13797,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5693:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13800,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13808,
                  "src": "5719:18:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13799,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5719:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13802,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13808,
                  "src": "5739:14:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13801,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5739:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13804,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13808,
                  "src": "5755:10:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13803,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5755:5:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13806,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "operatorData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13808,
                  "src": "5767:18:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13805,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5767:5:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5692:94:95"
            },
            "src": "5680:107:95"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 13820,
            "name": "Burned",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 13819,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13810,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "operator",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13820,
                  "src": "5806:24:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13809,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5806:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13812,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13820,
                  "src": "5832:20:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13811,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5832:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13814,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13820,
                  "src": "5854:14:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13813,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5854:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13816,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13820,
                  "src": "5870:10:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13815,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5870:5:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13818,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "operatorData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13820,
                  "src": "5882:18:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13817,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5882:5:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5805:96:95"
            },
            "src": "5793:109:95"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 13826,
            "name": "AuthorizedOperator",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 13825,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13822,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "operator",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13826,
                  "src": "5933:24:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13821,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5933:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13824,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "tokenHolder",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13826,
                  "src": "5959:27:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13823,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5959:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5932:55:95"
            },
            "src": "5908:80:95"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 13832,
            "name": "RevokedOperator",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 13831,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13828,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "operator",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13832,
                  "src": "6016:24:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13827,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6016:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13830,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "tokenHolder",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13832,
                  "src": "6042:27:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13829,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6042:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6015:55:95"
            },
            "src": "5994:77:95"
          }
        ],
        "scope": 13834,
        "src": "398:5675:95"
      }
    ],
    "src": "0:6074:95"
  },
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "compiler": {
    "name": "solc",
    "version": "0.6.7+commit.b8d736ae.Emscripten.clang",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "evmVersion": "petersburg"
  }
}
