{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "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"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "allSourcePaths": {
    "72": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
    "75": "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol",
    "76": "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol",
    "77": "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol",
    "83": "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol"
  },
  "ast": {
    "absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol",
    "exportedSymbols": {
      "AddressUpgradeable": [
        16246
      ],
      "ContextUpgradeable": [
        26020
      ],
      "ERC20Upgradeable": [
        21434
      ],
      "IERC20MetadataUpgradeable": [
        27212
      ],
      "IERC20Upgradeable": [
        27187
      ],
      "Initializable": [
        19544
      ]
    },
    "id": 21435,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 20823,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "105:23:75"
      },
      {
        "absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol",
        "file": "./IERC20Upgradeable.sol",
        "id": 20824,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 21435,
        "sourceUnit": 27188,
        "src": "130:33:75",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol",
        "file": "./extensions/IERC20MetadataUpgradeable.sol",
        "id": 20825,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 21435,
        "sourceUnit": 27213,
        "src": "164:52:75",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
        "file": "../../utils/ContextUpgradeable.sol",
        "id": 20826,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 21435,
        "sourceUnit": 26021,
        "src": "217:44:75",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
        "file": "../../proxy/utils/Initializable.sol",
        "id": 20827,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 21435,
        "sourceUnit": 19545,
        "src": "262:45:75",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 20829,
              "name": "Initializable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 19544,
              "src": "1511:13:75"
            },
            "id": 20830,
            "nodeType": "InheritanceSpecifier",
            "src": "1511:13:75"
          },
          {
            "baseName": {
              "id": 20831,
              "name": "ContextUpgradeable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 26020,
              "src": "1526:18:75"
            },
            "id": 20832,
            "nodeType": "InheritanceSpecifier",
            "src": "1526:18:75"
          },
          {
            "baseName": {
              "id": 20833,
              "name": "IERC20Upgradeable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 27187,
              "src": "1546:17:75"
            },
            "id": 20834,
            "nodeType": "InheritanceSpecifier",
            "src": "1546:17:75"
          },
          {
            "baseName": {
              "id": 20835,
              "name": "IERC20MetadataUpgradeable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 27212,
              "src": "1565:25:75"
            },
            "id": 20836,
            "nodeType": "InheritanceSpecifier",
            "src": "1565:25:75"
          }
        ],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 20828,
          "nodeType": "StructuredDocumentation",
          "src": "309:1172:75",
          "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."
        },
        "fullyImplemented": true,
        "id": 21434,
        "linearizedBaseContracts": [
          21434,
          27212,
          27187,
          26020,
          19544
        ],
        "name": "ERC20Upgradeable",
        "nameLocation": "1491:16:75",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 20840,
            "mutability": "mutable",
            "name": "_balances",
            "nameLocation": "1633:9:75",
            "nodeType": "VariableDeclaration",
            "scope": 21434,
            "src": "1597:45:75",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 20839,
              "keyType": {
                "id": 20837,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1605:7:75",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1597:27:75",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 20838,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1616:7:75",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 20846,
            "mutability": "mutable",
            "name": "_allowances",
            "nameLocation": "1705:11:75",
            "nodeType": "VariableDeclaration",
            "scope": 21434,
            "src": "1649:67:75",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
              "typeString": "mapping(address => mapping(address => uint256))"
            },
            "typeName": {
              "id": 20845,
              "keyType": {
                "id": 20841,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1657:7:75",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1649:47:75",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                "typeString": "mapping(address => mapping(address => uint256))"
              },
              "valueType": {
                "id": 20844,
                "keyType": {
                  "id": 20842,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1676:7:75",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "1668:27:75",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "valueType": {
                  "id": 20843,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1687:7:75",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 20848,
            "mutability": "mutable",
            "name": "_totalSupply",
            "nameLocation": "1739:12:75",
            "nodeType": "VariableDeclaration",
            "scope": 21434,
            "src": "1723:28:75",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 20847,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1723:7:75",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 20850,
            "mutability": "mutable",
            "name": "_name",
            "nameLocation": "1773:5:75",
            "nodeType": "VariableDeclaration",
            "scope": 21434,
            "src": "1758:20:75",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 20849,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1758:6:75",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 20852,
            "mutability": "mutable",
            "name": "_symbol",
            "nameLocation": "1799:7:75",
            "nodeType": "VariableDeclaration",
            "scope": 21434,
            "src": "1784:22:75",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 20851,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1784:6:75",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 20867,
              "nodeType": "Block",
              "src": "2208:55:75",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 20863,
                        "name": "name_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20855,
                        "src": "2241:5:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 20864,
                        "name": "symbol_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20857,
                        "src": "2248:7:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 20862,
                      "name": "__ERC20_init_unchained",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20886,
                      "src": "2218:22:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory,string memory)"
                      }
                    },
                    "id": 20865,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2218:38:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20866,
                  "nodeType": "ExpressionStatement",
                  "src": "2218:38:75"
                }
              ]
            },
            "documentation": {
              "id": 20853,
              "nodeType": "StructuredDocumentation",
              "src": "1813:298:75",
              "text": " @dev Sets the values for {name} and {symbol}.\n The default value of {decimals} is 18. To select a different value for\n {decimals} you should overload it.\n All two of these values are immutable: they can only be set once during\n construction."
            },
            "id": 20868,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 20860,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 20859,
                  "name": "onlyInitializing",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 19528,
                  "src": "2191:16:75"
                },
                "nodeType": "ModifierInvocation",
                "src": "2191:16:75"
              }
            ],
            "name": "__ERC20_init",
            "nameLocation": "2125:12:75",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 20858,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20855,
                  "mutability": "mutable",
                  "name": "name_",
                  "nameLocation": "2152:5:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 20868,
                  "src": "2138:19:75",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20854,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2138:6:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20857,
                  "mutability": "mutable",
                  "name": "symbol_",
                  "nameLocation": "2173:7:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 20868,
                  "src": "2159:21:75",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20856,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2159:6:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2137:44:75"
            },
            "returnParameters": {
              "id": 20861,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2208:0:75"
            },
            "scope": 21434,
            "src": "2116:147:75",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 20885,
              "nodeType": "Block",
              "src": "2371:57:75",
              "statements": [
                {
                  "expression": {
                    "id": 20879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 20877,
                      "name": "_name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20850,
                      "src": "2381:5:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 20878,
                      "name": "name_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20870,
                      "src": "2389:5:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "2381:13:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 20880,
                  "nodeType": "ExpressionStatement",
                  "src": "2381:13:75"
                },
                {
                  "expression": {
                    "id": 20883,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 20881,
                      "name": "_symbol",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20852,
                      "src": "2404:7:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 20882,
                      "name": "symbol_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20872,
                      "src": "2414:7:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "2404:17:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 20884,
                  "nodeType": "ExpressionStatement",
                  "src": "2404:17:75"
                }
              ]
            },
            "id": 20886,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 20875,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 20874,
                  "name": "onlyInitializing",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 19528,
                  "src": "2354:16:75"
                },
                "nodeType": "ModifierInvocation",
                "src": "2354:16:75"
              }
            ],
            "name": "__ERC20_init_unchained",
            "nameLocation": "2278:22:75",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 20873,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20870,
                  "mutability": "mutable",
                  "name": "name_",
                  "nameLocation": "2315:5:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 20886,
                  "src": "2301:19:75",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20869,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2301:6:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20872,
                  "mutability": "mutable",
                  "name": "symbol_",
                  "nameLocation": "2336:7:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 20886,
                  "src": "2322:21:75",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20871,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2322:6:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2300:44:75"
            },
            "returnParameters": {
              "id": 20876,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2371:0:75"
            },
            "scope": 21434,
            "src": "2269:159:75",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              27199
            ],
            "body": {
              "id": 20895,
              "nodeType": "Block",
              "src": "2562:29:75",
              "statements": [
                {
                  "expression": {
                    "id": 20893,
                    "name": "_name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 20850,
                    "src": "2579:5:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 20892,
                  "id": 20894,
                  "nodeType": "Return",
                  "src": "2572:12:75"
                }
              ]
            },
            "documentation": {
              "id": 20887,
              "nodeType": "StructuredDocumentation",
              "src": "2434:54:75",
              "text": " @dev Returns the name of the token."
            },
            "functionSelector": "06fdde03",
            "id": 20896,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "name",
            "nameLocation": "2502:4:75",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 20889,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2529:8:75"
            },
            "parameters": {
              "id": 20888,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2506:2:75"
            },
            "returnParameters": {
              "id": 20892,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20891,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 20896,
                  "src": "2547:13:75",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20890,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2547:6:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2546:15:75"
            },
            "scope": 21434,
            "src": "2493:98:75",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              27205
            ],
            "body": {
              "id": 20905,
              "nodeType": "Block",
              "src": "2775:31:75",
              "statements": [
                {
                  "expression": {
                    "id": 20903,
                    "name": "_symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 20852,
                    "src": "2792:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 20902,
                  "id": 20904,
                  "nodeType": "Return",
                  "src": "2785:14:75"
                }
              ]
            },
            "documentation": {
              "id": 20897,
              "nodeType": "StructuredDocumentation",
              "src": "2597:102:75",
              "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name."
            },
            "functionSelector": "95d89b41",
            "id": 20906,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "symbol",
            "nameLocation": "2713:6:75",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 20899,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2742:8:75"
            },
            "parameters": {
              "id": 20898,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2719:2:75"
            },
            "returnParameters": {
              "id": 20902,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20901,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 20906,
                  "src": "2760:13:75",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20900,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2760:6:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2759:15:75"
            },
            "scope": 21434,
            "src": "2704:102:75",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              27211
            ],
            "body": {
              "id": 20915,
              "nodeType": "Block",
              "src": "3495:26:75",
              "statements": [
                {
                  "expression": {
                    "hexValue": "3138",
                    "id": 20913,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3512:2:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_18_by_1",
                      "typeString": "int_const 18"
                    },
                    "value": "18"
                  },
                  "functionReturnParameters": 20912,
                  "id": 20914,
                  "nodeType": "Return",
                  "src": "3505:9:75"
                }
              ]
            },
            "documentation": {
              "id": 20907,
              "nodeType": "StructuredDocumentation",
              "src": "2812:613:75",
              "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless this function is\n overridden;\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."
            },
            "functionSelector": "313ce567",
            "id": 20916,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "decimals",
            "nameLocation": "3439:8:75",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 20909,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3470:8:75"
            },
            "parameters": {
              "id": 20908,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3447:2:75"
            },
            "returnParameters": {
              "id": 20912,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20911,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 20916,
                  "src": "3488:5:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 20910,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "3488:5:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3487:7:75"
            },
            "scope": 21434,
            "src": "3430:91:75",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              27118
            ],
            "body": {
              "id": 20925,
              "nodeType": "Block",
              "src": "3651:36:75",
              "statements": [
                {
                  "expression": {
                    "id": 20923,
                    "name": "_totalSupply",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 20848,
                    "src": "3668:12:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 20922,
                  "id": 20924,
                  "nodeType": "Return",
                  "src": "3661:19:75"
                }
              ]
            },
            "documentation": {
              "id": 20917,
              "nodeType": "StructuredDocumentation",
              "src": "3527:49:75",
              "text": " @dev See {IERC20-totalSupply}."
            },
            "functionSelector": "18160ddd",
            "id": 20926,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "totalSupply",
            "nameLocation": "3590:11:75",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 20919,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3624:8:75"
            },
            "parameters": {
              "id": 20918,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3601:2:75"
            },
            "returnParameters": {
              "id": 20922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20921,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 20926,
                  "src": "3642:7:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20920,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3642:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3641:9:75"
            },
            "scope": 21434,
            "src": "3581:106:75",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              27126
            ],
            "body": {
              "id": 20939,
              "nodeType": "Block",
              "src": "3828:42:75",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 20935,
                      "name": "_balances",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20840,
                      "src": "3845:9:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 20937,
                    "indexExpression": {
                      "id": 20936,
                      "name": "account",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20929,
                      "src": "3855:7:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3845:18:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 20934,
                  "id": 20938,
                  "nodeType": "Return",
                  "src": "3838:25:75"
                }
              ]
            },
            "documentation": {
              "id": 20927,
              "nodeType": "StructuredDocumentation",
              "src": "3693:47:75",
              "text": " @dev See {IERC20-balanceOf}."
            },
            "functionSelector": "70a08231",
            "id": 20940,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "balanceOf",
            "nameLocation": "3754:9:75",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 20931,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3801:8:75"
            },
            "parameters": {
              "id": 20930,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20929,
                  "mutability": "mutable",
                  "name": "account",
                  "nameLocation": "3772:7:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 20940,
                  "src": "3764:15:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20928,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3764:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3763:17:75"
            },
            "returnParameters": {
              "id": 20934,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20933,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 20940,
                  "src": "3819:7:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20932,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3819:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3818:9:75"
            },
            "scope": 21434,
            "src": "3745:125:75",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              27136
            ],
            "body": {
              "id": 20964,
              "nodeType": "Block",
              "src": "4151:104:75",
              "statements": [
                {
                  "assignments": [
                    20952
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 20952,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "4169:5:75",
                      "nodeType": "VariableDeclaration",
                      "scope": 20964,
                      "src": "4161:13:75",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 20951,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4161:7:75",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 20955,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 20953,
                      "name": "_msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26005,
                      "src": "4177:10:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                        "typeString": "function () view returns (address)"
                      }
                    },
                    "id": 20954,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4177:12:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4161:28:75"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 20957,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20952,
                        "src": "4209:5:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 20958,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20943,
                        "src": "4216:2:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 20959,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20945,
                        "src": "4220:6:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 20956,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21190,
                      "src": "4199:9:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 20960,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4199:28:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20961,
                  "nodeType": "ExpressionStatement",
                  "src": "4199:28:75"
                },
                {
                  "expression": {
                    "hexValue": "74727565",
                    "id": 20962,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4244:4:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 20950,
                  "id": 20963,
                  "nodeType": "Return",
                  "src": "4237:11:75"
                }
              ]
            },
            "documentation": {
              "id": 20941,
              "nodeType": "StructuredDocumentation",
              "src": "3876:185:75",
              "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `amount`."
            },
            "functionSelector": "a9059cbb",
            "id": 20965,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transfer",
            "nameLocation": "4075:8:75",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 20947,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4127:8:75"
            },
            "parameters": {
              "id": 20946,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20943,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "4092:2:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 20965,
                  "src": "4084:10:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20942,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4084:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20945,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "4104:6:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 20965,
                  "src": "4096:14:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20944,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4096:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4083:28:75"
            },
            "returnParameters": {
              "id": 20950,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20949,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 20965,
                  "src": "4145:4:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20948,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4145:4:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4144:6:75"
            },
            "scope": 21434,
            "src": "4066:189:75",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              27146
            ],
            "body": {
              "id": 20982,
              "nodeType": "Block",
              "src": "4411:51:75",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "baseExpression": {
                        "id": 20976,
                        "name": "_allowances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20846,
                        "src": "4428:11:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                          "typeString": "mapping(address => mapping(address => uint256))"
                        }
                      },
                      "id": 20978,
                      "indexExpression": {
                        "id": 20977,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20968,
                        "src": "4440:5:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4428:18:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 20980,
                    "indexExpression": {
                      "id": 20979,
                      "name": "spender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20970,
                      "src": "4447:7:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4428:27:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 20975,
                  "id": 20981,
                  "nodeType": "Return",
                  "src": "4421:34:75"
                }
              ]
            },
            "documentation": {
              "id": 20966,
              "nodeType": "StructuredDocumentation",
              "src": "4261:47:75",
              "text": " @dev See {IERC20-allowance}."
            },
            "functionSelector": "dd62ed3e",
            "id": 20983,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "allowance",
            "nameLocation": "4322:9:75",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 20972,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4384:8:75"
            },
            "parameters": {
              "id": 20971,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20968,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "4340:5:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 20983,
                  "src": "4332:13:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20967,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4332:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20970,
                  "mutability": "mutable",
                  "name": "spender",
                  "nameLocation": "4355:7:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 20983,
                  "src": "4347:15:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20969,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4347:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4331:32:75"
            },
            "returnParameters": {
              "id": 20975,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20974,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 20983,
                  "src": "4402:7:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20973,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4402:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4401:9:75"
            },
            "scope": 21434,
            "src": "4313:149:75",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              27156
            ],
            "body": {
              "id": 21007,
              "nodeType": "Block",
              "src": "4859:108:75",
              "statements": [
                {
                  "assignments": [
                    20995
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 20995,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "4877:5:75",
                      "nodeType": "VariableDeclaration",
                      "scope": 21007,
                      "src": "4869:13:75",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 20994,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4869:7:75",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 20998,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 20996,
                      "name": "_msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26005,
                      "src": "4885:10:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                        "typeString": "function () view returns (address)"
                      }
                    },
                    "id": 20997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4885:12:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4869:28:75"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 21000,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20995,
                        "src": "4916:5:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21001,
                        "name": "spender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20986,
                        "src": "4923:7:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21002,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20988,
                        "src": "4932:6:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 20999,
                      "name": "_approve",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21363,
                      "src": "4907:8:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21003,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4907:32:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21004,
                  "nodeType": "ExpressionStatement",
                  "src": "4907:32:75"
                },
                {
                  "expression": {
                    "hexValue": "74727565",
                    "id": 21005,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4956:4:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 20993,
                  "id": 21006,
                  "nodeType": "Return",
                  "src": "4949:11:75"
                }
              ]
            },
            "documentation": {
              "id": 20984,
              "nodeType": "StructuredDocumentation",
              "src": "4468:297:75",
              "text": " @dev See {IERC20-approve}.\n NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."
            },
            "functionSelector": "095ea7b3",
            "id": 21008,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "approve",
            "nameLocation": "4779:7:75",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 20990,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4835:8:75"
            },
            "parameters": {
              "id": 20989,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20986,
                  "mutability": "mutable",
                  "name": "spender",
                  "nameLocation": "4795:7:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21008,
                  "src": "4787:15:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20985,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4787:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20988,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "4812:6:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21008,
                  "src": "4804:14:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20987,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4804:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4786:33:75"
            },
            "returnParameters": {
              "id": 20993,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20992,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 21008,
                  "src": "4853:4:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20991,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4853:4:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4852:6:75"
            },
            "scope": 21434,
            "src": "4770:197:75",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              27168
            ],
            "body": {
              "id": 21040,
              "nodeType": "Block",
              "src": "5662:153:75",
              "statements": [
                {
                  "assignments": [
                    21022
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21022,
                      "mutability": "mutable",
                      "name": "spender",
                      "nameLocation": "5680:7:75",
                      "nodeType": "VariableDeclaration",
                      "scope": 21040,
                      "src": "5672:15:75",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 21021,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5672:7:75",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 21025,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 21023,
                      "name": "_msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26005,
                      "src": "5690:10:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                        "typeString": "function () view returns (address)"
                      }
                    },
                    "id": 21024,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5690:12:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5672:30:75"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 21027,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21011,
                        "src": "5728:4:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21028,
                        "name": "spender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21022,
                        "src": "5734:7:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21029,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21015,
                        "src": "5743:6:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21026,
                      "name": "_spendAllowance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21406,
                      "src": "5712:15:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21030,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5712:38:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21031,
                  "nodeType": "ExpressionStatement",
                  "src": "5712:38:75"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 21033,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21011,
                        "src": "5770:4:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21034,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21013,
                        "src": "5776:2:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21035,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21015,
                        "src": "5780:6:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21032,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21190,
                      "src": "5760:9:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5760:27:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21037,
                  "nodeType": "ExpressionStatement",
                  "src": "5760:27:75"
                },
                {
                  "expression": {
                    "hexValue": "74727565",
                    "id": 21038,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5804:4:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 21020,
                  "id": 21039,
                  "nodeType": "Return",
                  "src": "5797:11:75"
                }
              ]
            },
            "documentation": {
              "id": 21009,
              "nodeType": "StructuredDocumentation",
              "src": "4973:551:75",
              "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`.\n - the caller must have allowance for ``from``'s tokens of at least\n `amount`."
            },
            "functionSelector": "23b872dd",
            "id": 21041,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transferFrom",
            "nameLocation": "5538:12:75",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 21017,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5638:8:75"
            },
            "parameters": {
              "id": 21016,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21011,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "5568:4:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21041,
                  "src": "5560:12:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21010,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5560:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21013,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "5590:2:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21041,
                  "src": "5582:10:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21012,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5582:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21015,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "5610:6:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21041,
                  "src": "5602:14:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21014,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5602:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5550:72:75"
            },
            "returnParameters": {
              "id": 21020,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21019,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 21041,
                  "src": "5656:4:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21018,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5656:4:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5655:6:75"
            },
            "scope": 21434,
            "src": "5529:286:75",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21070,
              "nodeType": "Block",
              "src": "6304:142:75",
              "statements": [
                {
                  "assignments": [
                    21052
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21052,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "6322:5:75",
                      "nodeType": "VariableDeclaration",
                      "scope": 21070,
                      "src": "6314:13:75",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 21051,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6314:7:75",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 21055,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 21053,
                      "name": "_msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26005,
                      "src": "6330:10:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                        "typeString": "function () view returns (address)"
                      }
                    },
                    "id": 21054,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6330:12:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6314:28:75"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 21057,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21052,
                        "src": "6361:5:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21058,
                        "name": "spender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21044,
                        "src": "6368:7:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 21065,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 21059,
                              "name": "_allowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20846,
                              "src": "6377:11:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 21061,
                            "indexExpression": {
                              "id": 21060,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21052,
                              "src": "6389:5:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6377:18:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 21063,
                          "indexExpression": {
                            "id": 21062,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21044,
                            "src": "6396:7:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6377:27:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "id": 21064,
                          "name": "addedValue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21046,
                          "src": "6407:10:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6377:40:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21056,
                      "name": "_approve",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21363,
                      "src": "6352:8:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21066,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6352:66:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21067,
                  "nodeType": "ExpressionStatement",
                  "src": "6352:66:75"
                },
                {
                  "expression": {
                    "hexValue": "74727565",
                    "id": 21068,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6435:4:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 21050,
                  "id": 21069,
                  "nodeType": "Return",
                  "src": "6428:11:75"
                }
              ]
            },
            "documentation": {
              "id": 21042,
              "nodeType": "StructuredDocumentation",
              "src": "5821:384:75",
              "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."
            },
            "functionSelector": "39509351",
            "id": 21071,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "increaseAllowance",
            "nameLocation": "6219:17:75",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21047,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21044,
                  "mutability": "mutable",
                  "name": "spender",
                  "nameLocation": "6245:7:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21071,
                  "src": "6237:15:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21043,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6237:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21046,
                  "mutability": "mutable",
                  "name": "addedValue",
                  "nameLocation": "6262:10:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21071,
                  "src": "6254:18:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21045,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6254:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6236:37:75"
            },
            "returnParameters": {
              "id": 21050,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21049,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 21071,
                  "src": "6298:4:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21048,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6298:4:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6297:6:75"
            },
            "scope": 21434,
            "src": "6210:236:75",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21112,
              "nodeType": "Block",
              "src": "7032:330:75",
              "statements": [
                {
                  "assignments": [
                    21082
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21082,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "7050:5:75",
                      "nodeType": "VariableDeclaration",
                      "scope": 21112,
                      "src": "7042:13:75",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 21081,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7042:7:75",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 21085,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 21083,
                      "name": "_msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26005,
                      "src": "7058:10:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                        "typeString": "function () view returns (address)"
                      }
                    },
                    "id": 21084,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7058:12:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7042:28:75"
                },
                {
                  "assignments": [
                    21087
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21087,
                      "mutability": "mutable",
                      "name": "currentAllowance",
                      "nameLocation": "7088:16:75",
                      "nodeType": "VariableDeclaration",
                      "scope": 21112,
                      "src": "7080:24:75",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21086,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7080:7:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 21093,
                  "initialValue": {
                    "baseExpression": {
                      "baseExpression": {
                        "id": 21088,
                        "name": "_allowances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20846,
                        "src": "7107:11:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                          "typeString": "mapping(address => mapping(address => uint256))"
                        }
                      },
                      "id": 21090,
                      "indexExpression": {
                        "id": 21089,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21082,
                        "src": "7119:5:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7107:18:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 21092,
                    "indexExpression": {
                      "id": 21091,
                      "name": "spender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21074,
                      "src": "7126:7:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7107:27:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7080:54:75"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 21097,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 21095,
                          "name": "currentAllowance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21087,
                          "src": "7152:16:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "id": 21096,
                          "name": "subtractedValue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21076,
                          "src": "7172:15:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7152:35:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
                        "id": 21098,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7189:39:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                          "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                        },
                        "value": "ERC20: decreased allowance below zero"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                          "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                        }
                      ],
                      "id": 21094,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "7144:7:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21099,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7144:85:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21100,
                  "nodeType": "ExpressionStatement",
                  "src": "7144:85:75"
                },
                {
                  "id": 21109,
                  "nodeType": "UncheckedBlock",
                  "src": "7239:95:75",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 21102,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21082,
                            "src": "7272:5:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21103,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21074,
                            "src": "7279:7:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21104,
                              "name": "currentAllowance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21087,
                              "src": "7288:16:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 21105,
                              "name": "subtractedValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21076,
                              "src": "7307:15:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7288:34:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 21101,
                          "name": "_approve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21363,
                          "src": "7263:8:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 21107,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7263:60:75",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 21108,
                      "nodeType": "ExpressionStatement",
                      "src": "7263:60:75"
                    }
                  ]
                },
                {
                  "expression": {
                    "hexValue": "74727565",
                    "id": 21110,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7351:4:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 21080,
                  "id": 21111,
                  "nodeType": "Return",
                  "src": "7344:11:75"
                }
              ]
            },
            "documentation": {
              "id": 21072,
              "nodeType": "StructuredDocumentation",
              "src": "6452:476:75",
              "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."
            },
            "functionSelector": "a457c2d7",
            "id": 21113,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "decreaseAllowance",
            "nameLocation": "6942:17:75",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21077,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21074,
                  "mutability": "mutable",
                  "name": "spender",
                  "nameLocation": "6968:7:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21113,
                  "src": "6960:15:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21073,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6960:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21076,
                  "mutability": "mutable",
                  "name": "subtractedValue",
                  "nameLocation": "6985:15:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21113,
                  "src": "6977:23:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21075,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6977:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6959:42:75"
            },
            "returnParameters": {
              "id": 21080,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21079,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 21113,
                  "src": "7026:4:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21078,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7026:4:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7025:6:75"
            },
            "scope": 21434,
            "src": "6933:429:75",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21189,
              "nodeType": "Block",
              "src": "7933:543:75",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 21129,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 21124,
                          "name": "from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21116,
                          "src": "7951:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 21127,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7967:1:75",
                              "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": 21126,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7959:7:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 21125,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7959:7:75",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 21128,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7959:10:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "7951:18:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373",
                        "id": 21130,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7971:39:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                          "typeString": "literal_string \"ERC20: transfer from the zero address\""
                        },
                        "value": "ERC20: transfer from the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                          "typeString": "literal_string \"ERC20: transfer from the zero address\""
                        }
                      ],
                      "id": 21123,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "7943:7:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21131,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7943:68:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21132,
                  "nodeType": "ExpressionStatement",
                  "src": "7943:68:75"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 21139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 21134,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21118,
                          "src": "8029:2:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 21137,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8043:1:75",
                              "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": 21136,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8035:7:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 21135,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8035:7:75",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 21138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8035:10:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "8029:16:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373",
                        "id": 21140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8047:37:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                          "typeString": "literal_string \"ERC20: transfer to the zero address\""
                        },
                        "value": "ERC20: transfer to the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                          "typeString": "literal_string \"ERC20: transfer to the zero address\""
                        }
                      ],
                      "id": 21133,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "8021:7:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21141,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8021:64:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21142,
                  "nodeType": "ExpressionStatement",
                  "src": "8021:64:75"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 21144,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21116,
                        "src": "8117:4:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21145,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21118,
                        "src": "8123:2:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21146,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21120,
                        "src": "8127:6:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21143,
                      "name": "_beforeTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21417,
                      "src": "8096:20:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21147,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8096:38:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21148,
                  "nodeType": "ExpressionStatement",
                  "src": "8096:38:75"
                },
                {
                  "assignments": [
                    21150
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21150,
                      "mutability": "mutable",
                      "name": "fromBalance",
                      "nameLocation": "8153:11:75",
                      "nodeType": "VariableDeclaration",
                      "scope": 21189,
                      "src": "8145:19:75",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21149,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8145:7:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 21154,
                  "initialValue": {
                    "baseExpression": {
                      "id": 21151,
                      "name": "_balances",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20840,
                      "src": "8167:9:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 21153,
                    "indexExpression": {
                      "id": 21152,
                      "name": "from",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21116,
                      "src": "8177:4:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8167:15:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8145:37:75"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 21158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 21156,
                          "name": "fromBalance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21150,
                          "src": "8200:11:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "id": 21157,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21120,
                          "src": "8215:6:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8200:21:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365",
                        "id": 21159,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8223:40:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                          "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                        },
                        "value": "ERC20: transfer amount exceeds balance"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                          "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                        }
                      ],
                      "id": 21155,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "8192:7:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21160,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8192:72:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21161,
                  "nodeType": "ExpressionStatement",
                  "src": "8192:72:75"
                },
                {
                  "id": 21170,
                  "nodeType": "UncheckedBlock",
                  "src": "8274:73:75",
                  "statements": [
                    {
                      "expression": {
                        "id": 21168,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 21162,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20840,
                            "src": "8298:9:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 21164,
                          "indexExpression": {
                            "id": 21163,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21116,
                            "src": "8308:4:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "8298:15:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21167,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 21165,
                            "name": "fromBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21150,
                            "src": "8316:11:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 21166,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21120,
                            "src": "8330:6:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8316:20:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8298:38:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 21169,
                      "nodeType": "ExpressionStatement",
                      "src": "8298:38:75"
                    }
                  ]
                },
                {
                  "expression": {
                    "id": 21175,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 21171,
                        "name": "_balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20840,
                        "src": "8356:9:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 21173,
                      "indexExpression": {
                        "id": 21172,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21118,
                        "src": "8366:2:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8356:13:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 21174,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21120,
                      "src": "8373:6:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8356:23:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 21176,
                  "nodeType": "ExpressionStatement",
                  "src": "8356:23:75"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 21178,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21116,
                        "src": "8404:4:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21179,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21118,
                        "src": "8410:2:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21180,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21120,
                        "src": "8414:6:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21177,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27177,
                      "src": "8395:8:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21181,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8395:26:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21182,
                  "nodeType": "EmitStatement",
                  "src": "8390:31:75"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 21184,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21116,
                        "src": "8452:4:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21185,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21118,
                        "src": "8458:2:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21186,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21120,
                        "src": "8462:6:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21183,
                      "name": "_afterTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21428,
                      "src": "8432:19:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21187,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8432:37:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21188,
                  "nodeType": "ExpressionStatement",
                  "src": "8432:37:75"
                }
              ]
            },
            "documentation": {
              "id": 21114,
              "nodeType": "StructuredDocumentation",
              "src": "7368:452:75",
              "text": " @dev Moves `amount` of tokens from `sender` to `recipient`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`."
            },
            "id": 21190,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_transfer",
            "nameLocation": "7834:9:75",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21121,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21116,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "7861:4:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21190,
                  "src": "7853:12:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21115,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7853:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21118,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "7883:2:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21190,
                  "src": "7875:10:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21117,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7875:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21120,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "7903:6:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21190,
                  "src": "7895:14:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21119,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7895:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7843:72:75"
            },
            "returnParameters": {
              "id": 21122,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7933:0:75"
            },
            "scope": 21434,
            "src": "7825:651:75",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21245,
              "nodeType": "Block",
              "src": "8817:324:75",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 21204,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 21199,
                          "name": "account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21193,
                          "src": "8835:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 21202,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8854:1:75",
                              "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": 21201,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8846:7:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 21200,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8846:7:75",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 21203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8846:10:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "8835:21:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                        "id": 21205,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8858:33:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                          "typeString": "literal_string \"ERC20: mint to the zero address\""
                        },
                        "value": "ERC20: mint to the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                          "typeString": "literal_string \"ERC20: mint to the zero address\""
                        }
                      ],
                      "id": 21198,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "8827:7:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21206,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8827:65:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21207,
                  "nodeType": "ExpressionStatement",
                  "src": "8827:65:75"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 21211,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8932:1:75",
                            "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": 21210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8924:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 21209,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "8924:7:75",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 21212,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8924:10:75",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21213,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21193,
                        "src": "8936:7:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21214,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21195,
                        "src": "8945:6:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21208,
                      "name": "_beforeTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21417,
                      "src": "8903:20:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21215,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8903:49:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21216,
                  "nodeType": "ExpressionStatement",
                  "src": "8903:49:75"
                },
                {
                  "expression": {
                    "id": 21219,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 21217,
                      "name": "_totalSupply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20848,
                      "src": "8963:12:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 21218,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21195,
                      "src": "8979:6:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8963:22:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 21220,
                  "nodeType": "ExpressionStatement",
                  "src": "8963:22:75"
                },
                {
                  "expression": {
                    "id": 21225,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 21221,
                        "name": "_balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20840,
                        "src": "8995:9:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 21223,
                      "indexExpression": {
                        "id": 21222,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21193,
                        "src": "9005:7:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8995:18:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 21224,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21195,
                      "src": "9017:6:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8995:28:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 21226,
                  "nodeType": "ExpressionStatement",
                  "src": "8995:28:75"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 21230,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9055:1:75",
                            "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": 21229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9047:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 21228,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9047:7:75",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 21231,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9047:10:75",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21232,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21193,
                        "src": "9059:7:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21233,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21195,
                        "src": "9068:6:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21227,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27177,
                      "src": "9038:8:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21234,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9038:37:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21235,
                  "nodeType": "EmitStatement",
                  "src": "9033:42:75"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 21239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9114:1:75",
                            "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": 21238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9106:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 21237,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9106:7:75",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 21240,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9106:10:75",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21241,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21193,
                        "src": "9118:7:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21242,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21195,
                        "src": "9127:6:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21236,
                      "name": "_afterTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21428,
                      "src": "9086:19:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9086:48:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21244,
                  "nodeType": "ExpressionStatement",
                  "src": "9086:48:75"
                }
              ]
            },
            "documentation": {
              "id": 21191,
              "nodeType": "StructuredDocumentation",
              "src": "8482:265:75",
              "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `account` cannot be the zero address."
            },
            "id": 21246,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_mint",
            "nameLocation": "8761:5:75",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21196,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21193,
                  "mutability": "mutable",
                  "name": "account",
                  "nameLocation": "8775:7:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21246,
                  "src": "8767:15:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21192,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8767:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21195,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "8792:6:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21246,
                  "src": "8784:14:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21194,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8784:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8766:33:75"
            },
            "returnParameters": {
              "id": 21197,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8817:0:75"
            },
            "scope": 21434,
            "src": "8752:389:75",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21317,
              "nodeType": "Block",
              "src": "9526:511:75",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 21260,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 21255,
                          "name": "account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21249,
                          "src": "9544:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 21258,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9563:1:75",
                              "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": 21257,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9555:7:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 21256,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9555:7:75",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 21259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9555:10:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "9544:21:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373",
                        "id": 21261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9567:35:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                          "typeString": "literal_string \"ERC20: burn from the zero address\""
                        },
                        "value": "ERC20: burn from the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                          "typeString": "literal_string \"ERC20: burn from the zero address\""
                        }
                      ],
                      "id": 21254,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "9536:7:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21262,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9536:67:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21263,
                  "nodeType": "ExpressionStatement",
                  "src": "9536:67:75"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 21265,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21249,
                        "src": "9635:7:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 21268,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9652:1:75",
                            "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": 21267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9644:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 21266,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9644:7:75",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 21269,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9644:10:75",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21270,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21251,
                        "src": "9656:6:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21264,
                      "name": "_beforeTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21417,
                      "src": "9614:20:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21271,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9614:49:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21272,
                  "nodeType": "ExpressionStatement",
                  "src": "9614:49:75"
                },
                {
                  "assignments": [
                    21274
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21274,
                      "mutability": "mutable",
                      "name": "accountBalance",
                      "nameLocation": "9682:14:75",
                      "nodeType": "VariableDeclaration",
                      "scope": 21317,
                      "src": "9674:22:75",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21273,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9674:7:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 21278,
                  "initialValue": {
                    "baseExpression": {
                      "id": 21275,
                      "name": "_balances",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20840,
                      "src": "9699:9:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 21277,
                    "indexExpression": {
                      "id": 21276,
                      "name": "account",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21249,
                      "src": "9709:7:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9699:18:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9674:43:75"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 21282,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 21280,
                          "name": "accountBalance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21274,
                          "src": "9735:14:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "id": 21281,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21251,
                          "src": "9753:6:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9735:24:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365",
                        "id": 21283,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9761:36:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                          "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                        },
                        "value": "ERC20: burn amount exceeds balance"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                          "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                        }
                      ],
                      "id": 21279,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "9727:7:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21284,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9727:71:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21285,
                  "nodeType": "ExpressionStatement",
                  "src": "9727:71:75"
                },
                {
                  "id": 21294,
                  "nodeType": "UncheckedBlock",
                  "src": "9808:79:75",
                  "statements": [
                    {
                      "expression": {
                        "id": 21292,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 21286,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20840,
                            "src": "9832:9:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 21288,
                          "indexExpression": {
                            "id": 21287,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21249,
                            "src": "9842:7:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "9832:18:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 21289,
                            "name": "accountBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21274,
                            "src": "9853:14:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 21290,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21251,
                            "src": "9870:6:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9853:23:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9832:44:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 21293,
                      "nodeType": "ExpressionStatement",
                      "src": "9832:44:75"
                    }
                  ]
                },
                {
                  "expression": {
                    "id": 21297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 21295,
                      "name": "_totalSupply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20848,
                      "src": "9896:12:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "id": 21296,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21251,
                      "src": "9912:6:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9896:22:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 21298,
                  "nodeType": "ExpressionStatement",
                  "src": "9896:22:75"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 21300,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21249,
                        "src": "9943:7:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 21303,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9960:1:75",
                            "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": 21302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9952:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 21301,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9952:7:75",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 21304,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9952:10:75",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21305,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21251,
                        "src": "9964:6:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21299,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27177,
                      "src": "9934:8:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21306,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9934:37:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21307,
                  "nodeType": "EmitStatement",
                  "src": "9929:42:75"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 21309,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21249,
                        "src": "10002:7:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 21312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10019:1:75",
                            "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": 21311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10011:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 21310,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10011:7:75",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 21313,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10011:10:75",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21314,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21251,
                        "src": "10023:6:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21308,
                      "name": "_afterTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21428,
                      "src": "9982:19:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21315,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9982:48:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21316,
                  "nodeType": "ExpressionStatement",
                  "src": "9982:48:75"
                }
              ]
            },
            "documentation": {
              "id": 21247,
              "nodeType": "StructuredDocumentation",
              "src": "9147:309:75",
              "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."
            },
            "id": 21318,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_burn",
            "nameLocation": "9470:5:75",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21252,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21249,
                  "mutability": "mutable",
                  "name": "account",
                  "nameLocation": "9484:7:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21318,
                  "src": "9476:15:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21248,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9476:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21251,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "9501:6:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21318,
                  "src": "9493:14:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21250,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9493:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9475:33:75"
            },
            "returnParameters": {
              "id": 21253,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9526:0:75"
            },
            "scope": 21434,
            "src": "9461:576:75",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21362,
              "nodeType": "Block",
              "src": "10573:257:75",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 21334,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 21329,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21321,
                          "src": "10591:5:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 21332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10608:1:75",
                              "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": 21331,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10600:7:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 21330,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10600:7:75",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 21333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10600:10:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "10591:19:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373",
                        "id": 21335,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10612:38:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                          "typeString": "literal_string \"ERC20: approve from the zero address\""
                        },
                        "value": "ERC20: approve from the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                          "typeString": "literal_string \"ERC20: approve from the zero address\""
                        }
                      ],
                      "id": 21328,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "10583:7:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21336,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10583:68:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21337,
                  "nodeType": "ExpressionStatement",
                  "src": "10583:68:75"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 21344,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 21339,
                          "name": "spender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21323,
                          "src": "10669:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 21342,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10688:1:75",
                              "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": 21341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10680:7:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 21340,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10680:7:75",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 21343,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10680:10:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "10669:21:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373",
                        "id": 21345,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10692:36:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                          "typeString": "literal_string \"ERC20: approve to the zero address\""
                        },
                        "value": "ERC20: approve to the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                          "typeString": "literal_string \"ERC20: approve to the zero address\""
                        }
                      ],
                      "id": 21338,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "10661:7:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21346,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10661:68:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21347,
                  "nodeType": "ExpressionStatement",
                  "src": "10661:68:75"
                },
                {
                  "expression": {
                    "id": 21354,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 21348,
                          "name": "_allowances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20846,
                          "src": "10740:11:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(address => mapping(address => uint256))"
                          }
                        },
                        "id": 21351,
                        "indexExpression": {
                          "id": 21349,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21321,
                          "src": "10752:5:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "10740:18:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 21352,
                      "indexExpression": {
                        "id": 21350,
                        "name": "spender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21323,
                        "src": "10759:7:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10740:27:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 21353,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21325,
                      "src": "10770:6:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10740:36:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 21355,
                  "nodeType": "ExpressionStatement",
                  "src": "10740:36:75"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 21357,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21321,
                        "src": "10800:5:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21358,
                        "name": "spender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21323,
                        "src": "10807:7:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21359,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21325,
                        "src": "10816:6:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21356,
                      "name": "Approval",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27186,
                      "src": "10791:8:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21360,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10791:32:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21361,
                  "nodeType": "EmitStatement",
                  "src": "10786:37:75"
                }
              ]
            },
            "documentation": {
              "id": 21319,
              "nodeType": "StructuredDocumentation",
              "src": "10043:412:75",
              "text": " @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."
            },
            "id": 21363,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_approve",
            "nameLocation": "10469:8:75",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21326,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21321,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "10495:5:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21363,
                  "src": "10487:13:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21320,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10487:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21323,
                  "mutability": "mutable",
                  "name": "spender",
                  "nameLocation": "10518:7:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21363,
                  "src": "10510:15:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21322,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10510:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21325,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "10543:6:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21363,
                  "src": "10535:14:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21324,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10535:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10477:78:75"
            },
            "returnParameters": {
              "id": 21327,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10573:0:75"
            },
            "scope": 21434,
            "src": "10460:370:75",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21405,
              "nodeType": "Block",
              "src": "11227:321:75",
              "statements": [
                {
                  "assignments": [
                    21374
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21374,
                      "mutability": "mutable",
                      "name": "currentAllowance",
                      "nameLocation": "11245:16:75",
                      "nodeType": "VariableDeclaration",
                      "scope": 21405,
                      "src": "11237:24:75",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21373,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11237:7:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 21379,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 21376,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21366,
                        "src": "11274:5:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21377,
                        "name": "spender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21368,
                        "src": "11281:7:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 21375,
                      "name": "allowance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20983,
                      "src": "11264:9:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address,address) view returns (uint256)"
                      }
                    },
                    "id": 21378,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11264:25:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11237:52:75"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 21386,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 21380,
                      "name": "currentAllowance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21374,
                      "src": "11303:16:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "arguments": [
                          {
                            "id": 21383,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "11328:7:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 21382,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11328:7:75",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            }
                          ],
                          "id": 21381,
                          "name": "type",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -27,
                          "src": "11323:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                            "typeString": "function () pure"
                          }
                        },
                        "id": 21384,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11323:13:75",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_meta_type_t_uint256",
                          "typeString": "type(uint256)"
                        }
                      },
                      "id": 21385,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "max",
                      "nodeType": "MemberAccess",
                      "src": "11323:17:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11303:37:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 21404,
                  "nodeType": "IfStatement",
                  "src": "11299:243:75",
                  "trueBody": {
                    "id": 21403,
                    "nodeType": "Block",
                    "src": "11342:200:75",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21390,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21388,
                                "name": "currentAllowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21374,
                                "src": "11364:16:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 21389,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21370,
                                "src": "11384:6:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11364:26:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a20696e73756666696369656e7420616c6c6f77616e6365",
                              "id": 21391,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11392:31:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe",
                                "typeString": "literal_string \"ERC20: insufficient allowance\""
                              },
                              "value": "ERC20: insufficient allowance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe",
                                "typeString": "literal_string \"ERC20: insufficient allowance\""
                              }
                            ],
                            "id": 21387,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11356:7:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11356:68:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21393,
                        "nodeType": "ExpressionStatement",
                        "src": "11356:68:75"
                      },
                      {
                        "id": 21402,
                        "nodeType": "UncheckedBlock",
                        "src": "11438:94:75",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 21395,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21366,
                                  "src": "11475:5:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 21396,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21368,
                                  "src": "11482:7:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21399,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 21397,
                                    "name": "currentAllowance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21374,
                                    "src": "11491:16:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 21398,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21370,
                                    "src": "11510:6:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "11491:25:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 21394,
                                "name": "_approve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21363,
                                "src": "11466:8:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,uint256)"
                                }
                              },
                              "id": 21400,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11466:51:75",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 21401,
                            "nodeType": "ExpressionStatement",
                            "src": "11466:51:75"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 21364,
              "nodeType": "StructuredDocumentation",
              "src": "10836:266:75",
              "text": " @dev Spend `amount` form the allowance of `owner` toward `spender`.\n Does not update the allowance amount in case of infinite allowance.\n Revert if not enough allowance is available.\n Might emit an {Approval} event."
            },
            "id": 21406,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_spendAllowance",
            "nameLocation": "11116:15:75",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21371,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21366,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "11149:5:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21406,
                  "src": "11141:13:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21365,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11141:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21368,
                  "mutability": "mutable",
                  "name": "spender",
                  "nameLocation": "11172:7:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21406,
                  "src": "11164:15:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21367,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11164:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21370,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "11197:6:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21406,
                  "src": "11189:14:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21369,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11189:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11131:78:75"
            },
            "returnParameters": {
              "id": 21372,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11227:0:75"
            },
            "scope": 21434,
            "src": "11107:441:75",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21416,
              "nodeType": "Block",
              "src": "12251:2:75",
              "statements": []
            },
            "documentation": {
              "id": 21407,
              "nodeType": "StructuredDocumentation",
              "src": "11554:573:75",
              "text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
            },
            "id": 21417,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_beforeTokenTransfer",
            "nameLocation": "12141:20:75",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21414,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21409,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "12179:4:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21417,
                  "src": "12171:12:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21408,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12171:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21411,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "12201:2:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21417,
                  "src": "12193:10:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21410,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12193:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21413,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "12221:6:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21417,
                  "src": "12213:14:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21412,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12213:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12161:72:75"
            },
            "returnParameters": {
              "id": 21415,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12251:0:75"
            },
            "scope": 21434,
            "src": "12132:121:75",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21427,
              "nodeType": "Block",
              "src": "12959:2:75",
              "statements": []
            },
            "documentation": {
              "id": 21418,
              "nodeType": "StructuredDocumentation",
              "src": "12259:577:75",
              "text": " @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n has been transferred to `to`.\n - when `from` is zero, `amount` tokens have been minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
            },
            "id": 21428,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_afterTokenTransfer",
            "nameLocation": "12850:19:75",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21425,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21420,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "12887:4:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21428,
                  "src": "12879:12:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21419,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12879:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21422,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "12909:2:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21428,
                  "src": "12901:10:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21421,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12901:7:75",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21424,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "12929:6:75",
                  "nodeType": "VariableDeclaration",
                  "scope": 21428,
                  "src": "12921:14:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21423,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12921:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12869:72:75"
            },
            "returnParameters": {
              "id": 21426,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12959:0:75"
            },
            "scope": 21434,
            "src": "12841:120:75",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "constant": false,
            "documentation": {
              "id": 21429,
              "nodeType": "StructuredDocumentation",
              "src": "12967:254:75",
              "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"
            },
            "id": 21433,
            "mutability": "mutable",
            "name": "__gap",
            "nameLocation": "13246:5:75",
            "nodeType": "VariableDeclaration",
            "scope": 21434,
            "src": "13226:25:75",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_uint256_$45_storage",
              "typeString": "uint256[45]"
            },
            "typeName": {
              "baseType": {
                "id": 21430,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "13226:7:75",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "id": 21432,
              "length": {
                "hexValue": "3435",
                "id": 21431,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "13234:2:75",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_45_by_1",
                  "typeString": "int_const 45"
                },
                "value": "45"
              },
              "nodeType": "ArrayTypeName",
              "src": "13226:11:75",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_uint256_$45_storage_ptr",
                "typeString": "uint256[45]"
              }
            },
            "visibility": "private"
          }
        ],
        "scope": 21435,
        "src": "1482:11772:75",
        "usedErrors": []
      }
    ],
    "src": "105:13150:75"
  },
  "bytecode": "608060405234801561001057600080fd5b506108ce806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101c6565b6040516100c391906107e2565b60405180910390f35b6100df6100da3660046107b8565b610258565b60405190151581526020016100c3565b6035545b6040519081526020016100c3565b6100df61010f36600461077c565b610270565b604051601281526020016100c3565b6100df6101313660046107b8565b610294565b6100f3610144366004610727565b6001600160a01b031660009081526033602052604090205490565b6100b66102d3565b6100df6101753660046107b8565b6102e2565b6100df6101883660046107b8565b610379565b6100f361019b366004610749565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b6060603680546101d59061085d565b80601f01602080910402602001604051908101604052809291908181526020018280546102019061085d565b801561024e5780601f106102235761010080835404028352916020019161024e565b820191906000526020600020905b81548152906001019060200180831161023157829003601f168201915b5050505050905090565b600033610266818585610387565b5060019392505050565b60003361027e8582856104ab565b61028985858561053d565b506001949350505050565b3360008181526034602090815260408083206001600160a01b038716845290915281205490919061026690829086906102ce908790610837565b610387565b6060603780546101d59061085d565b3360008181526034602090815260408083206001600160a01b03871684529091528120549091908381101561036c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102898286868403610387565b60003361026681858561053d565b6001600160a01b0383166103e95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610363565b6001600160a01b03821661044a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610363565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152603460209081526040808320938616835292905220546000198114610537578181101561052a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610363565b6105378484848403610387565b50505050565b6001600160a01b0383166105a15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610363565b6001600160a01b0382166106035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610363565b6001600160a01b0383166000908152603360205260409020548181101561067b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610363565b6001600160a01b038085166000908152603360205260408082208585039055918516815290812080548492906106b2908490610837565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106fe91815260200190565b60405180910390a3610537565b80356001600160a01b038116811461072257600080fd5b919050565b60006020828403121561073957600080fd5b6107428261070b565b9392505050565b6000806040838503121561075c57600080fd5b6107658361070b565b91506107736020840161070b565b90509250929050565b60008060006060848603121561079157600080fd5b61079a8461070b565b92506107a86020850161070b565b9150604084013590509250925092565b600080604083850312156107cb57600080fd5b6107d48361070b565b946020939093013593505050565b600060208083528351808285015260005b8181101561080f578581018301518582016040015282016107f3565b81811115610821576000604083870101525b50601f01601f1916929092016040019392505050565b6000821982111561085857634e487b7160e01b600052601160045260246000fd5b500190565b600181811c9082168061087157607f821691505b6020821081141561089257634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212203f8f5696b11ecee5f53fece937ef7b27dbb74f1732f5e2e61f75d669bd216fd764736f6c63430008060033",
  "bytecodeSha1": "25abe5643a77780cb82b5175c48f36eac69eb51c",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.6+commit.11564f7e"
  },
  "contractName": "ERC20Upgradeable",
  "coverageMap": {
    "branches": {
      "72": {},
      "75": {
        "ERC20Upgradeable._approve": {
          "30": [
            10591,
            10610,
            true
          ],
          "31": [
            10669,
            10690,
            true
          ]
        },
        "ERC20Upgradeable._spendAllowance": {
          "32": [
            11303,
            11340,
            false
          ],
          "33": [
            11364,
            11390,
            true
          ]
        },
        "ERC20Upgradeable._transfer": {
          "34": [
            7951,
            7969,
            true
          ],
          "35": [
            8029,
            8045,
            true
          ],
          "36": [
            8200,
            8221,
            true
          ]
        },
        "ERC20Upgradeable.decreaseAllowance": {
          "29": [
            7152,
            7187,
            true
          ]
        }
      },
      "76": {},
      "77": {},
      "83": {}
    },
    "statements": {
      "72": {},
      "75": {
        "ERC20Upgradeable._approve": {
          "16": [
            10583,
            10651
          ],
          "17": [
            10661,
            10729
          ],
          "18": [
            10740,
            10776
          ],
          "19": [
            10786,
            10823
          ]
        },
        "ERC20Upgradeable._spendAllowance": {
          "20": [
            11356,
            11424
          ],
          "21": [
            11466,
            11517
          ]
        },
        "ERC20Upgradeable._transfer": {
          "22": [
            7943,
            8011
          ],
          "23": [
            8021,
            8085
          ],
          "24": [
            8192,
            8264
          ],
          "25": [
            8298,
            8336
          ],
          "26": [
            8356,
            8379
          ],
          "27": [
            8390,
            8421
          ],
          "28": [
            8432,
            8469
          ]
        },
        "ERC20Upgradeable.allowance": {
          "3": [
            4421,
            4455
          ]
        },
        "ERC20Upgradeable.approve": {
          "6": [
            4907,
            4939
          ],
          "7": [
            4949,
            4960
          ]
        },
        "ERC20Upgradeable.balanceOf": {
          "2": [
            3838,
            3863
          ]
        },
        "ERC20Upgradeable.decimals": {
          "1": [
            3505,
            3514
          ]
        },
        "ERC20Upgradeable.decreaseAllowance": {
          "13": [
            7144,
            7229
          ],
          "14": [
            7263,
            7323
          ]
        },
        "ERC20Upgradeable.increaseAllowance": {
          "11": [
            6352,
            6418
          ]
        },
        "ERC20Upgradeable.name": {
          "4": [
            2572,
            2584
          ]
        },
        "ERC20Upgradeable.symbol": {
          "12": [
            2785,
            2799
          ]
        },
        "ERC20Upgradeable.totalSupply": {
          "0": [
            3661,
            3680
          ]
        },
        "ERC20Upgradeable.transfer": {
          "15": [
            4199,
            4227
          ]
        },
        "ERC20Upgradeable.transferFrom": {
          "8": [
            5712,
            5750
          ],
          "9": [
            5760,
            5787
          ],
          "10": [
            5797,
            5808
          ]
        }
      },
      "76": {},
      "77": {},
      "83": {
        "ContextUpgradeable._msgSender": {
          "5": [
            922,
            939
          ]
        }
      }
    }
  },
  "dependencies": [
    "ContextUpgradeable",
    "IERC20MetadataUpgradeable",
    "IERC20Upgradeable",
    "Initializable"
  ],
  "deployedBytecode": "608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101c6565b6040516100c391906107e2565b60405180910390f35b6100df6100da3660046107b8565b610258565b60405190151581526020016100c3565b6035545b6040519081526020016100c3565b6100df61010f36600461077c565b610270565b604051601281526020016100c3565b6100df6101313660046107b8565b610294565b6100f3610144366004610727565b6001600160a01b031660009081526033602052604090205490565b6100b66102d3565b6100df6101753660046107b8565b6102e2565b6100df6101883660046107b8565b610379565b6100f361019b366004610749565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b6060603680546101d59061085d565b80601f01602080910402602001604051908101604052809291908181526020018280546102019061085d565b801561024e5780601f106102235761010080835404028352916020019161024e565b820191906000526020600020905b81548152906001019060200180831161023157829003601f168201915b5050505050905090565b600033610266818585610387565b5060019392505050565b60003361027e8582856104ab565b61028985858561053d565b506001949350505050565b3360008181526034602090815260408083206001600160a01b038716845290915281205490919061026690829086906102ce908790610837565b610387565b6060603780546101d59061085d565b3360008181526034602090815260408083206001600160a01b03871684529091528120549091908381101561036c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102898286868403610387565b60003361026681858561053d565b6001600160a01b0383166103e95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610363565b6001600160a01b03821661044a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610363565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152603460209081526040808320938616835292905220546000198114610537578181101561052a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610363565b6105378484848403610387565b50505050565b6001600160a01b0383166105a15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610363565b6001600160a01b0382166106035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610363565b6001600160a01b0383166000908152603360205260409020548181101561067b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610363565b6001600160a01b038085166000908152603360205260408082208585039055918516815290812080548492906106b2908490610837565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106fe91815260200190565b60405180910390a3610537565b80356001600160a01b038116811461072257600080fd5b919050565b60006020828403121561073957600080fd5b6107428261070b565b9392505050565b6000806040838503121561075c57600080fd5b6107658361070b565b91506107736020840161070b565b90509250929050565b60008060006060848603121561079157600080fd5b61079a8461070b565b92506107a86020850161070b565b9150604084013590509250925092565b600080604083850312156107cb57600080fd5b6107d48361070b565b946020939093013593505050565b600060208083528351808285015260005b8181101561080f578581018301518582016040015282016107f3565b81811115610821576000604083870101525b50601f01601f1916929092016040019392505050565b6000821982111561085857634e487b7160e01b600052601160045260246000fd5b500190565b600181811c9082168061087157607f821691505b6020821081141561089257634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212203f8f5696b11ecee5f53fece937ef7b27dbb74f1732f5e2e61f75d669bd216fd764736f6c63430008060033",
  "deployedSourceMap": "1482:11772:75:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2493:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4770:197;;;;;;:::i;:::-;;:::i;:::-;;;1405:14:114;;1398:22;1380:41;;1368:2;1353:18;4770:197:75;1335:92:114;3581:106:75;3668:12;;3581:106;;;4969:25:114;;;4957:2;4942:18;3581:106:75;4924:76:114;5529:286:75;;;;;;:::i;:::-;;:::i;3430:91::-;;;3512:2;5147:36:114;;5135:2;5120:18;3430:91:75;5102:87:114;6210:236:75;;;;;;:::i;:::-;;:::i;3745:125::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3845:18:75;3819:7;3845:18;;;:9;:18;;;;;;;3745:125;2704:102;;;:::i;6933:429::-;;;;;;:::i;:::-;;:::i;4066:189::-;;;;;;:::i;:::-;;:::i;4313:149::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4428:18:75;;;4402:7;4428:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4313:149;2493:98;2547:13;2579:5;2572:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2493:98;:::o;4770:197::-;4853:4;929:10:83;4907:32:75;929:10:83;4923:7:75;4932:6;4907:8;:32::i;:::-;-1:-1:-1;4956:4:75;;4770:197;-1:-1:-1;;;4770:197:75:o;5529:286::-;5656:4;929:10:83;5712:38:75;5728:4;929:10:83;5743:6:75;5712:15;:38::i;:::-;5760:27;5770:4;5776:2;5780:6;5760:9;:27::i;:::-;-1:-1:-1;5804:4:75;;5529:286;-1:-1:-1;;;;5529:286:75:o;6210:236::-;929:10:83;6298:4:75;6377:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;6377:27:75;;;;;;;;;;6298:4;;929:10:83;6352:66:75;;929:10:83;;6377:27:75;;:40;;6407:10;;6377:40;:::i;:::-;6352:8;:66::i;2704:102::-;2760:13;2792:7;2785:14;;;;;:::i;6933:429::-;929:10:83;7026:4:75;7107:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;7107:27:75;;;;;;;;;;7026:4;;929:10:83;7152:35:75;;;;7144:85;;;;-1:-1:-1;;;7144:85:75;;4619:2:114;7144:85:75;;;4601:21:114;4658:2;4638:18;;;4631:30;4697:34;4677:18;;;4670:62;-1:-1:-1;;;4748:18:114;;;4741:35;4793:19;;7144:85:75;;;;;;;;;7263:60;7272:5;7279:7;7307:15;7288:16;:34;7263:8;:60::i;4066:189::-;4145:4;929:10:83;4199:28:75;929:10:83;4216:2:75;4220:6;4199:9;:28::i;10460:370::-;-1:-1:-1;;;;;10591:19:75;;10583:68;;;;-1:-1:-1;;;10583:68:75;;4214:2:114;10583:68:75;;;4196:21:114;4253:2;4233:18;;;4226:30;4292:34;4272:18;;;4265:62;-1:-1:-1;;;4343:18:114;;;4336:34;4387:19;;10583:68:75;4186:226:114;10583:68:75;-1:-1:-1;;;;;10669:21:75;;10661:68;;;;-1:-1:-1;;;10661:68:75;;2640:2:114;10661:68:75;;;2622:21:114;2679:2;2659:18;;;2652:30;2718:34;2698:18;;;2691:62;-1:-1:-1;;;2769:18:114;;;2762:32;2811:19;;10661:68:75;2612:224:114;10661:68:75;-1:-1:-1;;;;;10740:18:75;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10791:32;;4969:25:114;;;10791:32:75;;4942:18:114;10791:32:75;;;;;;;10460:370;;;:::o;11107:441::-;-1:-1:-1;;;;;4428:18:75;;;11237:24;4428:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;11303:37:75;;11299:243;;11384:6;11364:16;:26;;11356:68;;;;-1:-1:-1;;;11356:68:75;;3043:2:114;11356:68:75;;;3025:21:114;3082:2;3062:18;;;3055:30;3121:31;3101:18;;;3094:59;3170:18;;11356:68:75;3015:179:114;11356:68:75;11466:51;11475:5;11482:7;11510:6;11491:16;:25;11466:8;:51::i;:::-;11227:321;11107:441;;;:::o;7825:651::-;-1:-1:-1;;;;;7951:18:75;;7943:68;;;;-1:-1:-1;;;7943:68:75;;3808:2:114;7943:68:75;;;3790:21:114;3847:2;3827:18;;;3820:30;3886:34;3866:18;;;3859:62;-1:-1:-1;;;3937:18:114;;;3930:35;3982:19;;7943:68:75;3780:227:114;7943:68:75;-1:-1:-1;;;;;8029:16:75;;8021:64;;;;-1:-1:-1;;;8021:64:75;;2236:2:114;8021:64:75;;;2218:21:114;2275:2;2255:18;;;2248:30;2314:34;2294:18;;;2287:62;-1:-1:-1;;;2365:18:114;;;2358:33;2408:19;;8021:64:75;2208:225:114;8021:64:75;-1:-1:-1;;;;;8167:15:75;;8145:19;8167:15;;;:9;:15;;;;;;8200:21;;;;8192:72;;;;-1:-1:-1;;;8192:72:75;;3401:2:114;8192:72:75;;;3383:21:114;3440:2;3420:18;;;3413:30;3479:34;3459:18;;;3452:62;-1:-1:-1;;;3530:18:114;;;3523:36;3576:19;;8192:72:75;3373:228:114;8192:72:75;-1:-1:-1;;;;;8298:15:75;;;;;;;:9;:15;;;;;;8316:20;;;8298:38;;8356:13;;;;;;;;:23;;8330:6;;8298:15;8356:23;;8330:6;;8356:23;:::i;:::-;;;;;;;;8410:2;-1:-1:-1;;;;;8395:26:75;8404:4;-1:-1:-1;;;;;8395:26:75;;8414:6;8395:26;;;;4969:25:114;;4957:2;4942:18;;4924:76;8395:26:75;;;;;;;;8432:37;12132:121;14:173:114;82:20;;-1:-1:-1;;;;;131:31:114;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:2;;;320:1;317;310:12;272:2;343:29;362:9;343:29;:::i;:::-;333:39;262:116;-1:-1:-1;;;262:116:114:o;383:260::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:2;;;528:1;525;518:12;480:2;551:29;570:9;551:29;:::i;:::-;541:39;;599:38;633:2;622:9;618:18;599:38;:::i;:::-;589:48;;470:173;;;;;:::o;648:328::-;725:6;733;741;794:2;782:9;773:7;769:23;765:32;762:2;;;810:1;807;800:12;762:2;833:29;852:9;833:29;:::i;:::-;823:39;;881:38;915:2;904:9;900:18;881:38;:::i;:::-;871:48;;966:2;955:9;951:18;938:32;928:42;;752:224;;;;;:::o;981:254::-;1049:6;1057;1110:2;1098:9;1089:7;1085:23;1081:32;1078:2;;;1126:1;1123;1116:12;1078:2;1149:29;1168:9;1149:29;:::i;:::-;1139:39;1225:2;1210:18;;;;1197:32;;-1:-1:-1;;;1068:167:114:o;1432:597::-;1544:4;1573:2;1602;1591:9;1584:21;1634:6;1628:13;1677:6;1672:2;1661:9;1657:18;1650:34;1702:1;1712:140;1726:6;1723:1;1720:13;1712:140;;;1821:14;;;1817:23;;1811:30;1787:17;;;1806:2;1783:26;1776:66;1741:10;;1712:140;;;1870:6;1867:1;1864:13;1861:2;;;1940:1;1935:2;1926:6;1915:9;1911:22;1907:31;1900:42;1861:2;-1:-1:-1;2013:2:114;1992:15;-1:-1:-1;;1988:29:114;1973:45;;;;2020:2;1969:54;;1553:476;-1:-1:-1;;;1553:476:114:o;5194:225::-;5234:3;5265:1;5261:6;5258:1;5255:13;5252:2;;;5310:10;5305:3;5301:20;5298:1;5291:31;5345:4;5342:1;5335:15;5373:4;5370:1;5363:15;5252:2;-1:-1:-1;5404:9:114;;5242:177::o;5424:380::-;5503:1;5499:12;;;;5546;;;5567:2;;5621:4;5613:6;5609:17;5599:27;;5567:2;5674;5666:6;5663:14;5643:18;5640:38;5637:2;;;5720:10;5715:3;5711:20;5708:1;5701:31;5755:4;5752:1;5745:15;5783:4;5780:1;5773:15;5637:2;;5479:325;;;:::o",
  "language": "Solidity",
  "natspec": {
    "details": "Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.",
    "kind": "dev",
    "methods": {
      "allowance(address,address)": {
        "details": "See {IERC20-allowance}."
      },
      "approve(address,uint256)": {
        "details": "See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."
      },
      "balanceOf(address)": {
        "details": "See {IERC20-balanceOf}."
      },
      "decimals()": {
        "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
      },
      "decreaseAllowance(address,uint256)": {
        "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
      },
      "increaseAllowance(address,uint256)": {
        "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
      },
      "name()": {
        "details": "Returns the name of the token."
      },
      "symbol()": {
        "details": "Returns the symbol of the token, usually a shorter version of the name."
      },
      "totalSupply()": {
        "details": "See {IERC20-totalSupply}."
      },
      "transfer(address,uint256)": {
        "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."
      },
      "transferFrom(address,address,uint256)": {
        "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."
      }
    },
    "stateVariables": {
      "__gap": {
        "details": "This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"
      }
    },
    "version": 1
  },
  "offset": [
    1482,
    13254
  ],
  "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xCC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x114 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x1C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC3 SWAP2 SWAP1 PUSH2 0x7E2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDF PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0x7B8 JUMP JUMPDEST PUSH2 0x258 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC3 JUMP JUMPDEST PUSH1 0x35 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC3 JUMP JUMPDEST PUSH2 0xDF PUSH2 0x10F CALLDATASIZE PUSH1 0x4 PUSH2 0x77C JUMP JUMPDEST PUSH2 0x270 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC3 JUMP JUMPDEST PUSH2 0xDF PUSH2 0x131 CALLDATASIZE PUSH1 0x4 PUSH2 0x7B8 JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x144 CALLDATASIZE PUSH1 0x4 PUSH2 0x727 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x2D3 JUMP JUMPDEST PUSH2 0xDF PUSH2 0x175 CALLDATASIZE PUSH1 0x4 PUSH2 0x7B8 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST PUSH2 0xDF PUSH2 0x188 CALLDATASIZE PUSH1 0x4 PUSH2 0x7B8 JUMP JUMPDEST PUSH2 0x379 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x749 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x36 DUP1 SLOAD PUSH2 0x1D5 SWAP1 PUSH2 0x85D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x201 SWAP1 PUSH2 0x85D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x24E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x223 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x24E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x231 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x266 DUP2 DUP6 DUP6 PUSH2 0x387 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x27E DUP6 DUP3 DUP6 PUSH2 0x4AB JUMP JUMPDEST PUSH2 0x289 DUP6 DUP6 DUP6 PUSH2 0x53D JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x266 SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x2CE SWAP1 DUP8 SWAP1 PUSH2 0x837 JUMP JUMPDEST PUSH2 0x387 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x37 DUP1 SLOAD PUSH2 0x1D5 SWAP1 PUSH2 0x85D JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x36C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x207A65726F PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x289 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x387 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x266 DUP2 DUP6 DUP6 PUSH2 0x53D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x3E9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x363 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x44A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x363 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0x537 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x52A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x363 JUMP JUMPDEST PUSH2 0x537 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x387 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x5A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x363 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x603 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x363 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x67B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x616C616E6365 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x363 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP2 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x6B2 SWAP1 DUP5 SWAP1 PUSH2 0x837 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x6FE SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x537 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x739 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x742 DUP3 PUSH2 0x70B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x75C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x765 DUP4 PUSH2 0x70B JUMP JUMPDEST SWAP2 POP PUSH2 0x773 PUSH1 0x20 DUP5 ADD PUSH2 0x70B JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x791 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x79A DUP5 PUSH2 0x70B JUMP JUMPDEST SWAP3 POP PUSH2 0x7A8 PUSH1 0x20 DUP6 ADD PUSH2 0x70B JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D4 DUP4 PUSH2 0x70B JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x80F JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x7F3 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x821 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x858 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x871 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x892 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODEHASH DUP16 JUMP SWAP7 0xB1 0x1E 0xCE 0xE5 CREATE2 EXTCODEHASH 0xEC 0xE9 CALLDATACOPY 0xEF PUSH28 0x27DBB74F1732F5E2E61F75D669BD216FD764736F6C63430008060033 ",
  "pcMap": {
    "0": {
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x80"
    },
    "2": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "4": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "5": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "CALLVALUE",
      "path": "75"
    },
    "6": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "DUP1",
      "path": "75"
    },
    "7": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "ISZERO",
      "path": "75"
    },
    "8": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x10"
    },
    "11": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "12": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x0"
    },
    "14": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "DUP1",
      "path": "75"
    },
    "15": {
      "dev": "Cannot send ether to nonpayable function",
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "REVERT",
      "path": "75"
    },
    "16": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "17": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "POP",
      "path": "75"
    },
    "18": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x4"
    },
    "20": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "CALLDATASIZE",
      "path": "75"
    },
    "21": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "LT",
      "path": "75"
    },
    "22": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0xA9"
    },
    "25": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "26": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x0"
    },
    "28": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "CALLDATALOAD",
      "path": "75"
    },
    "29": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0xE0"
    },
    "31": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "SHR",
      "path": "75"
    },
    "32": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "DUP1",
      "path": "75"
    },
    "33": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH4",
      "path": "75",
      "value": "0x39509351"
    },
    "38": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "GT",
      "path": "75"
    },
    "39": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x71"
    },
    "42": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "43": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "DUP1",
      "path": "75"
    },
    "44": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH4",
      "path": "75",
      "value": "0x39509351"
    },
    "49": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "EQ",
      "path": "75"
    },
    "50": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x123"
    },
    "53": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "54": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "DUP1",
      "path": "75"
    },
    "55": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH4",
      "path": "75",
      "value": "0x70A08231"
    },
    "60": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "EQ",
      "path": "75"
    },
    "61": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x136"
    },
    "64": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "65": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "DUP1",
      "path": "75"
    },
    "66": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH4",
      "path": "75",
      "value": "0x95D89B41"
    },
    "71": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "EQ",
      "path": "75"
    },
    "72": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x15F"
    },
    "75": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "76": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "DUP1",
      "path": "75"
    },
    "77": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH4",
      "path": "75",
      "value": "0xA457C2D7"
    },
    "82": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "EQ",
      "path": "75"
    },
    "83": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x167"
    },
    "86": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "87": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "DUP1",
      "path": "75"
    },
    "88": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH4",
      "path": "75",
      "value": "0xA9059CBB"
    },
    "93": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "EQ",
      "path": "75"
    },
    "94": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x17A"
    },
    "97": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "98": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "DUP1",
      "path": "75"
    },
    "99": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH4",
      "path": "75",
      "value": "0xDD62ED3E"
    },
    "104": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "EQ",
      "path": "75"
    },
    "105": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x18D"
    },
    "108": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "109": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x0"
    },
    "111": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "DUP1",
      "path": "75"
    },
    "112": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "REVERT",
      "path": "75"
    },
    "113": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "114": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "DUP1",
      "path": "75"
    },
    "115": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH4",
      "path": "75",
      "value": "0x6FDDE03"
    },
    "120": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "EQ",
      "path": "75"
    },
    "121": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0xAE"
    },
    "124": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "125": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "DUP1",
      "path": "75"
    },
    "126": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH4",
      "path": "75",
      "value": "0x95EA7B3"
    },
    "131": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "EQ",
      "path": "75"
    },
    "132": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0xCC"
    },
    "135": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "136": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "DUP1",
      "path": "75"
    },
    "137": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH4",
      "path": "75",
      "value": "0x18160DDD"
    },
    "142": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "EQ",
      "path": "75"
    },
    "143": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0xEF"
    },
    "146": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "147": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "DUP1",
      "path": "75"
    },
    "148": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH4",
      "path": "75",
      "value": "0x23B872DD"
    },
    "153": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "EQ",
      "path": "75"
    },
    "154": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x101"
    },
    "157": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "158": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "DUP1",
      "path": "75"
    },
    "159": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH4",
      "path": "75",
      "value": "0x313CE567"
    },
    "164": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "EQ",
      "path": "75"
    },
    "165": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x114"
    },
    "168": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "169": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "170": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x0"
    },
    "172": {
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "DUP1",
      "path": "75"
    },
    "173": {
      "first_revert": true,
      "fn": null,
      "offset": [
        1482,
        13254
      ],
      "op": "REVERT",
      "path": "75"
    },
    "174": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "175": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0xB6"
    },
    "178": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x1C6"
    },
    "181": {
      "fn": "ERC20Upgradeable.name",
      "jump": "i",
      "offset": [
        2493,
        2591
      ],
      "op": "JUMP",
      "path": "75"
    },
    "182": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "183": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "185": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "MLOAD",
      "path": "75"
    },
    "186": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0xC3"
    },
    "189": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "190": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "191": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x7E2"
    },
    "194": {
      "fn": "ERC20Upgradeable.name",
      "jump": "i",
      "offset": [
        2493,
        2591
      ],
      "op": "JUMP",
      "path": "75"
    },
    "195": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "196": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "198": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "MLOAD",
      "path": "75"
    },
    "199": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "DUP1",
      "path": "75"
    },
    "200": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "201": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "SUB",
      "path": "75"
    },
    "202": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "203": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "RETURN",
      "path": "75"
    },
    "204": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4770,
        4967
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "205": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4770,
        4967
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0xDF"
    },
    "208": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4770,
        4967
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0xDA"
    },
    "211": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4770,
        4967
      ],
      "op": "CALLDATASIZE",
      "path": "75"
    },
    "212": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4770,
        4967
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x4"
    },
    "214": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4770,
        4967
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x7B8"
    },
    "217": {
      "fn": "ERC20Upgradeable.approve",
      "jump": "i",
      "offset": [
        4770,
        4967
      ],
      "op": "JUMP",
      "path": "75"
    },
    "218": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4770,
        4967
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "219": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4770,
        4967
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x258"
    },
    "222": {
      "fn": "ERC20Upgradeable.approve",
      "jump": "i",
      "offset": [
        4770,
        4967
      ],
      "op": "JUMP",
      "path": "75"
    },
    "223": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4770,
        4967
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "224": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4770,
        4967
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "226": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4770,
        4967
      ],
      "op": "MLOAD",
      "path": "75"
    },
    "227": {
      "op": "SWAP1"
    },
    "228": {
      "op": "ISZERO"
    },
    "229": {
      "op": "ISZERO"
    },
    "230": {
      "op": "DUP2"
    },
    "231": {
      "op": "MSTORE"
    },
    "232": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "234": {
      "op": "ADD"
    },
    "235": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4770,
        4967
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0xC3"
    },
    "238": {
      "op": "JUMP"
    },
    "239": {
      "fn": "ERC20Upgradeable.totalSupply",
      "offset": [
        3581,
        3687
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "240": {
      "fn": "ERC20Upgradeable.totalSupply",
      "offset": [
        3668,
        3680
      ],
      "op": "PUSH1",
      "path": "75",
      "statement": 0,
      "value": "0x35"
    },
    "242": {
      "fn": "ERC20Upgradeable.totalSupply",
      "offset": [
        3668,
        3680
      ],
      "op": "SLOAD",
      "path": "75"
    },
    "243": {
      "fn": "ERC20Upgradeable.totalSupply",
      "offset": [
        3581,
        3687
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "244": {
      "fn": "ERC20Upgradeable.totalSupply",
      "offset": [
        3581,
        3687
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "246": {
      "fn": "ERC20Upgradeable.totalSupply",
      "offset": [
        3581,
        3687
      ],
      "op": "MLOAD",
      "path": "75"
    },
    "247": {
      "op": "SWAP1"
    },
    "248": {
      "op": "DUP2"
    },
    "249": {
      "op": "MSTORE"
    },
    "250": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "252": {
      "op": "ADD"
    },
    "253": {
      "fn": "ERC20Upgradeable.totalSupply",
      "offset": [
        3581,
        3687
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0xC3"
    },
    "256": {
      "op": "JUMP"
    },
    "257": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5529,
        5815
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "258": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5529,
        5815
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0xDF"
    },
    "261": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5529,
        5815
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x10F"
    },
    "264": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5529,
        5815
      ],
      "op": "CALLDATASIZE",
      "path": "75"
    },
    "265": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5529,
        5815
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x4"
    },
    "267": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5529,
        5815
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x77C"
    },
    "270": {
      "fn": "ERC20Upgradeable.transferFrom",
      "jump": "i",
      "offset": [
        5529,
        5815
      ],
      "op": "JUMP",
      "path": "75"
    },
    "271": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5529,
        5815
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "272": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5529,
        5815
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x270"
    },
    "275": {
      "fn": "ERC20Upgradeable.transferFrom",
      "jump": "i",
      "offset": [
        5529,
        5815
      ],
      "op": "JUMP",
      "path": "75"
    },
    "276": {
      "fn": "ERC20Upgradeable.decimals",
      "offset": [
        3430,
        3521
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "277": {
      "fn": "ERC20Upgradeable.decimals",
      "offset": [
        3430,
        3521
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "279": {
      "fn": "ERC20Upgradeable.decimals",
      "offset": [
        3430,
        3521
      ],
      "op": "MLOAD",
      "path": "75"
    },
    "280": {
      "fn": "ERC20Upgradeable.decimals",
      "offset": [
        3512,
        3514
      ],
      "op": "PUSH1",
      "path": "75",
      "statement": 1,
      "value": "0x12"
    },
    "282": {
      "op": "DUP2"
    },
    "283": {
      "op": "MSTORE"
    },
    "284": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "286": {
      "op": "ADD"
    },
    "287": {
      "fn": "ERC20Upgradeable.decimals",
      "offset": [
        3430,
        3521
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0xC3"
    },
    "290": {
      "op": "JUMP"
    },
    "291": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6210,
        6446
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "292": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6210,
        6446
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0xDF"
    },
    "295": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6210,
        6446
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x131"
    },
    "298": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6210,
        6446
      ],
      "op": "CALLDATASIZE",
      "path": "75"
    },
    "299": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6210,
        6446
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x4"
    },
    "301": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6210,
        6446
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x7B8"
    },
    "304": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "jump": "i",
      "offset": [
        6210,
        6446
      ],
      "op": "JUMP",
      "path": "75"
    },
    "305": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6210,
        6446
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "306": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6210,
        6446
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x294"
    },
    "309": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "jump": "i",
      "offset": [
        6210,
        6446
      ],
      "op": "JUMP",
      "path": "75"
    },
    "310": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3745,
        3870
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "311": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3745,
        3870
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0xF3"
    },
    "314": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3745,
        3870
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x144"
    },
    "317": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3745,
        3870
      ],
      "op": "CALLDATASIZE",
      "path": "75"
    },
    "318": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3745,
        3870
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x4"
    },
    "320": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3745,
        3870
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x727"
    },
    "323": {
      "fn": "ERC20Upgradeable.balanceOf",
      "jump": "i",
      "offset": [
        3745,
        3870
      ],
      "op": "JUMP",
      "path": "75"
    },
    "324": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3745,
        3870
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "325": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "327": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "329": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "331": {
      "op": "SHL"
    },
    "332": {
      "op": "SUB"
    },
    "333": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3845,
        3863
      ],
      "op": "AND",
      "path": "75",
      "statement": 2
    },
    "334": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3819,
        3826
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x0"
    },
    "336": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3845,
        3863
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "337": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3845,
        3863
      ],
      "op": "DUP2",
      "path": "75"
    },
    "338": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3845,
        3863
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "339": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3845,
        3854
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x33"
    },
    "341": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3845,
        3863
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x20"
    },
    "343": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3845,
        3863
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "344": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3845,
        3863
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "346": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3845,
        3863
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "347": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3845,
        3863
      ],
      "op": "KECCAK256",
      "path": "75"
    },
    "348": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3845,
        3863
      ],
      "op": "SLOAD",
      "path": "75"
    },
    "349": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3845,
        3863
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "350": {
      "fn": "ERC20Upgradeable.balanceOf",
      "offset": [
        3745,
        3870
      ],
      "op": "JUMP",
      "path": "75"
    },
    "351": {
      "fn": "ERC20Upgradeable.symbol",
      "offset": [
        2704,
        2806
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "352": {
      "fn": "ERC20Upgradeable.symbol",
      "offset": [
        2704,
        2806
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0xB6"
    },
    "355": {
      "fn": "ERC20Upgradeable.symbol",
      "offset": [
        2704,
        2806
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x2D3"
    },
    "358": {
      "fn": "ERC20Upgradeable.symbol",
      "jump": "i",
      "offset": [
        2704,
        2806
      ],
      "op": "JUMP",
      "path": "75"
    },
    "359": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        6933,
        7362
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "360": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        6933,
        7362
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0xDF"
    },
    "363": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        6933,
        7362
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x175"
    },
    "366": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        6933,
        7362
      ],
      "op": "CALLDATASIZE",
      "path": "75"
    },
    "367": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        6933,
        7362
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x4"
    },
    "369": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        6933,
        7362
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x7B8"
    },
    "372": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "jump": "i",
      "offset": [
        6933,
        7362
      ],
      "op": "JUMP",
      "path": "75"
    },
    "373": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        6933,
        7362
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "374": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        6933,
        7362
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x2E2"
    },
    "377": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "jump": "i",
      "offset": [
        6933,
        7362
      ],
      "op": "JUMP",
      "path": "75"
    },
    "378": {
      "fn": "ERC20Upgradeable.transfer",
      "offset": [
        4066,
        4255
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "379": {
      "fn": "ERC20Upgradeable.transfer",
      "offset": [
        4066,
        4255
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0xDF"
    },
    "382": {
      "fn": "ERC20Upgradeable.transfer",
      "offset": [
        4066,
        4255
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x188"
    },
    "385": {
      "fn": "ERC20Upgradeable.transfer",
      "offset": [
        4066,
        4255
      ],
      "op": "CALLDATASIZE",
      "path": "75"
    },
    "386": {
      "fn": "ERC20Upgradeable.transfer",
      "offset": [
        4066,
        4255
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x4"
    },
    "388": {
      "fn": "ERC20Upgradeable.transfer",
      "offset": [
        4066,
        4255
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x7B8"
    },
    "391": {
      "fn": "ERC20Upgradeable.transfer",
      "jump": "i",
      "offset": [
        4066,
        4255
      ],
      "op": "JUMP",
      "path": "75"
    },
    "392": {
      "fn": "ERC20Upgradeable.transfer",
      "offset": [
        4066,
        4255
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "393": {
      "fn": "ERC20Upgradeable.transfer",
      "offset": [
        4066,
        4255
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x379"
    },
    "396": {
      "fn": "ERC20Upgradeable.transfer",
      "jump": "i",
      "offset": [
        4066,
        4255
      ],
      "op": "JUMP",
      "path": "75"
    },
    "397": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4313,
        4462
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "398": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4313,
        4462
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0xF3"
    },
    "401": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4313,
        4462
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x19B"
    },
    "404": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4313,
        4462
      ],
      "op": "CALLDATASIZE",
      "path": "75"
    },
    "405": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4313,
        4462
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x4"
    },
    "407": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4313,
        4462
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x749"
    },
    "410": {
      "fn": "ERC20Upgradeable.allowance",
      "jump": "i",
      "offset": [
        4313,
        4462
      ],
      "op": "JUMP",
      "path": "75"
    },
    "411": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4313,
        4462
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "412": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "414": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "416": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "418": {
      "op": "SHL"
    },
    "419": {
      "op": "SUB"
    },
    "420": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "SWAP2",
      "path": "75",
      "statement": 3
    },
    "421": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "DUP3",
      "path": "75"
    },
    "422": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "AND",
      "path": "75"
    },
    "423": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4402,
        4409
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x0"
    },
    "425": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "426": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "DUP2",
      "path": "75"
    },
    "427": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "428": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4439
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x34"
    },
    "430": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x20"
    },
    "432": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "433": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "DUP2",
      "path": "75"
    },
    "434": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "435": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "437": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "DUP1",
      "path": "75"
    },
    "438": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "DUP4",
      "path": "75"
    },
    "439": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "KECCAK256",
      "path": "75"
    },
    "440": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "SWAP4",
      "path": "75"
    },
    "441": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "442": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "SWAP5",
      "path": "75"
    },
    "443": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "AND",
      "path": "75"
    },
    "444": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "DUP3",
      "path": "75"
    },
    "445": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "446": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "447": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "448": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "449": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "450": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "KECCAK256",
      "path": "75"
    },
    "451": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "SLOAD",
      "path": "75"
    },
    "452": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "453": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4313,
        4462
      ],
      "op": "JUMP",
      "path": "75"
    },
    "454": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "455": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2547,
        2560
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x60"
    },
    "457": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2579,
        2584
      ],
      "op": "PUSH1",
      "path": "75",
      "statement": 4,
      "value": "0x36"
    },
    "459": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP1",
      "path": "75"
    },
    "460": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SLOAD",
      "path": "75"
    },
    "461": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x1D5"
    },
    "464": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "465": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x85D"
    },
    "468": {
      "fn": "ERC20Upgradeable.name",
      "jump": "i",
      "offset": [
        2572,
        2584
      ],
      "op": "JUMP",
      "path": "75"
    },
    "469": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "470": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP1",
      "path": "75"
    },
    "471": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x1F"
    },
    "473": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "ADD",
      "path": "75"
    },
    "474": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x20"
    },
    "476": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP1",
      "path": "75"
    },
    "477": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "478": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DIV",
      "path": "75"
    },
    "479": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "MUL",
      "path": "75"
    },
    "480": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x20"
    },
    "482": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "ADD",
      "path": "75"
    },
    "483": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "485": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "MLOAD",
      "path": "75"
    },
    "486": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "487": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP2",
      "path": "75"
    },
    "488": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "ADD",
      "path": "75"
    },
    "489": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "491": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "492": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP1",
      "path": "75"
    },
    "493": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SWAP3",
      "path": "75"
    },
    "494": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "495": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "496": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP2",
      "path": "75"
    },
    "497": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP2",
      "path": "75"
    },
    "498": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "499": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x20"
    },
    "501": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "ADD",
      "path": "75"
    },
    "502": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP3",
      "path": "75"
    },
    "503": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP1",
      "path": "75"
    },
    "504": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SLOAD",
      "path": "75"
    },
    "505": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x201"
    },
    "508": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "509": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x85D"
    },
    "512": {
      "fn": "ERC20Upgradeable.name",
      "jump": "i",
      "offset": [
        2572,
        2584
      ],
      "op": "JUMP",
      "path": "75"
    },
    "513": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "514": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP1",
      "path": "75"
    },
    "515": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "ISZERO",
      "path": "75"
    },
    "516": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x24E"
    },
    "519": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "520": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP1",
      "path": "75"
    },
    "521": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x1F"
    },
    "523": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "LT",
      "path": "75"
    },
    "524": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x223"
    },
    "527": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "528": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x100"
    },
    "531": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP1",
      "path": "75"
    },
    "532": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP4",
      "path": "75"
    },
    "533": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SLOAD",
      "path": "75"
    },
    "534": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DIV",
      "path": "75"
    },
    "535": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "MUL",
      "path": "75"
    },
    "536": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP4",
      "path": "75"
    },
    "537": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "538": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "539": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x20"
    },
    "541": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "ADD",
      "path": "75"
    },
    "542": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "543": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x24E"
    },
    "546": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "JUMP",
      "path": "75"
    },
    "547": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "548": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP3",
      "path": "75"
    },
    "549": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "ADD",
      "path": "75"
    },
    "550": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "551": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "552": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x0"
    },
    "554": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "555": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x20"
    },
    "557": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x0"
    },
    "559": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "KECCAK256",
      "path": "75"
    },
    "560": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "561": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "562": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP2",
      "path": "75"
    },
    "563": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SLOAD",
      "path": "75"
    },
    "564": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP2",
      "path": "75"
    },
    "565": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "566": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "567": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x1"
    },
    "569": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "ADD",
      "path": "75"
    },
    "570": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "571": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x20"
    },
    "573": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "ADD",
      "path": "75"
    },
    "574": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP1",
      "path": "75"
    },
    "575": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP4",
      "path": "75"
    },
    "576": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "GT",
      "path": "75"
    },
    "577": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x231"
    },
    "580": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "581": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP3",
      "path": "75"
    },
    "582": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "583": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SUB",
      "path": "75"
    },
    "584": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x1F"
    },
    "586": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "AND",
      "path": "75"
    },
    "587": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "DUP3",
      "path": "75"
    },
    "588": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "ADD",
      "path": "75"
    },
    "589": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "590": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "591": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "POP",
      "path": "75"
    },
    "592": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "POP",
      "path": "75"
    },
    "593": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "POP",
      "path": "75"
    },
    "594": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "POP",
      "path": "75"
    },
    "595": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "POP",
      "path": "75"
    },
    "596": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "597": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2572,
        2584
      ],
      "op": "POP",
      "path": "75"
    },
    "598": {
      "fn": "ERC20Upgradeable.name",
      "offset": [
        2493,
        2591
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "599": {
      "fn": "ERC20Upgradeable.name",
      "jump": "o",
      "offset": [
        2493,
        2591
      ],
      "op": "JUMP",
      "path": "75"
    },
    "600": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4770,
        4967
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "601": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4853,
        4857
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x0"
    },
    "603": {
      "fn": "ContextUpgradeable._msgSender",
      "offset": [
        929,
        939
      ],
      "op": "CALLER",
      "path": "83",
      "statement": 5
    },
    "604": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4907,
        4939
      ],
      "op": "PUSH2",
      "path": "75",
      "statement": 6,
      "value": "0x266"
    },
    "607": {
      "fn": "ContextUpgradeable._msgSender",
      "offset": [
        929,
        939
      ],
      "op": "DUP2",
      "path": "83"
    },
    "608": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4923,
        4930
      ],
      "op": "DUP6",
      "path": "75"
    },
    "609": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4932,
        4938
      ],
      "op": "DUP6",
      "path": "75"
    },
    "610": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4907,
        4915
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x387"
    },
    "613": {
      "fn": "ERC20Upgradeable.approve",
      "jump": "i",
      "offset": [
        4907,
        4939
      ],
      "op": "JUMP",
      "path": "75"
    },
    "614": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4907,
        4939
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "615": {
      "op": "POP"
    },
    "616": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4956,
        4960
      ],
      "op": "PUSH1",
      "path": "75",
      "statement": 7,
      "value": "0x1"
    },
    "618": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4956,
        4960
      ],
      "op": "SWAP4",
      "path": "75"
    },
    "619": {
      "fn": "ERC20Upgradeable.approve",
      "offset": [
        4770,
        4967
      ],
      "op": "SWAP3",
      "path": "75"
    },
    "620": {
      "op": "POP"
    },
    "621": {
      "op": "POP"
    },
    "622": {
      "op": "POP"
    },
    "623": {
      "fn": "ERC20Upgradeable.approve",
      "jump": "o",
      "offset": [
        4770,
        4967
      ],
      "op": "JUMP",
      "path": "75"
    },
    "624": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5529,
        5815
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "625": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5656,
        5660
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x0"
    },
    "627": {
      "fn": "ContextUpgradeable._msgSender",
      "offset": [
        929,
        939
      ],
      "op": "CALLER",
      "path": "83"
    },
    "628": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5712,
        5750
      ],
      "op": "PUSH2",
      "path": "75",
      "statement": 8,
      "value": "0x27E"
    },
    "631": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5728,
        5732
      ],
      "op": "DUP6",
      "path": "75"
    },
    "632": {
      "fn": "ContextUpgradeable._msgSender",
      "offset": [
        929,
        939
      ],
      "op": "DUP3",
      "path": "83"
    },
    "633": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5743,
        5749
      ],
      "op": "DUP6",
      "path": "75"
    },
    "634": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5712,
        5727
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x4AB"
    },
    "637": {
      "fn": "ERC20Upgradeable.transferFrom",
      "jump": "i",
      "offset": [
        5712,
        5750
      ],
      "op": "JUMP",
      "path": "75"
    },
    "638": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5712,
        5750
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "639": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5760,
        5787
      ],
      "op": "PUSH2",
      "path": "75",
      "statement": 9,
      "value": "0x289"
    },
    "642": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5770,
        5774
      ],
      "op": "DUP6",
      "path": "75"
    },
    "643": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5776,
        5778
      ],
      "op": "DUP6",
      "path": "75"
    },
    "644": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5780,
        5786
      ],
      "op": "DUP6",
      "path": "75"
    },
    "645": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5760,
        5769
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x53D"
    },
    "648": {
      "fn": "ERC20Upgradeable.transferFrom",
      "jump": "i",
      "offset": [
        5760,
        5787
      ],
      "op": "JUMP",
      "path": "75"
    },
    "649": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5760,
        5787
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "650": {
      "op": "POP"
    },
    "651": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5804,
        5808
      ],
      "op": "PUSH1",
      "path": "75",
      "statement": 10,
      "value": "0x1"
    },
    "653": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5804,
        5808
      ],
      "op": "SWAP5",
      "path": "75"
    },
    "654": {
      "fn": "ERC20Upgradeable.transferFrom",
      "offset": [
        5529,
        5815
      ],
      "op": "SWAP4",
      "path": "75"
    },
    "655": {
      "op": "POP"
    },
    "656": {
      "op": "POP"
    },
    "657": {
      "op": "POP"
    },
    "658": {
      "op": "POP"
    },
    "659": {
      "fn": "ERC20Upgradeable.transferFrom",
      "jump": "o",
      "offset": [
        5529,
        5815
      ],
      "op": "JUMP",
      "path": "75"
    },
    "660": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6210,
        6446
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "661": {
      "fn": "ContextUpgradeable._msgSender",
      "offset": [
        929,
        939
      ],
      "op": "CALLER",
      "path": "83"
    },
    "662": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6298,
        6302
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x0"
    },
    "664": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6395
      ],
      "op": "DUP2",
      "path": "75",
      "statement": 11
    },
    "665": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6395
      ],
      "op": "DUP2",
      "path": "75"
    },
    "666": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6395
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "667": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6388
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x34"
    },
    "669": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6395
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x20"
    },
    "671": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6395
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "672": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6395
      ],
      "op": "DUP2",
      "path": "75"
    },
    "673": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6395
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "674": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6395
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "676": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6395
      ],
      "op": "DUP1",
      "path": "75"
    },
    "677": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6395
      ],
      "op": "DUP4",
      "path": "75"
    },
    "678": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6395
      ],
      "op": "KECCAK256",
      "path": "75"
    },
    "679": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "681": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "683": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "685": {
      "op": "SHL"
    },
    "686": {
      "op": "SUB"
    },
    "687": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6404
      ],
      "op": "DUP8",
      "path": "75"
    },
    "688": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6404
      ],
      "op": "AND",
      "path": "75"
    },
    "689": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6404
      ],
      "op": "DUP5",
      "path": "75"
    },
    "690": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6404
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "691": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6404
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "692": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6404
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "693": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6404
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "694": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6404
      ],
      "op": "DUP2",
      "path": "75"
    },
    "695": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6404
      ],
      "op": "KECCAK256",
      "path": "75"
    },
    "696": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6404
      ],
      "op": "SLOAD",
      "path": "75"
    },
    "697": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6298,
        6302
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "698": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6298,
        6302
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "699": {
      "fn": "ContextUpgradeable._msgSender",
      "offset": [
        929,
        939
      ],
      "op": "SWAP1",
      "path": "83"
    },
    "700": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6352,
        6418
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x266"
    },
    "703": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6352,
        6418
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "704": {
      "fn": "ContextUpgradeable._msgSender",
      "offset": [
        929,
        939
      ],
      "op": "DUP3",
      "path": "83"
    },
    "705": {
      "fn": "ContextUpgradeable._msgSender",
      "offset": [
        929,
        939
      ],
      "op": "SWAP1",
      "path": "83"
    },
    "706": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6404
      ],
      "op": "DUP7",
      "path": "75"
    },
    "707": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6404
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "708": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6417
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x2CE"
    },
    "711": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6417
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "712": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6407,
        6417
      ],
      "op": "DUP8",
      "path": "75"
    },
    "713": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6407,
        6417
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "714": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6417
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x837"
    },
    "717": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "jump": "i",
      "offset": [
        6377,
        6417
      ],
      "op": "JUMP",
      "path": "75"
    },
    "718": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6377,
        6417
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "719": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "offset": [
        6352,
        6360
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x387"
    },
    "722": {
      "fn": "ERC20Upgradeable.increaseAllowance",
      "jump": "i",
      "offset": [
        6352,
        6418
      ],
      "op": "JUMP",
      "path": "75"
    },
    "723": {
      "fn": "ERC20Upgradeable.symbol",
      "offset": [
        2704,
        2806
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "724": {
      "fn": "ERC20Upgradeable.symbol",
      "offset": [
        2760,
        2773
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x60"
    },
    "726": {
      "fn": "ERC20Upgradeable.symbol",
      "offset": [
        2792,
        2799
      ],
      "op": "PUSH1",
      "path": "75",
      "statement": 12,
      "value": "0x37"
    },
    "728": {
      "fn": "ERC20Upgradeable.symbol",
      "offset": [
        2785,
        2799
      ],
      "op": "DUP1",
      "path": "75"
    },
    "729": {
      "fn": "ERC20Upgradeable.symbol",
      "offset": [
        2785,
        2799
      ],
      "op": "SLOAD",
      "path": "75"
    },
    "730": {
      "fn": "ERC20Upgradeable.symbol",
      "offset": [
        2785,
        2799
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x1D5"
    },
    "733": {
      "fn": "ERC20Upgradeable.symbol",
      "offset": [
        2785,
        2799
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "734": {
      "fn": "ERC20Upgradeable.symbol",
      "offset": [
        2785,
        2799
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x85D"
    },
    "737": {
      "fn": "ERC20Upgradeable.symbol",
      "jump": "i",
      "offset": [
        2785,
        2799
      ],
      "op": "JUMP",
      "path": "75"
    },
    "738": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        6933,
        7362
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "739": {
      "fn": "ContextUpgradeable._msgSender",
      "offset": [
        929,
        939
      ],
      "op": "CALLER",
      "path": "83"
    },
    "740": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7026,
        7030
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x0"
    },
    "742": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7125
      ],
      "op": "DUP2",
      "path": "75"
    },
    "743": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7125
      ],
      "op": "DUP2",
      "path": "75"
    },
    "744": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7125
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "745": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7118
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x34"
    },
    "747": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7125
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x20"
    },
    "749": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7125
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "750": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7125
      ],
      "op": "DUP2",
      "path": "75"
    },
    "751": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7125
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "752": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7125
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "754": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7125
      ],
      "op": "DUP1",
      "path": "75"
    },
    "755": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7125
      ],
      "op": "DUP4",
      "path": "75"
    },
    "756": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7125
      ],
      "op": "KECCAK256",
      "path": "75"
    },
    "757": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "759": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "761": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "763": {
      "op": "SHL"
    },
    "764": {
      "op": "SUB"
    },
    "765": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7134
      ],
      "op": "DUP8",
      "path": "75"
    },
    "766": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7134
      ],
      "op": "AND",
      "path": "75"
    },
    "767": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7134
      ],
      "op": "DUP5",
      "path": "75"
    },
    "768": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7134
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "769": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7134
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "770": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7134
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "771": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7134
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "772": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7134
      ],
      "op": "DUP2",
      "path": "75"
    },
    "773": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7134
      ],
      "op": "KECCAK256",
      "path": "75"
    },
    "774": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7107,
        7134
      ],
      "op": "SLOAD",
      "path": "75"
    },
    "775": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7026,
        7030
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "776": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7026,
        7030
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "777": {
      "fn": "ContextUpgradeable._msgSender",
      "offset": [
        929,
        939
      ],
      "op": "SWAP1",
      "path": "83"
    },
    "778": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7152,
        7187
      ],
      "op": "DUP4",
      "path": "75",
      "statement": 13
    },
    "779": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7152,
        7187
      ],
      "op": "DUP2",
      "path": "75"
    },
    "780": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7152,
        7187
      ],
      "op": "LT",
      "path": "75"
    },
    "781": {
      "branch": 29,
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7152,
        7187
      ],
      "op": "ISZERO",
      "path": "75"
    },
    "782": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7144,
        7229
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x36C"
    },
    "785": {
      "branch": 29,
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7144,
        7229
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "786": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7144,
        7229
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "788": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7144,
        7229
      ],
      "op": "MLOAD",
      "path": "75"
    },
    "789": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "793": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "795": {
      "op": "SHL"
    },
    "796": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7144,
        7229
      ],
      "op": "DUP2",
      "path": "75"
    },
    "797": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7144,
        7229
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "798": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "800": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7144,
        7229
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x4"
    },
    "802": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7144,
        7229
      ],
      "op": "DUP3",
      "path": "75"
    },
    "803": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7144,
        7229
      ],
      "op": "ADD",
      "path": "75"
    },
    "804": {
      "op": "MSTORE"
    },
    "805": {
      "op": "PUSH1",
      "value": "0x25"
    },
    "807": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "809": {
      "op": "DUP3"
    },
    "810": {
      "op": "ADD"
    },
    "811": {
      "op": "MSTORE"
    },
    "812": {
      "op": "PUSH32",
      "value": "0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77"
    },
    "845": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "847": {
      "op": "DUP3"
    },
    "848": {
      "op": "ADD"
    },
    "849": {
      "op": "MSTORE"
    },
    "850": {
      "op": "PUSH5",
      "value": "0x207A65726F"
    },
    "856": {
      "op": "PUSH1",
      "value": "0xD8"
    },
    "858": {
      "op": "SHL"
    },
    "859": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "861": {
      "op": "DUP3"
    },
    "862": {
      "op": "ADD"
    },
    "863": {
      "op": "MSTORE"
    },
    "864": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "866": {
      "op": "ADD"
    },
    "867": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7144,
        7229
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "868": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7144,
        7229
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "870": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7144,
        7229
      ],
      "op": "MLOAD",
      "path": "75"
    },
    "871": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7144,
        7229
      ],
      "op": "DUP1",
      "path": "75"
    },
    "872": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7144,
        7229
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "873": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7144,
        7229
      ],
      "op": "SUB",
      "path": "75"
    },
    "874": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7144,
        7229
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "875": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7144,
        7229
      ],
      "op": "REVERT",
      "optimizer_revert": true,
      "path": "75"
    },
    "876": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7144,
        7229
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "877": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7263,
        7323
      ],
      "op": "PUSH2",
      "path": "75",
      "statement": 14,
      "value": "0x289"
    },
    "880": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7272,
        7277
      ],
      "op": "DUP3",
      "path": "75"
    },
    "881": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7279,
        7286
      ],
      "op": "DUP7",
      "path": "75"
    },
    "882": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7307,
        7322
      ],
      "op": "DUP7",
      "path": "75"
    },
    "883": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7288,
        7304
      ],
      "op": "DUP5",
      "path": "75"
    },
    "884": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7288,
        7322
      ],
      "op": "SUB",
      "path": "75"
    },
    "885": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "offset": [
        7263,
        7271
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x387"
    },
    "888": {
      "fn": "ERC20Upgradeable.decreaseAllowance",
      "jump": "i",
      "offset": [
        7263,
        7323
      ],
      "op": "JUMP",
      "path": "75"
    },
    "889": {
      "fn": "ERC20Upgradeable.transfer",
      "offset": [
        4066,
        4255
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "890": {
      "fn": "ERC20Upgradeable.transfer",
      "offset": [
        4145,
        4149
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x0"
    },
    "892": {
      "fn": "ContextUpgradeable._msgSender",
      "offset": [
        929,
        939
      ],
      "op": "CALLER",
      "path": "83"
    },
    "893": {
      "fn": "ERC20Upgradeable.transfer",
      "offset": [
        4199,
        4227
      ],
      "op": "PUSH2",
      "path": "75",
      "statement": 15,
      "value": "0x266"
    },
    "896": {
      "fn": "ContextUpgradeable._msgSender",
      "offset": [
        929,
        939
      ],
      "op": "DUP2",
      "path": "83"
    },
    "897": {
      "fn": "ERC20Upgradeable.transfer",
      "offset": [
        4216,
        4218
      ],
      "op": "DUP6",
      "path": "75"
    },
    "898": {
      "fn": "ERC20Upgradeable.transfer",
      "offset": [
        4220,
        4226
      ],
      "op": "DUP6",
      "path": "75"
    },
    "899": {
      "fn": "ERC20Upgradeable.transfer",
      "offset": [
        4199,
        4208
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x53D"
    },
    "902": {
      "fn": "ERC20Upgradeable.transfer",
      "jump": "i",
      "offset": [
        4199,
        4227
      ],
      "op": "JUMP",
      "path": "75"
    },
    "903": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10460,
        10830
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "904": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "906": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "908": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "910": {
      "op": "SHL"
    },
    "911": {
      "op": "SUB"
    },
    "912": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10591,
        10610
      ],
      "op": "DUP4",
      "path": "75",
      "statement": 16
    },
    "913": {
      "branch": 30,
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10591,
        10610
      ],
      "op": "AND",
      "path": "75"
    },
    "914": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10583,
        10651
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x3E9"
    },
    "917": {
      "branch": 30,
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10583,
        10651
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "918": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10583,
        10651
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "920": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10583,
        10651
      ],
      "op": "MLOAD",
      "path": "75"
    },
    "921": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "925": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "927": {
      "op": "SHL"
    },
    "928": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10583,
        10651
      ],
      "op": "DUP2",
      "path": "75"
    },
    "929": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10583,
        10651
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "930": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "932": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10583,
        10651
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x4"
    },
    "934": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10583,
        10651
      ],
      "op": "DUP3",
      "path": "75"
    },
    "935": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10583,
        10651
      ],
      "op": "ADD",
      "path": "75"
    },
    "936": {
      "op": "MSTORE"
    },
    "937": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "939": {
      "op": "DUP1"
    },
    "940": {
      "op": "DUP3"
    },
    "941": {
      "op": "ADD"
    },
    "942": {
      "op": "MSTORE"
    },
    "943": {
      "op": "PUSH32",
      "value": "0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464"
    },
    "976": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "978": {
      "op": "DUP3"
    },
    "979": {
      "op": "ADD"
    },
    "980": {
      "op": "MSTORE"
    },
    "981": {
      "op": "PUSH4",
      "value": "0x72657373"
    },
    "986": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "988": {
      "op": "SHL"
    },
    "989": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "991": {
      "op": "DUP3"
    },
    "992": {
      "op": "ADD"
    },
    "993": {
      "op": "MSTORE"
    },
    "994": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "996": {
      "op": "ADD"
    },
    "997": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10583,
        10651
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x363"
    },
    "1000": {
      "op": "JUMP"
    },
    "1001": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10583,
        10651
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "1002": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1004": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1006": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1008": {
      "op": "SHL"
    },
    "1009": {
      "op": "SUB"
    },
    "1010": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10669,
        10690
      ],
      "op": "DUP3",
      "path": "75",
      "statement": 17
    },
    "1011": {
      "branch": 31,
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10669,
        10690
      ],
      "op": "AND",
      "path": "75"
    },
    "1012": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10661,
        10729
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x44A"
    },
    "1015": {
      "branch": 31,
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10661,
        10729
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "1016": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10661,
        10729
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "1018": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10661,
        10729
      ],
      "op": "MLOAD",
      "path": "75"
    },
    "1019": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1023": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1025": {
      "op": "SHL"
    },
    "1026": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10661,
        10729
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1027": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10661,
        10729
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "1028": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1030": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10661,
        10729
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x4"
    },
    "1032": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10661,
        10729
      ],
      "op": "DUP3",
      "path": "75"
    },
    "1033": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10661,
        10729
      ],
      "op": "ADD",
      "path": "75"
    },
    "1034": {
      "op": "MSTORE"
    },
    "1035": {
      "op": "PUSH1",
      "value": "0x22"
    },
    "1037": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1039": {
      "op": "DUP3"
    },
    "1040": {
      "op": "ADD"
    },
    "1041": {
      "op": "MSTORE"
    },
    "1042": {
      "op": "PUSH32",
      "value": "0x45524332303A20617070726F766520746F20746865207A65726F206164647265"
    },
    "1075": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1077": {
      "op": "DUP3"
    },
    "1078": {
      "op": "ADD"
    },
    "1079": {
      "op": "MSTORE"
    },
    "1080": {
      "op": "PUSH2",
      "value": "0x7373"
    },
    "1083": {
      "op": "PUSH1",
      "value": "0xF0"
    },
    "1085": {
      "op": "SHL"
    },
    "1086": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1088": {
      "op": "DUP3"
    },
    "1089": {
      "op": "ADD"
    },
    "1090": {
      "op": "MSTORE"
    },
    "1091": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "1093": {
      "op": "ADD"
    },
    "1094": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10661,
        10729
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x363"
    },
    "1097": {
      "op": "JUMP"
    },
    "1098": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10661,
        10729
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "1099": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1101": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1103": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1105": {
      "op": "SHL"
    },
    "1106": {
      "op": "SUB"
    },
    "1107": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10758
      ],
      "op": "DUP4",
      "path": "75",
      "statement": 18
    },
    "1108": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10758
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1109": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10758
      ],
      "op": "AND",
      "path": "75"
    },
    "1110": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10758
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x0"
    },
    "1112": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10758
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1113": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10758
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1114": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10758
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "1115": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10751
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x34"
    },
    "1117": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10758
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x20"
    },
    "1119": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10758
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "1120": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10758
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1121": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10758
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "1122": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10758
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "1124": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10758
      ],
      "op": "DUP1",
      "path": "75"
    },
    "1125": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10758
      ],
      "op": "DUP4",
      "path": "75"
    },
    "1126": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10758
      ],
      "op": "KECCAK256",
      "path": "75"
    },
    "1127": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10767
      ],
      "op": "SWAP5",
      "path": "75"
    },
    "1128": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10767
      ],
      "op": "DUP8",
      "path": "75"
    },
    "1129": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10767
      ],
      "op": "AND",
      "path": "75"
    },
    "1130": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10767
      ],
      "op": "DUP1",
      "path": "75"
    },
    "1131": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10767
      ],
      "op": "DUP5",
      "path": "75"
    },
    "1132": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10767
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "1133": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10767
      ],
      "op": "SWAP5",
      "path": "75"
    },
    "1134": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10767
      ],
      "op": "DUP3",
      "path": "75"
    },
    "1135": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10767
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "1136": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10767
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "1137": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10767
      ],
      "op": "DUP3",
      "path": "75"
    },
    "1138": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10767
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "1139": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10767
      ],
      "op": "KECCAK256",
      "path": "75"
    },
    "1140": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10776
      ],
      "op": "DUP6",
      "path": "75"
    },
    "1141": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10776
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "1142": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10740,
        10776
      ],
      "op": "SSTORE",
      "path": "75"
    },
    "1143": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10791,
        10823
      ],
      "op": "SWAP1",
      "path": "75",
      "statement": 19
    },
    "1144": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10791,
        10823
      ],
      "op": "MLOAD",
      "path": "75"
    },
    "1145": {
      "op": "DUP5"
    },
    "1146": {
      "op": "DUP2"
    },
    "1147": {
      "op": "MSTORE"
    },
    "1148": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10791,
        10823
      ],
      "op": "PUSH32",
      "path": "75",
      "value": "0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925"
    },
    "1181": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10791,
        10823
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "1182": {
      "op": "ADD"
    },
    "1183": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10791,
        10823
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "1185": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10791,
        10823
      ],
      "op": "MLOAD",
      "path": "75"
    },
    "1186": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10791,
        10823
      ],
      "op": "DUP1",
      "path": "75"
    },
    "1187": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10791,
        10823
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "1188": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10791,
        10823
      ],
      "op": "SUB",
      "path": "75"
    },
    "1189": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10791,
        10823
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "1190": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10791,
        10823
      ],
      "op": "LOG3",
      "path": "75"
    },
    "1191": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10460,
        10830
      ],
      "op": "POP",
      "path": "75"
    },
    "1192": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10460,
        10830
      ],
      "op": "POP",
      "path": "75"
    },
    "1193": {
      "fn": "ERC20Upgradeable._approve",
      "offset": [
        10460,
        10830
      ],
      "op": "POP",
      "path": "75"
    },
    "1194": {
      "fn": "ERC20Upgradeable._approve",
      "jump": "o",
      "offset": [
        10460,
        10830
      ],
      "op": "JUMP",
      "path": "75"
    },
    "1195": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11107,
        11548
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "1196": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1198": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1200": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1202": {
      "op": "SHL"
    },
    "1203": {
      "op": "SUB"
    },
    "1204": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "DUP4",
      "path": "75"
    },
    "1205": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1206": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "AND",
      "path": "75"
    },
    "1207": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11237,
        11261
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x0"
    },
    "1209": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "1210": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1211": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "1212": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4439
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x34"
    },
    "1214": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x20"
    },
    "1216": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "1217": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1218": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "1219": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "1221": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "DUP1",
      "path": "75"
    },
    "1222": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "DUP4",
      "path": "75"
    },
    "1223": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4446
      ],
      "op": "KECCAK256",
      "path": "75"
    },
    "1224": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "SWAP4",
      "path": "75"
    },
    "1225": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "DUP7",
      "path": "75"
    },
    "1226": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "AND",
      "path": "75"
    },
    "1227": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "DUP4",
      "path": "75"
    },
    "1228": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "1229": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "SWAP3",
      "path": "75"
    },
    "1230": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "1231": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "1232": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "KECCAK256",
      "path": "75"
    },
    "1233": {
      "fn": "ERC20Upgradeable.allowance",
      "offset": [
        4428,
        4455
      ],
      "op": "SLOAD",
      "path": "75"
    },
    "1234": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1236": {
      "op": "NOT"
    },
    "1237": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11303,
        11340
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1238": {
      "branch": 32,
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11303,
        11340
      ],
      "op": "EQ",
      "path": "75"
    },
    "1239": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11299,
        11542
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x537"
    },
    "1242": {
      "branch": 32,
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11299,
        11542
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "1243": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11384,
        11390
      ],
      "op": "DUP2",
      "path": "75",
      "statement": 20
    },
    "1244": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11364,
        11380
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1245": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11364,
        11390
      ],
      "op": "LT",
      "path": "75"
    },
    "1246": {
      "branch": 33,
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11364,
        11390
      ],
      "op": "ISZERO",
      "path": "75"
    },
    "1247": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11356,
        11424
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x52A"
    },
    "1250": {
      "branch": 33,
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11356,
        11424
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "1251": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11356,
        11424
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "1253": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11356,
        11424
      ],
      "op": "MLOAD",
      "path": "75"
    },
    "1254": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1258": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1260": {
      "op": "SHL"
    },
    "1261": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11356,
        11424
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1262": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11356,
        11424
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "1263": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1265": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11356,
        11424
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x4"
    },
    "1267": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11356,
        11424
      ],
      "op": "DUP3",
      "path": "75"
    },
    "1268": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11356,
        11424
      ],
      "op": "ADD",
      "path": "75"
    },
    "1269": {
      "op": "MSTORE"
    },
    "1270": {
      "op": "PUSH1",
      "value": "0x1D"
    },
    "1272": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1274": {
      "op": "DUP3"
    },
    "1275": {
      "op": "ADD"
    },
    "1276": {
      "op": "MSTORE"
    },
    "1277": {
      "op": "PUSH32",
      "value": "0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000"
    },
    "1310": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1312": {
      "op": "DUP3"
    },
    "1313": {
      "op": "ADD"
    },
    "1314": {
      "op": "MSTORE"
    },
    "1315": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1317": {
      "op": "ADD"
    },
    "1318": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11356,
        11424
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x363"
    },
    "1321": {
      "op": "JUMP"
    },
    "1322": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11356,
        11424
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "1323": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11466,
        11517
      ],
      "op": "PUSH2",
      "path": "75",
      "statement": 21,
      "value": "0x537"
    },
    "1326": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11475,
        11480
      ],
      "op": "DUP5",
      "path": "75"
    },
    "1327": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11482,
        11489
      ],
      "op": "DUP5",
      "path": "75"
    },
    "1328": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11510,
        11516
      ],
      "op": "DUP5",
      "path": "75"
    },
    "1329": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11491,
        11507
      ],
      "op": "DUP5",
      "path": "75"
    },
    "1330": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11491,
        11516
      ],
      "op": "SUB",
      "path": "75"
    },
    "1331": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11466,
        11474
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x387"
    },
    "1334": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "jump": "i",
      "offset": [
        11466,
        11517
      ],
      "op": "JUMP",
      "path": "75"
    },
    "1335": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11466,
        11517
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "1336": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11227,
        11548
      ],
      "op": "POP",
      "path": "75"
    },
    "1337": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11107,
        11548
      ],
      "op": "POP",
      "path": "75"
    },
    "1338": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11107,
        11548
      ],
      "op": "POP",
      "path": "75"
    },
    "1339": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "offset": [
        11107,
        11548
      ],
      "op": "POP",
      "path": "75"
    },
    "1340": {
      "fn": "ERC20Upgradeable._spendAllowance",
      "jump": "o",
      "offset": [
        11107,
        11548
      ],
      "op": "JUMP",
      "path": "75"
    },
    "1341": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        7825,
        8476
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "1342": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1344": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1346": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1348": {
      "op": "SHL"
    },
    "1349": {
      "op": "SUB"
    },
    "1350": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        7951,
        7969
      ],
      "op": "DUP4",
      "path": "75",
      "statement": 22
    },
    "1351": {
      "branch": 34,
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        7951,
        7969
      ],
      "op": "AND",
      "path": "75"
    },
    "1352": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        7943,
        8011
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x5A1"
    },
    "1355": {
      "branch": 34,
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        7943,
        8011
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "1356": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        7943,
        8011
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "1358": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        7943,
        8011
      ],
      "op": "MLOAD",
      "path": "75"
    },
    "1359": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1363": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1365": {
      "op": "SHL"
    },
    "1366": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        7943,
        8011
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1367": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        7943,
        8011
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "1368": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1370": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        7943,
        8011
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x4"
    },
    "1372": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        7943,
        8011
      ],
      "op": "DUP3",
      "path": "75"
    },
    "1373": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        7943,
        8011
      ],
      "op": "ADD",
      "path": "75"
    },
    "1374": {
      "op": "MSTORE"
    },
    "1375": {
      "op": "PUSH1",
      "value": "0x25"
    },
    "1377": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1379": {
      "op": "DUP3"
    },
    "1380": {
      "op": "ADD"
    },
    "1381": {
      "op": "MSTORE"
    },
    "1382": {
      "op": "PUSH32",
      "value": "0x45524332303A207472616E736665722066726F6D20746865207A65726F206164"
    },
    "1415": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1417": {
      "op": "DUP3"
    },
    "1418": {
      "op": "ADD"
    },
    "1419": {
      "op": "MSTORE"
    },
    "1420": {
      "op": "PUSH5",
      "value": "0x6472657373"
    },
    "1426": {
      "op": "PUSH1",
      "value": "0xD8"
    },
    "1428": {
      "op": "SHL"
    },
    "1429": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1431": {
      "op": "DUP3"
    },
    "1432": {
      "op": "ADD"
    },
    "1433": {
      "op": "MSTORE"
    },
    "1434": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "1436": {
      "op": "ADD"
    },
    "1437": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        7943,
        8011
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x363"
    },
    "1440": {
      "op": "JUMP"
    },
    "1441": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        7943,
        8011
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "1442": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1444": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1446": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1448": {
      "op": "SHL"
    },
    "1449": {
      "op": "SUB"
    },
    "1450": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8029,
        8045
      ],
      "op": "DUP3",
      "path": "75",
      "statement": 23
    },
    "1451": {
      "branch": 35,
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8029,
        8045
      ],
      "op": "AND",
      "path": "75"
    },
    "1452": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8021,
        8085
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x603"
    },
    "1455": {
      "branch": 35,
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8021,
        8085
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "1456": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8021,
        8085
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "1458": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8021,
        8085
      ],
      "op": "MLOAD",
      "path": "75"
    },
    "1459": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1463": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1465": {
      "op": "SHL"
    },
    "1466": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8021,
        8085
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1467": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8021,
        8085
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "1468": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1470": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8021,
        8085
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x4"
    },
    "1472": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8021,
        8085
      ],
      "op": "DUP3",
      "path": "75"
    },
    "1473": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8021,
        8085
      ],
      "op": "ADD",
      "path": "75"
    },
    "1474": {
      "op": "MSTORE"
    },
    "1475": {
      "op": "PUSH1",
      "value": "0x23"
    },
    "1477": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1479": {
      "op": "DUP3"
    },
    "1480": {
      "op": "ADD"
    },
    "1481": {
      "op": "MSTORE"
    },
    "1482": {
      "op": "PUSH32",
      "value": "0x45524332303A207472616E7366657220746F20746865207A65726F2061646472"
    },
    "1515": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1517": {
      "op": "DUP3"
    },
    "1518": {
      "op": "ADD"
    },
    "1519": {
      "op": "MSTORE"
    },
    "1520": {
      "op": "PUSH3",
      "value": "0x657373"
    },
    "1524": {
      "op": "PUSH1",
      "value": "0xE8"
    },
    "1526": {
      "op": "SHL"
    },
    "1527": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1529": {
      "op": "DUP3"
    },
    "1530": {
      "op": "ADD"
    },
    "1531": {
      "op": "MSTORE"
    },
    "1532": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "1534": {
      "op": "ADD"
    },
    "1535": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8021,
        8085
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x363"
    },
    "1538": {
      "op": "JUMP"
    },
    "1539": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8021,
        8085
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "1540": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1542": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1544": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1546": {
      "op": "SHL"
    },
    "1547": {
      "op": "SUB"
    },
    "1548": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8167,
        8182
      ],
      "op": "DUP4",
      "path": "75"
    },
    "1549": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8167,
        8182
      ],
      "op": "AND",
      "path": "75"
    },
    "1550": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8145,
        8164
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x0"
    },
    "1552": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8167,
        8182
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "1553": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8167,
        8182
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1554": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8167,
        8182
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "1555": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8167,
        8176
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x33"
    },
    "1557": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8167,
        8182
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x20"
    },
    "1559": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8167,
        8182
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "1560": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8167,
        8182
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "1562": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8167,
        8182
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "1563": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8167,
        8182
      ],
      "op": "KECCAK256",
      "path": "75"
    },
    "1564": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8167,
        8182
      ],
      "op": "SLOAD",
      "path": "75"
    },
    "1565": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8200,
        8221
      ],
      "op": "DUP2",
      "path": "75",
      "statement": 24
    },
    "1566": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8200,
        8221
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1567": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8200,
        8221
      ],
      "op": "LT",
      "path": "75"
    },
    "1568": {
      "branch": 36,
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8200,
        8221
      ],
      "op": "ISZERO",
      "path": "75"
    },
    "1569": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8192,
        8264
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x67B"
    },
    "1572": {
      "branch": 36,
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8192,
        8264
      ],
      "op": "JUMPI",
      "path": "75"
    },
    "1573": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8192,
        8264
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "1575": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8192,
        8264
      ],
      "op": "MLOAD",
      "path": "75"
    },
    "1576": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1580": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1582": {
      "op": "SHL"
    },
    "1583": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8192,
        8264
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1584": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8192,
        8264
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "1585": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1587": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8192,
        8264
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x4"
    },
    "1589": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8192,
        8264
      ],
      "op": "DUP3",
      "path": "75"
    },
    "1590": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8192,
        8264
      ],
      "op": "ADD",
      "path": "75"
    },
    "1591": {
      "op": "MSTORE"
    },
    "1592": {
      "op": "PUSH1",
      "value": "0x26"
    },
    "1594": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1596": {
      "op": "DUP3"
    },
    "1597": {
      "op": "ADD"
    },
    "1598": {
      "op": "MSTORE"
    },
    "1599": {
      "op": "PUSH32",
      "value": "0x45524332303A207472616E7366657220616D6F756E7420657863656564732062"
    },
    "1632": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1634": {
      "op": "DUP3"
    },
    "1635": {
      "op": "ADD"
    },
    "1636": {
      "op": "MSTORE"
    },
    "1637": {
      "op": "PUSH6",
      "value": "0x616C616E6365"
    },
    "1644": {
      "op": "PUSH1",
      "value": "0xD0"
    },
    "1646": {
      "op": "SHL"
    },
    "1647": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1649": {
      "op": "DUP3"
    },
    "1650": {
      "op": "ADD"
    },
    "1651": {
      "op": "MSTORE"
    },
    "1652": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "1654": {
      "op": "ADD"
    },
    "1655": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8192,
        8264
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x363"
    },
    "1658": {
      "op": "JUMP"
    },
    "1659": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8192,
        8264
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "1660": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1662": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1664": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1666": {
      "op": "SHL"
    },
    "1667": {
      "op": "SUB"
    },
    "1668": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8298,
        8313
      ],
      "op": "DUP1",
      "path": "75",
      "statement": 25
    },
    "1669": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8298,
        8313
      ],
      "op": "DUP6",
      "path": "75"
    },
    "1670": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8298,
        8313
      ],
      "op": "AND",
      "path": "75"
    },
    "1671": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8298,
        8313
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x0"
    },
    "1673": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8298,
        8313
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "1674": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8298,
        8313
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1675": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8298,
        8313
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "1676": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8298,
        8307
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x33"
    },
    "1678": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8298,
        8313
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x20"
    },
    "1680": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8298,
        8313
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "1681": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8298,
        8313
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "1683": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8298,
        8313
      ],
      "op": "DUP1",
      "path": "75"
    },
    "1684": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8298,
        8313
      ],
      "op": "DUP3",
      "path": "75"
    },
    "1685": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8298,
        8313
      ],
      "op": "KECCAK256",
      "path": "75"
    },
    "1686": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8316,
        8336
      ],
      "op": "DUP6",
      "path": "75"
    },
    "1687": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8316,
        8336
      ],
      "op": "DUP6",
      "path": "75"
    },
    "1688": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8316,
        8336
      ],
      "op": "SUB",
      "path": "75"
    },
    "1689": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8298,
        8336
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "1690": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8298,
        8336
      ],
      "op": "SSTORE",
      "path": "75"
    },
    "1691": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8369
      ],
      "op": "SWAP2",
      "path": "75",
      "statement": 26
    },
    "1692": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8369
      ],
      "op": "DUP6",
      "path": "75"
    },
    "1693": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8369
      ],
      "op": "AND",
      "path": "75"
    },
    "1694": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8369
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1695": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8369
      ],
      "op": "MSTORE",
      "path": "75"
    },
    "1696": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8369
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "1697": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8369
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1698": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8369
      ],
      "op": "KECCAK256",
      "path": "75"
    },
    "1699": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8379
      ],
      "op": "DUP1",
      "path": "75"
    },
    "1700": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8379
      ],
      "op": "SLOAD",
      "path": "75"
    },
    "1701": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8330,
        8336
      ],
      "op": "DUP5",
      "path": "75"
    },
    "1702": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8330,
        8336
      ],
      "op": "SWAP3",
      "path": "75"
    },
    "1703": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8298,
        8313
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "1704": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8379
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x6B2"
    },
    "1707": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8379
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "1708": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8330,
        8336
      ],
      "op": "DUP5",
      "path": "75"
    },
    "1709": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8330,
        8336
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "1710": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8379
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x837"
    },
    "1713": {
      "fn": "ERC20Upgradeable._transfer",
      "jump": "i",
      "offset": [
        8356,
        8379
      ],
      "op": "JUMP",
      "path": "75"
    },
    "1714": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8379
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "1715": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8379
      ],
      "op": "SWAP3",
      "path": "75"
    },
    "1716": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8379
      ],
      "op": "POP",
      "path": "75"
    },
    "1717": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8379
      ],
      "op": "POP",
      "path": "75"
    },
    "1718": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8379
      ],
      "op": "DUP2",
      "path": "75"
    },
    "1719": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8379
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "1720": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8379
      ],
      "op": "SSTORE",
      "path": "75"
    },
    "1721": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8356,
        8379
      ],
      "op": "POP",
      "path": "75"
    },
    "1722": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8410,
        8412
      ],
      "op": "DUP3",
      "path": "75",
      "statement": 27
    },
    "1723": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1725": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1727": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1729": {
      "op": "SHL"
    },
    "1730": {
      "op": "SUB"
    },
    "1731": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8395,
        8421
      ],
      "op": "AND",
      "path": "75"
    },
    "1732": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8404,
        8408
      ],
      "op": "DUP5",
      "path": "75"
    },
    "1733": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1735": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1737": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1739": {
      "op": "SHL"
    },
    "1740": {
      "op": "SUB"
    },
    "1741": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8395,
        8421
      ],
      "op": "AND",
      "path": "75"
    },
    "1742": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8395,
        8421
      ],
      "op": "PUSH32",
      "path": "75",
      "value": "0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF"
    },
    "1775": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8414,
        8420
      ],
      "op": "DUP5",
      "path": "75"
    },
    "1776": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8395,
        8421
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "1778": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8395,
        8421
      ],
      "op": "MLOAD",
      "path": "75"
    },
    "1779": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8395,
        8421
      ],
      "op": "PUSH2",
      "path": "75",
      "value": "0x6FE"
    },
    "1782": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8395,
        8421
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "1783": {
      "op": "DUP2"
    },
    "1784": {
      "op": "MSTORE"
    },
    "1785": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1787": {
      "op": "ADD"
    },
    "1788": {
      "op": "SWAP1"
    },
    "1789": {
      "op": "JUMP"
    },
    "1790": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8395,
        8421
      ],
      "op": "JUMPDEST",
      "path": "75"
    },
    "1791": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8395,
        8421
      ],
      "op": "PUSH1",
      "path": "75",
      "value": "0x40"
    },
    "1793": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8395,
        8421
      ],
      "op": "MLOAD",
      "path": "75"
    },
    "1794": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8395,
        8421
      ],
      "op": "DUP1",
      "path": "75"
    },
    "1795": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8395,
        8421
      ],
      "op": "SWAP2",
      "path": "75"
    },
    "1796": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8395,
        8421
      ],
      "op": "SUB",
      "path": "75"
    },
    "1797": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8395,
        8421
      ],
      "op": "SWAP1",
      "path": "75"
    },
    "1798": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8395,
        8421
      ],
      "op": "LOG3",
      "path": "75"
    },
    "1799": {
      "fn": "ERC20Upgradeable._transfer",
      "offset": [
        8432,
        8469
      ],
      "op": "PUSH2",
      "path": "75",
      "statement": 28,
      "value": "0x537"
    },
    "1802": {
      "fn": "ERC20Upgradeable._beforeTokenTransfer",
      "offset": [
        12132,
        12253
      ],
      "op": "JUMP",
      "path": "75"
    },
    "1803": {
      "op": "JUMPDEST"
    },
    "1804": {
      "op": "DUP1"
    },
    "1805": {
      "op": "CALLDATALOAD"
    },
    "1806": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1808": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1810": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1812": {
      "op": "SHL"
    },
    "1813": {
      "op": "SUB"
    },
    "1814": {
      "op": "DUP2"
    },
    "1815": {
      "op": "AND"
    },
    "1816": {
      "op": "DUP2"
    },
    "1817": {
      "op": "EQ"
    },
    "1818": {
      "op": "PUSH2",
      "value": "0x722"
    },
    "1821": {
      "op": "JUMPI"
    },
    "1822": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1824": {
      "op": "DUP1"
    },
    "1825": {
      "op": "REVERT"
    },
    "1826": {
      "op": "JUMPDEST"
    },
    "1827": {
      "op": "SWAP2"
    },
    "1828": {
      "op": "SWAP1"
    },
    "1829": {
      "op": "POP"
    },
    "1830": {
      "jump": "o",
      "op": "JUMP"
    },
    "1831": {
      "op": "JUMPDEST"
    },
    "1832": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1834": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1836": {
      "op": "DUP3"
    },
    "1837": {
      "op": "DUP5"
    },
    "1838": {
      "op": "SUB"
    },
    "1839": {
      "op": "SLT"
    },
    "1840": {
      "op": "ISZERO"
    },
    "1841": {
      "op": "PUSH2",
      "value": "0x739"
    },
    "1844": {
      "op": "JUMPI"
    },
    "1845": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1847": {
      "op": "DUP1"
    },
    "1848": {
      "op": "REVERT"
    },
    "1849": {
      "op": "JUMPDEST"
    },
    "1850": {
      "op": "PUSH2",
      "value": "0x742"
    },
    "1853": {
      "op": "DUP3"
    },
    "1854": {
      "op": "PUSH2",
      "value": "0x70B"
    },
    "1857": {
      "jump": "i",
      "op": "JUMP"
    },
    "1858": {
      "op": "JUMPDEST"
    },
    "1859": {
      "op": "SWAP4"
    },
    "1860": {
      "op": "SWAP3"
    },
    "1861": {
      "op": "POP"
    },
    "1862": {
      "op": "POP"
    },
    "1863": {
      "op": "POP"
    },
    "1864": {
      "jump": "o",
      "op": "JUMP"
    },
    "1865": {
      "op": "JUMPDEST"
    },
    "1866": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1868": {
      "op": "DUP1"
    },
    "1869": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "1871": {
      "op": "DUP4"
    },
    "1872": {
      "op": "DUP6"
    },
    "1873": {
      "op": "SUB"
    },
    "1874": {
      "op": "SLT"
    },
    "1875": {
      "op": "ISZERO"
    },
    "1876": {
      "op": "PUSH2",
      "value": "0x75C"
    },
    "1879": {
      "op": "JUMPI"
    },
    "1880": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1882": {
      "op": "DUP1"
    },
    "1883": {
      "op": "REVERT"
    },
    "1884": {
      "op": "JUMPDEST"
    },
    "1885": {
      "op": "PUSH2",
      "value": "0x765"
    },
    "1888": {
      "op": "DUP4"
    },
    "1889": {
      "op": "PUSH2",
      "value": "0x70B"
    },
    "1892": {
      "jump": "i",
      "op": "JUMP"
    },
    "1893": {
      "op": "JUMPDEST"
    },
    "1894": {
      "op": "SWAP2"
    },
    "1895": {
      "op": "POP"
    },
    "1896": {
      "op": "PUSH2",
      "value": "0x773"
    },
    "1899": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1901": {
      "op": "DUP5"
    },
    "1902": {
      "op": "ADD"
    },
    "1903": {
      "op": "PUSH2",
      "value": "0x70B"
    },
    "1906": {
      "jump": "i",
      "op": "JUMP"
    },
    "1907": {
      "op": "JUMPDEST"
    },
    "1908": {
      "op": "SWAP1"
    },
    "1909": {
      "op": "POP"
    },
    "1910": {
      "op": "SWAP3"
    },
    "1911": {
      "op": "POP"
    },
    "1912": {
      "op": "SWAP3"
    },
    "1913": {
      "op": "SWAP1"
    },
    "1914": {
      "op": "POP"
    },
    "1915": {
      "jump": "o",
      "op": "JUMP"
    },
    "1916": {
      "op": "JUMPDEST"
    },
    "1917": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1919": {
      "op": "DUP1"
    },
    "1920": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1922": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "1924": {
      "op": "DUP5"
    },
    "1925": {
      "op": "DUP7"
    },
    "1926": {
      "op": "SUB"
    },
    "1927": {
      "op": "SLT"
    },
    "1928": {
      "op": "ISZERO"
    },
    "1929": {
      "op": "PUSH2",
      "value": "0x791"
    },
    "1932": {
      "op": "JUMPI"
    },
    "1933": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1935": {
      "op": "DUP1"
    },
    "1936": {
      "op": "REVERT"
    },
    "1937": {
      "op": "JUMPDEST"
    },
    "1938": {
      "op": "PUSH2",
      "value": "0x79A"
    },
    "1941": {
      "op": "DUP5"
    },
    "1942": {
      "op": "PUSH2",
      "value": "0x70B"
    },
    "1945": {
      "jump": "i",
      "op": "JUMP"
    },
    "1946": {
      "op": "JUMPDEST"
    },
    "1947": {
      "op": "SWAP3"
    },
    "1948": {
      "op": "POP"
    },
    "1949": {
      "op": "PUSH2",
      "value": "0x7A8"
    },
    "1952": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1954": {
      "op": "DUP6"
    },
    "1955": {
      "op": "ADD"
    },
    "1956": {
      "op": "PUSH2",
      "value": "0x70B"
    },
    "1959": {
      "jump": "i",
      "op": "JUMP"
    },
    "1960": {
      "op": "JUMPDEST"
    },
    "1961": {
      "op": "SWAP2"
    },
    "1962": {
      "op": "POP"
    },
    "1963": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "1965": {
      "op": "DUP5"
    },
    "1966": {
      "op": "ADD"
    },
    "1967": {
      "op": "CALLDATALOAD"
    },
    "1968": {
      "op": "SWAP1"
    },
    "1969": {
      "op": "POP"
    },
    "1970": {
      "op": "SWAP3"
    },
    "1971": {
      "op": "POP"
    },
    "1972": {
      "op": "SWAP3"
    },
    "1973": {
      "op": "POP"
    },
    "1974": {
      "op": "SWAP3"
    },
    "1975": {
      "jump": "o",
      "op": "JUMP"
    },
    "1976": {
      "op": "JUMPDEST"
    },
    "1977": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1979": {
      "op": "DUP1"
    },
    "1980": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "1982": {
      "op": "DUP4"
    },
    "1983": {
      "op": "DUP6"
    },
    "1984": {
      "op": "SUB"
    },
    "1985": {
      "op": "SLT"
    },
    "1986": {
      "op": "ISZERO"
    },
    "1987": {
      "op": "PUSH2",
      "value": "0x7CB"
    },
    "1990": {
      "op": "JUMPI"
    },
    "1991": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1993": {
      "op": "DUP1"
    },
    "1994": {
      "op": "REVERT"
    },
    "1995": {
      "op": "JUMPDEST"
    },
    "1996": {
      "op": "PUSH2",
      "value": "0x7D4"
    },
    "1999": {
      "op": "DUP4"
    },
    "2000": {
      "op": "PUSH2",
      "value": "0x70B"
    },
    "2003": {
      "jump": "i",
      "op": "JUMP"
    },
    "2004": {
      "op": "JUMPDEST"
    },
    "2005": {
      "op": "SWAP5"
    },
    "2006": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2008": {
      "op": "SWAP4"
    },
    "2009": {
      "op": "SWAP1"
    },
    "2010": {
      "op": "SWAP4"
    },
    "2011": {
      "op": "ADD"
    },
    "2012": {
      "op": "CALLDATALOAD"
    },
    "2013": {
      "op": "SWAP4"
    },
    "2014": {
      "op": "POP"
    },
    "2015": {
      "op": "POP"
    },
    "2016": {
      "op": "POP"
    },
    "2017": {
      "jump": "o",
      "op": "JUMP"
    },
    "2018": {
      "op": "JUMPDEST"
    },
    "2019": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2021": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2023": {
      "op": "DUP1"
    },
    "2024": {
      "op": "DUP4"
    },
    "2025": {
      "op": "MSTORE"
    },
    "2026": {
      "op": "DUP4"
    },
    "2027": {
      "op": "MLOAD"
    },
    "2028": {
      "op": "DUP1"
    },
    "2029": {
      "op": "DUP3"
    },
    "2030": {
      "op": "DUP6"
    },
    "2031": {
      "op": "ADD"
    },
    "2032": {
      "op": "MSTORE"
    },
    "2033": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2035": {
      "op": "JUMPDEST"
    },
    "2036": {
      "op": "DUP2"
    },
    "2037": {
      "op": "DUP2"
    },
    "2038": {
      "op": "LT"
    },
    "2039": {
      "op": "ISZERO"
    },
    "2040": {
      "op": "PUSH2",
      "value": "0x80F"
    },
    "2043": {
      "op": "JUMPI"
    },
    "2044": {
      "op": "DUP6"
    },
    "2045": {
      "op": "DUP2"
    },
    "2046": {
      "op": "ADD"
    },
    "2047": {
      "op": "DUP4"
    },
    "2048": {
      "op": "ADD"
    },
    "2049": {
      "op": "MLOAD"
    },
    "2050": {
      "op": "DUP6"
    },
    "2051": {
      "op": "DUP3"
    },
    "2052": {
      "op": "ADD"
    },
    "2053": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "2055": {
      "op": "ADD"
    },
    "2056": {
      "op": "MSTORE"
    },
    "2057": {
      "op": "DUP3"
    },
    "2058": {
      "op": "ADD"
    },
    "2059": {
      "op": "PUSH2",
      "value": "0x7F3"
    },
    "2062": {
      "op": "JUMP"
    },
    "2063": {
      "op": "JUMPDEST"
    },
    "2064": {
      "op": "DUP2"
    },
    "2065": {
      "op": "DUP2"
    },
    "2066": {
      "op": "GT"
    },
    "2067": {
      "op": "ISZERO"
    },
    "2068": {
      "op": "PUSH2",
      "value": "0x821"
    },
    "2071": {
      "op": "JUMPI"
    },
    "2072": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2074": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "2076": {
      "op": "DUP4"
    },
    "2077": {
      "op": "DUP8"
    },
    "2078": {
      "op": "ADD"
    },
    "2079": {
      "op": "ADD"
    },
    "2080": {
      "op": "MSTORE"
    },
    "2081": {
      "op": "JUMPDEST"
    },
    "2082": {
      "op": "POP"
    },
    "2083": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "2085": {
      "op": "ADD"
    },
    "2086": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "2088": {
      "op": "NOT"
    },
    "2089": {
      "op": "AND"
    },
    "2090": {
      "op": "SWAP3"
    },
    "2091": {
      "op": "SWAP1"
    },
    "2092": {
      "op": "SWAP3"
    },
    "2093": {
      "op": "ADD"
    },
    "2094": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "2096": {
      "op": "ADD"
    },
    "2097": {
      "op": "SWAP4"
    },
    "2098": {
      "op": "SWAP3"
    },
    "2099": {
      "op": "POP"
    },
    "2100": {
      "op": "POP"
    },
    "2101": {
      "op": "POP"
    },
    "2102": {
      "jump": "o",
      "op": "JUMP"
    },
    "2103": {
      "op": "JUMPDEST"
    },
    "2104": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2106": {
      "op": "DUP3"
    },
    "2107": {
      "op": "NOT"
    },
    "2108": {
      "op": "DUP3"
    },
    "2109": {
      "op": "GT"
    },
    "2110": {
      "op": "ISZERO"
    },
    "2111": {
      "op": "PUSH2",
      "value": "0x858"
    },
    "2114": {
      "op": "JUMPI"
    },
    "2115": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "2120": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "2122": {
      "op": "SHL"
    },
    "2123": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2125": {
      "op": "MSTORE"
    },
    "2126": {
      "op": "PUSH1",
      "value": "0x11"
    },
    "2128": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "2130": {
      "op": "MSTORE"
    },
    "2131": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "2133": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2135": {
      "op": "REVERT"
    },
    "2136": {
      "op": "JUMPDEST"
    },
    "2137": {
      "op": "POP"
    },
    "2138": {
      "op": "ADD"
    },
    "2139": {
      "op": "SWAP1"
    },
    "2140": {
      "jump": "o",
      "op": "JUMP"
    },
    "2141": {
      "op": "JUMPDEST"
    },
    "2142": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2144": {
      "op": "DUP2"
    },
    "2145": {
      "op": "DUP2"
    },
    "2146": {
      "op": "SHR"
    },
    "2147": {
      "op": "SWAP1"
    },
    "2148": {
      "op": "DUP3"
    },
    "2149": {
      "op": "AND"
    },
    "2150": {
      "op": "DUP1"
    },
    "2151": {
      "op": "PUSH2",
      "value": "0x871"
    },
    "2154": {
      "op": "JUMPI"
    },
    "2155": {
      "op": "PUSH1",
      "value": "0x7F"
    },
    "2157": {
      "op": "DUP3"
    },
    "2158": {
      "op": "AND"
    },
    "2159": {
      "op": "SWAP2"
    },
    "2160": {
      "op": "POP"
    },
    "2161": {
      "op": "JUMPDEST"
    },
    "2162": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2164": {
      "op": "DUP3"
    },
    "2165": {
      "op": "LT"
    },
    "2166": {
      "op": "DUP2"
    },
    "2167": {
      "op": "EQ"
    },
    "2168": {
      "op": "ISZERO"
    },
    "2169": {
      "op": "PUSH2",
      "value": "0x892"
    },
    "2172": {
      "op": "JUMPI"
    },
    "2173": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "2178": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "2180": {
      "op": "SHL"
    },
    "2181": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2183": {
      "op": "MSTORE"
    },
    "2184": {
      "op": "PUSH1",
      "value": "0x22"
    },
    "2186": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "2188": {
      "op": "MSTORE"
    },
    "2189": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "2191": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2193": {
      "op": "REVERT"
    },
    "2194": {
      "op": "JUMPDEST"
    },
    "2195": {
      "op": "POP"
    },
    "2196": {
      "op": "SWAP2"
    },
    "2197": {
      "op": "SWAP1"
    },
    "2198": {
      "op": "POP"
    },
    "2199": {
      "jump": "o",
      "op": "JUMP"
    }
  },
  "sha1": "fd12549c87e8c9e5fb75fb5786bbf38e8f8c5761",
  "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20Upgradeable.sol\";\nimport \"./extensions/IERC20MetadataUpgradeable.sol\";\nimport \"../../utils/ContextUpgradeable.sol\";\nimport \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20Upgradeable, IERC20MetadataUpgradeable {\n    mapping(address => uint256) private _balances;\n\n    mapping(address => mapping(address => uint256)) private _allowances;\n\n    uint256 private _totalSupply;\n\n    string private _name;\n    string private _symbol;\n\n    /**\n     * @dev Sets the values for {name} and {symbol}.\n     *\n     * The default value of {decimals} is 18. To select a different value for\n     * {decimals} you should overload it.\n     *\n     * All two of these values are immutable: they can only be set once during\n     * construction.\n     */\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\n        __ERC20_init_unchained(name_, symbol_);\n    }\n\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev Returns the number of decimals used to get its user representation.\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n     *\n     * Tokens usually opt for a value of 18, imitating the relationship between\n     * Ether and Wei. This is the value {ERC20} uses, unless this function is\n     * overridden;\n     *\n     * NOTE: This information is only used for _display_ purposes: it in\n     * no way affects any of the arithmetic of the contract, including\n     * {IERC20-balanceOf} and {IERC20-transfer}.\n     */\n    function decimals() public view virtual override returns (uint8) {\n        return 18;\n    }\n\n    /**\n     * @dev See {IERC20-totalSupply}.\n     */\n    function totalSupply() public view virtual override returns (uint256) {\n        return _totalSupply;\n    }\n\n    /**\n     * @dev See {IERC20-balanceOf}.\n     */\n    function balanceOf(address account) public view virtual override returns (uint256) {\n        return _balances[account];\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - the caller must have a balance of at least `amount`.\n     */\n    function transfer(address to, uint256 amount) public virtual override returns (bool) {\n        address owner = _msgSender();\n        _transfer(owner, to, amount);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-allowance}.\n     */\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\n        return _allowances[owner][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, amount);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * Emits an {Approval} event indicating the updated allowance. This is not\n     * required by the EIP. See the note at the beginning of {ERC20}.\n     *\n     * NOTE: Does not update the allowance if the current allowance\n     * is the maximum `uint256`.\n     *\n     * Requirements:\n     *\n     * - `from` and `to` cannot be the zero address.\n     * - `from` must have a balance of at least `amount`.\n     * - the caller must have allowance for ``from``'s tokens of at least\n     * `amount`.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 amount\n    ) public virtual override returns (bool) {\n        address spender = _msgSender();\n        _spendAllowance(from, spender, amount);\n        _transfer(from, to, amount);\n        return true;\n    }\n\n    /**\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\n     *\n     * This is an alternative to {approve} that can be used as a mitigation for\n     * problems described in {IERC20-approve}.\n     *\n     * Emits an {Approval} event indicating the updated allowance.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, _allowances[owner][spender] + addedValue);\n        return true;\n    }\n\n    /**\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\n     *\n     * This is an alternative to {approve} that can be used as a mitigation for\n     * problems described in {IERC20-approve}.\n     *\n     * Emits an {Approval} event indicating the updated allowance.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     * - `spender` must have allowance for the caller of at least\n     * `subtractedValue`.\n     */\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n        address owner = _msgSender();\n        uint256 currentAllowance = _allowances[owner][spender];\n        require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n        unchecked {\n            _approve(owner, spender, currentAllowance - subtractedValue);\n        }\n\n        return true;\n    }\n\n    /**\n     * @dev Moves `amount` of tokens from `sender` to `recipient`.\n     *\n     * This internal function is equivalent to {transfer}, and can be used to\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\n     *\n     * Emits a {Transfer} event.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `from` must have a balance of at least `amount`.\n     */\n    function _transfer(\n        address from,\n        address to,\n        uint256 amount\n    ) internal virtual {\n        require(from != address(0), \"ERC20: transfer from the zero address\");\n        require(to != address(0), \"ERC20: transfer to the zero address\");\n\n        _beforeTokenTransfer(from, to, amount);\n\n        uint256 fromBalance = _balances[from];\n        require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n        unchecked {\n            _balances[from] = fromBalance - amount;\n        }\n        _balances[to] += amount;\n\n        emit Transfer(from, to, amount);\n\n        _afterTokenTransfer(from, to, amount);\n    }\n\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n     * the total supply.\n     *\n     * Emits a {Transfer} event with `from` set to the zero address.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     */\n    function _mint(address account, uint256 amount) internal virtual {\n        require(account != address(0), \"ERC20: mint to the zero address\");\n\n        _beforeTokenTransfer(address(0), account, amount);\n\n        _totalSupply += amount;\n        _balances[account] += amount;\n        emit Transfer(address(0), account, amount);\n\n        _afterTokenTransfer(address(0), account, amount);\n    }\n\n    /**\n     * @dev Destroys `amount` tokens from `account`, reducing the\n     * total supply.\n     *\n     * Emits a {Transfer} event with `to` set to the zero address.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     * - `account` must have at least `amount` tokens.\n     */\n    function _burn(address account, uint256 amount) internal virtual {\n        require(account != address(0), \"ERC20: burn from the zero address\");\n\n        _beforeTokenTransfer(account, address(0), amount);\n\n        uint256 accountBalance = _balances[account];\n        require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n        unchecked {\n            _balances[account] = accountBalance - amount;\n        }\n        _totalSupply -= amount;\n\n        emit Transfer(account, address(0), amount);\n\n        _afterTokenTransfer(account, address(0), amount);\n    }\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n     *\n     * This internal function is equivalent to `approve`, and can be used to\n     * e.g. set automatic allowances for certain subsystems, etc.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `owner` cannot be the zero address.\n     * - `spender` cannot be the zero address.\n     */\n    function _approve(\n        address owner,\n        address spender,\n        uint256 amount\n    ) internal virtual {\n        require(owner != address(0), \"ERC20: approve from the zero address\");\n        require(spender != address(0), \"ERC20: approve to the zero address\");\n\n        _allowances[owner][spender] = amount;\n        emit Approval(owner, spender, amount);\n    }\n\n    /**\n     * @dev Spend `amount` form the allowance of `owner` toward `spender`.\n     *\n     * Does not update the allowance amount in case of infinite allowance.\n     * Revert if not enough allowance is available.\n     *\n     * Might emit an {Approval} event.\n     */\n    function _spendAllowance(\n        address owner,\n        address spender,\n        uint256 amount\n    ) internal virtual {\n        uint256 currentAllowance = allowance(owner, spender);\n        if (currentAllowance != type(uint256).max) {\n            require(currentAllowance >= amount, \"ERC20: insufficient allowance\");\n            unchecked {\n                _approve(owner, spender, currentAllowance - amount);\n            }\n        }\n    }\n\n    /**\n     * @dev Hook that is called before any transfer of tokens. This includes\n     * minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n     * will be transferred to `to`.\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(\n        address from,\n        address to,\n        uint256 amount\n    ) internal virtual {}\n\n    /**\n     * @dev Hook that is called after any transfer of tokens. This includes\n     * minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n     * has been transferred to `to`.\n     * - when `from` is zero, `amount` tokens have been minted for `to`.\n     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _afterTokenTransfer(\n        address from,\n        address to,\n        uint256 amount\n    ) internal virtual {}\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[45] private __gap;\n}\n",
  "sourceMap": "1482:11772:75:-:0;;;;;;;;;;;;;;;;;;;",
  "sourcePath": "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol",
  "type": "contract"
}