@superfluid-finance/ethereum-contracts 1.1.2-dev.9dad1ad.0 → 1.1.2-dev.ae7db1d.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/build/contracts/AccessControl.json +2 -3844
  2. package/build/contracts/AccessControlEnumerable.json +2 -1481
  3. package/build/contracts/Address.json +2 -3955
  4. package/build/contracts/AgreementBase.json +2 -673
  5. package/build/contracts/AgreementLibrary.json +2 -6857
  6. package/build/contracts/BaseRelayRecipient.json +2 -555
  7. package/build/contracts/BatchLiquidator.json +5 -1692
  8. package/build/contracts/BatchOperation.json +2 -6462
  9. package/build/contracts/CFAv1Library.json +5 -11203
  10. package/build/contracts/CallUtils.json +2 -2458
  11. package/build/contracts/ClosingOnUpdateFlowTestApp.json +5 -11276
  12. package/build/contracts/ConstantFlowAgreementV1.json +6 -49507
  13. package/build/contracts/Context.json +2 -240
  14. package/build/contracts/ContextDefinitions.json +2 -6462
  15. package/build/contracts/Create2.json +2 -1609
  16. package/build/contracts/CustomSuperTokenBase.json +2 -133
  17. package/build/contracts/ERC165.json +2 -285
  18. package/build/contracts/ERC1820Implementer.json +2 -704
  19. package/build/contracts/ERC20.json +2 -7393
  20. package/build/contracts/ERC20WithTokenInfo.json +2 -135
  21. package/build/contracts/ERC721.json +2 -11211
  22. package/build/contracts/ERC777Helper.json +2 -3115
  23. package/build/contracts/ERC777RecipientDrainingGas.json +2 -7800
  24. package/build/contracts/ERC777RecipientReverting.json +2 -7800
  25. package/build/contracts/EnumerableSet.json +2 -7044
  26. package/build/contracts/ExclusiveInflowTestApp.json +5 -11276
  27. package/build/contracts/FixedSizeData.json +2 -1823
  28. package/build/contracts/FlowExchangeTestApp.json +5 -11276
  29. package/build/contracts/FlowOperatorDefinitions.json +2 -6462
  30. package/build/contracts/FullUpgradableSuperTokenProxy.json +2 -1063
  31. package/build/contracts/IAccessControl.json +2 -848
  32. package/build/contracts/IAccessControlEnumerable.json +2 -288
  33. package/build/contracts/IConstantFlowAgreementV1.json +439 -4559
  34. package/build/contracts/IDAv1Library.json +2 -17764
  35. package/build/contracts/IERC165.json +2 -142
  36. package/build/contracts/IERC1820Implementer.json +2 -170
  37. package/build/contracts/IERC1820Registry.json +2 -1057
  38. package/build/contracts/IERC20.json +2 -917
  39. package/build/contracts/IERC20Metadata.json +2 -265
  40. package/build/contracts/IERC721.json +2 -1350
  41. package/build/contracts/IERC721Metadata.json +2 -297
  42. package/build/contracts/IERC721Receiver.json +2 -225
  43. package/build/contracts/IERC777.json +2 -1869
  44. package/build/contracts/IERC777Recipient.json +2 -252
  45. package/build/contracts/IERC777Sender.json +2 -252
  46. package/build/contracts/IInstantDistributionAgreementV1.json +2 -4690
  47. package/build/contracts/IMaticBridgedNativeSuperToken.json +2 -403
  48. package/build/contracts/IMaticBridgedNativeSuperTokenCustom.json +2 -403
  49. package/build/contracts/IMultiSigWallet.json +2 -191
  50. package/build/contracts/INativeSuperToken.json +2 -249
  51. package/build/contracts/INativeSuperTokenCustom.json +2 -249
  52. package/build/contracts/IRelayRecipient.json +2 -204
  53. package/build/contracts/IResolver.json +2 -305
  54. package/build/contracts/ISETH.json +2 -278
  55. package/build/contracts/ISETHCustom.json +2 -278
  56. package/build/contracts/ISuperAgreement.json +2 -347
  57. package/build/contracts/ISuperApp.json +2 -1392
  58. package/build/contracts/ISuperToken.json +2 -4144
  59. package/build/contracts/ISuperTokenFactory.json +2 -954
  60. package/build/contracts/ISuperfluid.json +2 -5311
  61. package/build/contracts/ISuperfluidGovernance.json +2 -1386
  62. package/build/contracts/ISuperfluidToken.json +2 -3261
  63. package/build/contracts/ITOGAv1.json +3 -11354
  64. package/build/contracts/ITOGAv2.json +3 -11354
  65. package/build/contracts/Initializable.json +2 -864
  66. package/build/contracts/InstantDistributionAgreementV1.json +2 -42755
  67. package/build/contracts/Int96SafeMath.json +2 -2628
  68. package/build/contracts/MaticBridgedNativeSuperTokenProxy.json +2 -1873
  69. package/build/contracts/MultiFlowApp.json +5 -13243
  70. package/build/contracts/NativeSuperTokenProxy.json +2 -830
  71. package/build/contracts/NonClosableOutflowTestApp.json +5 -11276
  72. package/build/contracts/Ownable.json +2 -1231
  73. package/build/contracts/Proxy.json +2 -784
  74. package/build/contracts/Resolver.json +2 -829
  75. package/build/contracts/SETHProxy.json +2 -2060
  76. package/build/contracts/SafeCast.json +2 -5127
  77. package/build/contracts/SafeERC20.json +2 -3034
  78. package/build/contracts/SafeMath.json +2 -3755
  79. package/build/contracts/SelfDeletingFlowTestApp.json +5 -11276
  80. package/build/contracts/SlotsBitmapLibrary.json +2 -3984
  81. package/build/contracts/Strings.json +2 -24715
  82. package/build/contracts/SuperAppBase.json +2 -1865
  83. package/build/contracts/SuperAppDefinitions.json +2 -6462
  84. package/build/contracts/SuperToken.json +2 -20577
  85. package/build/contracts/SuperTokenFactory.json +2 -4592
  86. package/build/contracts/SuperTokenFactoryBase.json +2 -4592
  87. package/build/contracts/SuperTokenFactoryHelper.json +2 -4592
  88. package/build/contracts/SuperUpgrader.json +2 -4156
  89. package/build/contracts/Superfluid.json +2 -37467
  90. package/build/contracts/SuperfluidGovernanceBase.json +2 -14598
  91. package/build/contracts/SuperfluidGovernanceConfigs.json +2 -6462
  92. package/build/contracts/SuperfluidGovernanceII.json +2 -868
  93. package/build/contracts/SuperfluidGovernanceIIProxy.json +2 -868
  94. package/build/contracts/SuperfluidLoader.json +2 -1314
  95. package/build/contracts/SuperfluidToken.json +2 -11206
  96. package/build/contracts/TOGA.json +5 -11356
  97. package/build/contracts/TestGovernance.json +2 -1775
  98. package/build/contracts/TestToken.json +2 -792
  99. package/build/contracts/TokenCustodian.json +2 -1959
  100. package/build/contracts/TokenInfo.json +2 -236
  101. package/build/contracts/UInt128SafeMath.json +2 -786
  102. package/build/contracts/UUPSProxiable.json +2 -1185
  103. package/build/contracts/UUPSProxy.json +2 -728
  104. package/build/contracts/UUPSUtils.json +2 -345
  105. package/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol +4 -4
  106. package/package.json +11 -17
  107. package/scripts/deploy-matic-bridged-native-super-token.js +1 -0
  108. package/scripts/deploy-super-token.js +1 -0
  109. package/scripts/deploy-test-token.js +2 -0
  110. package/scripts/deploy-unlisted-native-super-token.js +2 -0
  111. package/scripts/deploy-unlisted-super-token.js +1 -0
  112. package/scripts/libs/truffleScriptRunnerFactory.js +2 -2
  113. package/scripts/resolver-register-token.js +1 -1
@@ -4058,3855 +4058,13 @@
4058
4058
  ],
4059
4059
  "src": "108:7348:0"
4060
4060
  },
4061
- "legacyAST": {
4062
- "absolutePath": "@openzeppelin/contracts/access/AccessControl.sol",
4063
- "exportedSymbols": {
4064
- "AccessControl": [
4065
- 308
4066
- ],
4067
- "Context": [
4068
- 3220
4069
- ],
4070
- "ERC165": [
4071
- 3558
4072
- ],
4073
- "IAccessControl": [
4074
- 506
4075
- ],
4076
- "IERC165": [
4077
- 3629
4078
- ],
4079
- "Strings": [
4080
- 3534
4081
- ]
4082
- },
4083
- "id": 309,
4084
- "license": "MIT",
4085
- "nodeType": "SourceUnit",
4086
- "nodes": [
4087
- {
4088
- "id": 1,
4089
- "literals": [
4090
- "solidity",
4091
- "^",
4092
- "0.8",
4093
- ".0"
4094
- ],
4095
- "nodeType": "PragmaDirective",
4096
- "src": "108:23:0"
4097
- },
4098
- {
4099
- "absolutePath": "@openzeppelin/contracts/access/IAccessControl.sol",
4100
- "file": "./IAccessControl.sol",
4101
- "id": 2,
4102
- "nameLocation": "-1:-1:-1",
4103
- "nodeType": "ImportDirective",
4104
- "scope": 309,
4105
- "sourceUnit": 507,
4106
- "src": "133:30:0",
4107
- "symbolAliases": [],
4108
- "unitAlias": ""
4109
- },
4110
- {
4111
- "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
4112
- "file": "../utils/Context.sol",
4113
- "id": 3,
4114
- "nameLocation": "-1:-1:-1",
4115
- "nodeType": "ImportDirective",
4116
- "scope": 309,
4117
- "sourceUnit": 3221,
4118
- "src": "164:30:0",
4119
- "symbolAliases": [],
4120
- "unitAlias": ""
4121
- },
4122
- {
4123
- "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
4124
- "file": "../utils/Strings.sol",
4125
- "id": 4,
4126
- "nameLocation": "-1:-1:-1",
4127
- "nodeType": "ImportDirective",
4128
- "scope": 309,
4129
- "sourceUnit": 3535,
4130
- "src": "195:30:0",
4131
- "symbolAliases": [],
4132
- "unitAlias": ""
4133
- },
4134
- {
4135
- "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
4136
- "file": "../utils/introspection/ERC165.sol",
4137
- "id": 5,
4138
- "nameLocation": "-1:-1:-1",
4139
- "nodeType": "ImportDirective",
4140
- "scope": 309,
4141
- "sourceUnit": 3559,
4142
- "src": "226:43:0",
4143
- "symbolAliases": [],
4144
- "unitAlias": ""
4145
- },
4146
- {
4147
- "abstract": true,
4148
- "baseContracts": [
4149
- {
4150
- "baseName": {
4151
- "id": 7,
4152
- "name": "Context",
4153
- "nodeType": "IdentifierPath",
4154
- "referencedDeclaration": 3220,
4155
- "src": "1841:7:0"
4156
- },
4157
- "id": 8,
4158
- "nodeType": "InheritanceSpecifier",
4159
- "src": "1841:7:0"
4160
- },
4161
- {
4162
- "baseName": {
4163
- "id": 9,
4164
- "name": "IAccessControl",
4165
- "nodeType": "IdentifierPath",
4166
- "referencedDeclaration": 506,
4167
- "src": "1850:14:0"
4168
- },
4169
- "id": 10,
4170
- "nodeType": "InheritanceSpecifier",
4171
- "src": "1850:14:0"
4172
- },
4173
- {
4174
- "baseName": {
4175
- "id": 11,
4176
- "name": "ERC165",
4177
- "nodeType": "IdentifierPath",
4178
- "referencedDeclaration": 3558,
4179
- "src": "1866:6:0"
4180
- },
4181
- "id": 12,
4182
- "nodeType": "InheritanceSpecifier",
4183
- "src": "1866:6:0"
4184
- }
4185
- ],
4186
- "canonicalName": "AccessControl",
4187
- "contractDependencies": [],
4188
- "contractKind": "contract",
4189
- "documentation": {
4190
- "id": 6,
4191
- "nodeType": "StructuredDocumentation",
4192
- "src": "271:1534:0",
4193
- "text": " @dev Contract module that allows children to implement role-based access\n control mechanisms. This is a lightweight version that doesn't allow enumerating role\n members except through off-chain means by accessing the contract event logs. Some\n applications may benefit from on-chain enumerability, for those cases see\n {AccessControlEnumerable}.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```\n function foo() public {\n require(hasRole(MY_ROLE, msg.sender));\n ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it."
4194
- },
4195
- "fullyImplemented": true,
4196
- "id": 308,
4197
- "linearizedBaseContracts": [
4198
- 308,
4199
- 3558,
4200
- 3629,
4201
- 506,
4202
- 3220
4203
- ],
4204
- "name": "AccessControl",
4205
- "nameLocation": "1824:13:0",
4206
- "nodeType": "ContractDefinition",
4207
- "nodes": [
4208
- {
4209
- "canonicalName": "AccessControl.RoleData",
4210
- "id": 19,
4211
- "members": [
4212
- {
4213
- "constant": false,
4214
- "id": 16,
4215
- "mutability": "mutable",
4216
- "name": "members",
4217
- "nameLocation": "1930:7:0",
4218
- "nodeType": "VariableDeclaration",
4219
- "scope": 19,
4220
- "src": "1905:32:0",
4221
- "stateVariable": false,
4222
- "storageLocation": "default",
4223
- "typeDescriptions": {
4224
- "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
4225
- "typeString": "mapping(address => bool)"
4226
- },
4227
- "typeName": {
4228
- "id": 15,
4229
- "keyType": {
4230
- "id": 13,
4231
- "name": "address",
4232
- "nodeType": "ElementaryTypeName",
4233
- "src": "1913:7:0",
4234
- "typeDescriptions": {
4235
- "typeIdentifier": "t_address",
4236
- "typeString": "address"
4237
- }
4238
- },
4239
- "nodeType": "Mapping",
4240
- "src": "1905:24:0",
4241
- "typeDescriptions": {
4242
- "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
4243
- "typeString": "mapping(address => bool)"
4244
- },
4245
- "valueType": {
4246
- "id": 14,
4247
- "name": "bool",
4248
- "nodeType": "ElementaryTypeName",
4249
- "src": "1924:4:0",
4250
- "typeDescriptions": {
4251
- "typeIdentifier": "t_bool",
4252
- "typeString": "bool"
4253
- }
4254
- }
4255
- },
4256
- "visibility": "internal"
4257
- },
4258
- {
4259
- "constant": false,
4260
- "id": 18,
4261
- "mutability": "mutable",
4262
- "name": "adminRole",
4263
- "nameLocation": "1955:9:0",
4264
- "nodeType": "VariableDeclaration",
4265
- "scope": 19,
4266
- "src": "1947:17:0",
4267
- "stateVariable": false,
4268
- "storageLocation": "default",
4269
- "typeDescriptions": {
4270
- "typeIdentifier": "t_bytes32",
4271
- "typeString": "bytes32"
4272
- },
4273
- "typeName": {
4274
- "id": 17,
4275
- "name": "bytes32",
4276
- "nodeType": "ElementaryTypeName",
4277
- "src": "1947:7:0",
4278
- "typeDescriptions": {
4279
- "typeIdentifier": "t_bytes32",
4280
- "typeString": "bytes32"
4281
- }
4282
- },
4283
- "visibility": "internal"
4284
- }
4285
- ],
4286
- "name": "RoleData",
4287
- "nameLocation": "1886:8:0",
4288
- "nodeType": "StructDefinition",
4289
- "scope": 308,
4290
- "src": "1879:92:0",
4291
- "visibility": "public"
4292
- },
4293
- {
4294
- "constant": false,
4295
- "id": 24,
4296
- "mutability": "mutable",
4297
- "name": "_roles",
4298
- "nameLocation": "2014:6:0",
4299
- "nodeType": "VariableDeclaration",
4300
- "scope": 308,
4301
- "src": "1977:43:0",
4302
- "stateVariable": true,
4303
- "storageLocation": "default",
4304
- "typeDescriptions": {
4305
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$",
4306
- "typeString": "mapping(bytes32 => struct AccessControl.RoleData)"
4307
- },
4308
- "typeName": {
4309
- "id": 23,
4310
- "keyType": {
4311
- "id": 20,
4312
- "name": "bytes32",
4313
- "nodeType": "ElementaryTypeName",
4314
- "src": "1985:7:0",
4315
- "typeDescriptions": {
4316
- "typeIdentifier": "t_bytes32",
4317
- "typeString": "bytes32"
4318
- }
4319
- },
4320
- "nodeType": "Mapping",
4321
- "src": "1977:28:0",
4322
- "typeDescriptions": {
4323
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$",
4324
- "typeString": "mapping(bytes32 => struct AccessControl.RoleData)"
4325
- },
4326
- "valueType": {
4327
- "id": 22,
4328
- "nodeType": "UserDefinedTypeName",
4329
- "pathNode": {
4330
- "id": 21,
4331
- "name": "RoleData",
4332
- "nodeType": "IdentifierPath",
4333
- "referencedDeclaration": 19,
4334
- "src": "1996:8:0"
4335
- },
4336
- "referencedDeclaration": 19,
4337
- "src": "1996:8:0",
4338
- "typeDescriptions": {
4339
- "typeIdentifier": "t_struct$_RoleData_$19_storage_ptr",
4340
- "typeString": "struct AccessControl.RoleData"
4341
- }
4342
- }
4343
- },
4344
- "visibility": "private"
4345
- },
4346
- {
4347
- "constant": true,
4348
- "functionSelector": "a217fddf",
4349
- "id": 27,
4350
- "mutability": "constant",
4351
- "name": "DEFAULT_ADMIN_ROLE",
4352
- "nameLocation": "2051:18:0",
4353
- "nodeType": "VariableDeclaration",
4354
- "scope": 308,
4355
- "src": "2027:49:0",
4356
- "stateVariable": true,
4357
- "storageLocation": "default",
4358
- "typeDescriptions": {
4359
- "typeIdentifier": "t_bytes32",
4360
- "typeString": "bytes32"
4361
- },
4362
- "typeName": {
4363
- "id": 25,
4364
- "name": "bytes32",
4365
- "nodeType": "ElementaryTypeName",
4366
- "src": "2027:7:0",
4367
- "typeDescriptions": {
4368
- "typeIdentifier": "t_bytes32",
4369
- "typeString": "bytes32"
4370
- }
4371
- },
4372
- "value": {
4373
- "hexValue": "30783030",
4374
- "id": 26,
4375
- "isConstant": false,
4376
- "isLValue": false,
4377
- "isPure": true,
4378
- "kind": "number",
4379
- "lValueRequested": false,
4380
- "nodeType": "Literal",
4381
- "src": "2072:4:0",
4382
- "typeDescriptions": {
4383
- "typeIdentifier": "t_rational_0_by_1",
4384
- "typeString": "int_const 0"
4385
- },
4386
- "value": "0x00"
4387
- },
4388
- "visibility": "public"
4389
- },
4390
- {
4391
- "body": {
4392
- "id": 39,
4393
- "nodeType": "Block",
4394
- "src": "2495:58:0",
4395
- "statements": [
4396
- {
4397
- "expression": {
4398
- "arguments": [
4399
- {
4400
- "id": 33,
4401
- "name": "role",
4402
- "nodeType": "Identifier",
4403
- "overloadedDeclarations": [],
4404
- "referencedDeclaration": 30,
4405
- "src": "2516:4:0",
4406
- "typeDescriptions": {
4407
- "typeIdentifier": "t_bytes32",
4408
- "typeString": "bytes32"
4409
- }
4410
- },
4411
- {
4412
- "arguments": [],
4413
- "expression": {
4414
- "argumentTypes": [],
4415
- "id": 34,
4416
- "name": "_msgSender",
4417
- "nodeType": "Identifier",
4418
- "overloadedDeclarations": [],
4419
- "referencedDeclaration": 3210,
4420
- "src": "2522:10:0",
4421
- "typeDescriptions": {
4422
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
4423
- "typeString": "function () view returns (address)"
4424
- }
4425
- },
4426
- "id": 35,
4427
- "isConstant": false,
4428
- "isLValue": false,
4429
- "isPure": false,
4430
- "kind": "functionCall",
4431
- "lValueRequested": false,
4432
- "names": [],
4433
- "nodeType": "FunctionCall",
4434
- "src": "2522:12:0",
4435
- "tryCall": false,
4436
- "typeDescriptions": {
4437
- "typeIdentifier": "t_address",
4438
- "typeString": "address"
4439
- }
4440
- }
4441
- ],
4442
- "expression": {
4443
- "argumentTypes": [
4444
- {
4445
- "typeIdentifier": "t_bytes32",
4446
- "typeString": "bytes32"
4447
- },
4448
- {
4449
- "typeIdentifier": "t_address",
4450
- "typeString": "address"
4451
- }
4452
- ],
4453
- "id": 32,
4454
- "name": "_checkRole",
4455
- "nodeType": "Identifier",
4456
- "overloadedDeclarations": [],
4457
- "referencedDeclaration": 124,
4458
- "src": "2505:10:0",
4459
- "typeDescriptions": {
4460
- "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$__$",
4461
- "typeString": "function (bytes32,address) view"
4462
- }
4463
- },
4464
- "id": 36,
4465
- "isConstant": false,
4466
- "isLValue": false,
4467
- "isPure": false,
4468
- "kind": "functionCall",
4469
- "lValueRequested": false,
4470
- "names": [],
4471
- "nodeType": "FunctionCall",
4472
- "src": "2505:30:0",
4473
- "tryCall": false,
4474
- "typeDescriptions": {
4475
- "typeIdentifier": "t_tuple$__$",
4476
- "typeString": "tuple()"
4477
- }
4478
- },
4479
- "id": 37,
4480
- "nodeType": "ExpressionStatement",
4481
- "src": "2505:30:0"
4482
- },
4483
- {
4484
- "id": 38,
4485
- "nodeType": "PlaceholderStatement",
4486
- "src": "2545:1:0"
4487
- }
4488
- ]
4489
- },
4490
- "documentation": {
4491
- "id": 28,
4492
- "nodeType": "StructuredDocumentation",
4493
- "src": "2083:375:0",
4494
- "text": " @dev Modifier that checks that an account has a specific role. Reverts\n with a standardized message including the required role.\n The format of the revert reason is given by the following regular expression:\n /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n _Available since v4.1._"
4495
- },
4496
- "id": 40,
4497
- "name": "onlyRole",
4498
- "nameLocation": "2472:8:0",
4499
- "nodeType": "ModifierDefinition",
4500
- "parameters": {
4501
- "id": 31,
4502
- "nodeType": "ParameterList",
4503
- "parameters": [
4504
- {
4505
- "constant": false,
4506
- "id": 30,
4507
- "mutability": "mutable",
4508
- "name": "role",
4509
- "nameLocation": "2489:4:0",
4510
- "nodeType": "VariableDeclaration",
4511
- "scope": 40,
4512
- "src": "2481:12:0",
4513
- "stateVariable": false,
4514
- "storageLocation": "default",
4515
- "typeDescriptions": {
4516
- "typeIdentifier": "t_bytes32",
4517
- "typeString": "bytes32"
4518
- },
4519
- "typeName": {
4520
- "id": 29,
4521
- "name": "bytes32",
4522
- "nodeType": "ElementaryTypeName",
4523
- "src": "2481:7:0",
4524
- "typeDescriptions": {
4525
- "typeIdentifier": "t_bytes32",
4526
- "typeString": "bytes32"
4527
- }
4528
- },
4529
- "visibility": "internal"
4530
- }
4531
- ],
4532
- "src": "2480:14:0"
4533
- },
4534
- "src": "2463:90:0",
4535
- "virtual": false,
4536
- "visibility": "internal"
4537
- },
4538
- {
4539
- "baseFunctions": [
4540
- 3557
4541
- ],
4542
- "body": {
4543
- "id": 61,
4544
- "nodeType": "Block",
4545
- "src": "2711:111:0",
4546
- "statements": [
4547
- {
4548
- "expression": {
4549
- "commonType": {
4550
- "typeIdentifier": "t_bool",
4551
- "typeString": "bool"
4552
- },
4553
- "id": 59,
4554
- "isConstant": false,
4555
- "isLValue": false,
4556
- "isPure": false,
4557
- "lValueRequested": false,
4558
- "leftExpression": {
4559
- "commonType": {
4560
- "typeIdentifier": "t_bytes4",
4561
- "typeString": "bytes4"
4562
- },
4563
- "id": 54,
4564
- "isConstant": false,
4565
- "isLValue": false,
4566
- "isPure": false,
4567
- "lValueRequested": false,
4568
- "leftExpression": {
4569
- "id": 49,
4570
- "name": "interfaceId",
4571
- "nodeType": "Identifier",
4572
- "overloadedDeclarations": [],
4573
- "referencedDeclaration": 43,
4574
- "src": "2728:11:0",
4575
- "typeDescriptions": {
4576
- "typeIdentifier": "t_bytes4",
4577
- "typeString": "bytes4"
4578
- }
4579
- },
4580
- "nodeType": "BinaryOperation",
4581
- "operator": "==",
4582
- "rightExpression": {
4583
- "expression": {
4584
- "arguments": [
4585
- {
4586
- "id": 51,
4587
- "name": "IAccessControl",
4588
- "nodeType": "Identifier",
4589
- "overloadedDeclarations": [],
4590
- "referencedDeclaration": 506,
4591
- "src": "2748:14:0",
4592
- "typeDescriptions": {
4593
- "typeIdentifier": "t_type$_t_contract$_IAccessControl_$506_$",
4594
- "typeString": "type(contract IAccessControl)"
4595
- }
4596
- }
4597
- ],
4598
- "expression": {
4599
- "argumentTypes": [
4600
- {
4601
- "typeIdentifier": "t_type$_t_contract$_IAccessControl_$506_$",
4602
- "typeString": "type(contract IAccessControl)"
4603
- }
4604
- ],
4605
- "id": 50,
4606
- "name": "type",
4607
- "nodeType": "Identifier",
4608
- "overloadedDeclarations": [],
4609
- "referencedDeclaration": 4294967269,
4610
- "src": "2743:4:0",
4611
- "typeDescriptions": {
4612
- "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
4613
- "typeString": "function () pure"
4614
- }
4615
- },
4616
- "id": 52,
4617
- "isConstant": false,
4618
- "isLValue": false,
4619
- "isPure": true,
4620
- "kind": "functionCall",
4621
- "lValueRequested": false,
4622
- "names": [],
4623
- "nodeType": "FunctionCall",
4624
- "src": "2743:20:0",
4625
- "tryCall": false,
4626
- "typeDescriptions": {
4627
- "typeIdentifier": "t_magic_meta_type_t_contract$_IAccessControl_$506",
4628
- "typeString": "type(contract IAccessControl)"
4629
- }
4630
- },
4631
- "id": 53,
4632
- "isConstant": false,
4633
- "isLValue": false,
4634
- "isPure": true,
4635
- "lValueRequested": false,
4636
- "memberName": "interfaceId",
4637
- "nodeType": "MemberAccess",
4638
- "src": "2743:32:0",
4639
- "typeDescriptions": {
4640
- "typeIdentifier": "t_bytes4",
4641
- "typeString": "bytes4"
4642
- }
4643
- },
4644
- "src": "2728:47:0",
4645
- "typeDescriptions": {
4646
- "typeIdentifier": "t_bool",
4647
- "typeString": "bool"
4648
- }
4649
- },
4650
- "nodeType": "BinaryOperation",
4651
- "operator": "||",
4652
- "rightExpression": {
4653
- "arguments": [
4654
- {
4655
- "id": 57,
4656
- "name": "interfaceId",
4657
- "nodeType": "Identifier",
4658
- "overloadedDeclarations": [],
4659
- "referencedDeclaration": 43,
4660
- "src": "2803:11:0",
4661
- "typeDescriptions": {
4662
- "typeIdentifier": "t_bytes4",
4663
- "typeString": "bytes4"
4664
- }
4665
- }
4666
- ],
4667
- "expression": {
4668
- "argumentTypes": [
4669
- {
4670
- "typeIdentifier": "t_bytes4",
4671
- "typeString": "bytes4"
4672
- }
4673
- ],
4674
- "expression": {
4675
- "id": 55,
4676
- "name": "super",
4677
- "nodeType": "Identifier",
4678
- "overloadedDeclarations": [],
4679
- "referencedDeclaration": 4294967271,
4680
- "src": "2779:5:0",
4681
- "typeDescriptions": {
4682
- "typeIdentifier": "t_type$_t_super$_AccessControl_$308_$",
4683
- "typeString": "type(contract super AccessControl)"
4684
- }
4685
- },
4686
- "id": 56,
4687
- "isConstant": false,
4688
- "isLValue": false,
4689
- "isPure": false,
4690
- "lValueRequested": false,
4691
- "memberName": "supportsInterface",
4692
- "nodeType": "MemberAccess",
4693
- "referencedDeclaration": 3557,
4694
- "src": "2779:23:0",
4695
- "typeDescriptions": {
4696
- "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
4697
- "typeString": "function (bytes4) view returns (bool)"
4698
- }
4699
- },
4700
- "id": 58,
4701
- "isConstant": false,
4702
- "isLValue": false,
4703
- "isPure": false,
4704
- "kind": "functionCall",
4705
- "lValueRequested": false,
4706
- "names": [],
4707
- "nodeType": "FunctionCall",
4708
- "src": "2779:36:0",
4709
- "tryCall": false,
4710
- "typeDescriptions": {
4711
- "typeIdentifier": "t_bool",
4712
- "typeString": "bool"
4713
- }
4714
- },
4715
- "src": "2728:87:0",
4716
- "typeDescriptions": {
4717
- "typeIdentifier": "t_bool",
4718
- "typeString": "bool"
4719
- }
4720
- },
4721
- "functionReturnParameters": 48,
4722
- "id": 60,
4723
- "nodeType": "Return",
4724
- "src": "2721:94:0"
4725
- }
4726
- ]
4727
- },
4728
- "documentation": {
4729
- "id": 41,
4730
- "nodeType": "StructuredDocumentation",
4731
- "src": "2559:56:0",
4732
- "text": " @dev See {IERC165-supportsInterface}."
4733
- },
4734
- "functionSelector": "01ffc9a7",
4735
- "id": 62,
4736
- "implemented": true,
4737
- "kind": "function",
4738
- "modifiers": [],
4739
- "name": "supportsInterface",
4740
- "nameLocation": "2629:17:0",
4741
- "nodeType": "FunctionDefinition",
4742
- "overrides": {
4743
- "id": 45,
4744
- "nodeType": "OverrideSpecifier",
4745
- "overrides": [],
4746
- "src": "2687:8:0"
4747
- },
4748
- "parameters": {
4749
- "id": 44,
4750
- "nodeType": "ParameterList",
4751
- "parameters": [
4752
- {
4753
- "constant": false,
4754
- "id": 43,
4755
- "mutability": "mutable",
4756
- "name": "interfaceId",
4757
- "nameLocation": "2654:11:0",
4758
- "nodeType": "VariableDeclaration",
4759
- "scope": 62,
4760
- "src": "2647:18:0",
4761
- "stateVariable": false,
4762
- "storageLocation": "default",
4763
- "typeDescriptions": {
4764
- "typeIdentifier": "t_bytes4",
4765
- "typeString": "bytes4"
4766
- },
4767
- "typeName": {
4768
- "id": 42,
4769
- "name": "bytes4",
4770
- "nodeType": "ElementaryTypeName",
4771
- "src": "2647:6:0",
4772
- "typeDescriptions": {
4773
- "typeIdentifier": "t_bytes4",
4774
- "typeString": "bytes4"
4775
- }
4776
- },
4777
- "visibility": "internal"
4778
- }
4779
- ],
4780
- "src": "2646:20:0"
4781
- },
4782
- "returnParameters": {
4783
- "id": 48,
4784
- "nodeType": "ParameterList",
4785
- "parameters": [
4786
- {
4787
- "constant": false,
4788
- "id": 47,
4789
- "mutability": "mutable",
4790
- "name": "",
4791
- "nameLocation": "-1:-1:-1",
4792
- "nodeType": "VariableDeclaration",
4793
- "scope": 62,
4794
- "src": "2705:4:0",
4795
- "stateVariable": false,
4796
- "storageLocation": "default",
4797
- "typeDescriptions": {
4798
- "typeIdentifier": "t_bool",
4799
- "typeString": "bool"
4800
- },
4801
- "typeName": {
4802
- "id": 46,
4803
- "name": "bool",
4804
- "nodeType": "ElementaryTypeName",
4805
- "src": "2705:4:0",
4806
- "typeDescriptions": {
4807
- "typeIdentifier": "t_bool",
4808
- "typeString": "bool"
4809
- }
4810
- },
4811
- "visibility": "internal"
4812
- }
4813
- ],
4814
- "src": "2704:6:0"
4815
- },
4816
- "scope": 308,
4817
- "src": "2620:202:0",
4818
- "stateMutability": "view",
4819
- "virtual": true,
4820
- "visibility": "public"
4821
- },
4822
- {
4823
- "baseFunctions": [
4824
- 473
4825
- ],
4826
- "body": {
4827
- "id": 80,
4828
- "nodeType": "Block",
4829
- "src": "3001:53:0",
4830
- "statements": [
4831
- {
4832
- "expression": {
4833
- "baseExpression": {
4834
- "expression": {
4835
- "baseExpression": {
4836
- "id": 73,
4837
- "name": "_roles",
4838
- "nodeType": "Identifier",
4839
- "overloadedDeclarations": [],
4840
- "referencedDeclaration": 24,
4841
- "src": "3018:6:0",
4842
- "typeDescriptions": {
4843
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$",
4844
- "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)"
4845
- }
4846
- },
4847
- "id": 75,
4848
- "indexExpression": {
4849
- "id": 74,
4850
- "name": "role",
4851
- "nodeType": "Identifier",
4852
- "overloadedDeclarations": [],
4853
- "referencedDeclaration": 65,
4854
- "src": "3025:4:0",
4855
- "typeDescriptions": {
4856
- "typeIdentifier": "t_bytes32",
4857
- "typeString": "bytes32"
4858
- }
4859
- },
4860
- "isConstant": false,
4861
- "isLValue": true,
4862
- "isPure": false,
4863
- "lValueRequested": false,
4864
- "nodeType": "IndexAccess",
4865
- "src": "3018:12:0",
4866
- "typeDescriptions": {
4867
- "typeIdentifier": "t_struct$_RoleData_$19_storage",
4868
- "typeString": "struct AccessControl.RoleData storage ref"
4869
- }
4870
- },
4871
- "id": 76,
4872
- "isConstant": false,
4873
- "isLValue": true,
4874
- "isPure": false,
4875
- "lValueRequested": false,
4876
- "memberName": "members",
4877
- "nodeType": "MemberAccess",
4878
- "referencedDeclaration": 16,
4879
- "src": "3018:20:0",
4880
- "typeDescriptions": {
4881
- "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
4882
- "typeString": "mapping(address => bool)"
4883
- }
4884
- },
4885
- "id": 78,
4886
- "indexExpression": {
4887
- "id": 77,
4888
- "name": "account",
4889
- "nodeType": "Identifier",
4890
- "overloadedDeclarations": [],
4891
- "referencedDeclaration": 67,
4892
- "src": "3039:7:0",
4893
- "typeDescriptions": {
4894
- "typeIdentifier": "t_address",
4895
- "typeString": "address"
4896
- }
4897
- },
4898
- "isConstant": false,
4899
- "isLValue": true,
4900
- "isPure": false,
4901
- "lValueRequested": false,
4902
- "nodeType": "IndexAccess",
4903
- "src": "3018:29:0",
4904
- "typeDescriptions": {
4905
- "typeIdentifier": "t_bool",
4906
- "typeString": "bool"
4907
- }
4908
- },
4909
- "functionReturnParameters": 72,
4910
- "id": 79,
4911
- "nodeType": "Return",
4912
- "src": "3011:36:0"
4913
- }
4914
- ]
4915
- },
4916
- "documentation": {
4917
- "id": 63,
4918
- "nodeType": "StructuredDocumentation",
4919
- "src": "2828:76:0",
4920
- "text": " @dev Returns `true` if `account` has been granted `role`."
4921
- },
4922
- "functionSelector": "91d14854",
4923
- "id": 81,
4924
- "implemented": true,
4925
- "kind": "function",
4926
- "modifiers": [],
4927
- "name": "hasRole",
4928
- "nameLocation": "2918:7:0",
4929
- "nodeType": "FunctionDefinition",
4930
- "overrides": {
4931
- "id": 69,
4932
- "nodeType": "OverrideSpecifier",
4933
- "overrides": [],
4934
- "src": "2977:8:0"
4935
- },
4936
- "parameters": {
4937
- "id": 68,
4938
- "nodeType": "ParameterList",
4939
- "parameters": [
4940
- {
4941
- "constant": false,
4942
- "id": 65,
4943
- "mutability": "mutable",
4944
- "name": "role",
4945
- "nameLocation": "2934:4:0",
4946
- "nodeType": "VariableDeclaration",
4947
- "scope": 81,
4948
- "src": "2926:12:0",
4949
- "stateVariable": false,
4950
- "storageLocation": "default",
4951
- "typeDescriptions": {
4952
- "typeIdentifier": "t_bytes32",
4953
- "typeString": "bytes32"
4954
- },
4955
- "typeName": {
4956
- "id": 64,
4957
- "name": "bytes32",
4958
- "nodeType": "ElementaryTypeName",
4959
- "src": "2926:7:0",
4960
- "typeDescriptions": {
4961
- "typeIdentifier": "t_bytes32",
4962
- "typeString": "bytes32"
4963
- }
4964
- },
4965
- "visibility": "internal"
4966
- },
4967
- {
4968
- "constant": false,
4969
- "id": 67,
4970
- "mutability": "mutable",
4971
- "name": "account",
4972
- "nameLocation": "2948:7:0",
4973
- "nodeType": "VariableDeclaration",
4974
- "scope": 81,
4975
- "src": "2940:15:0",
4976
- "stateVariable": false,
4977
- "storageLocation": "default",
4978
- "typeDescriptions": {
4979
- "typeIdentifier": "t_address",
4980
- "typeString": "address"
4981
- },
4982
- "typeName": {
4983
- "id": 66,
4984
- "name": "address",
4985
- "nodeType": "ElementaryTypeName",
4986
- "src": "2940:7:0",
4987
- "stateMutability": "nonpayable",
4988
- "typeDescriptions": {
4989
- "typeIdentifier": "t_address",
4990
- "typeString": "address"
4991
- }
4992
- },
4993
- "visibility": "internal"
4994
- }
4995
- ],
4996
- "src": "2925:31:0"
4997
- },
4998
- "returnParameters": {
4999
- "id": 72,
5000
- "nodeType": "ParameterList",
5001
- "parameters": [
5002
- {
5003
- "constant": false,
5004
- "id": 71,
5005
- "mutability": "mutable",
5006
- "name": "",
5007
- "nameLocation": "-1:-1:-1",
5008
- "nodeType": "VariableDeclaration",
5009
- "scope": 81,
5010
- "src": "2995:4:0",
5011
- "stateVariable": false,
5012
- "storageLocation": "default",
5013
- "typeDescriptions": {
5014
- "typeIdentifier": "t_bool",
5015
- "typeString": "bool"
5016
- },
5017
- "typeName": {
5018
- "id": 70,
5019
- "name": "bool",
5020
- "nodeType": "ElementaryTypeName",
5021
- "src": "2995:4:0",
5022
- "typeDescriptions": {
5023
- "typeIdentifier": "t_bool",
5024
- "typeString": "bool"
5025
- }
5026
- },
5027
- "visibility": "internal"
5028
- }
5029
- ],
5030
- "src": "2994:6:0"
5031
- },
5032
- "scope": 308,
5033
- "src": "2909:145:0",
5034
- "stateMutability": "view",
5035
- "virtual": true,
5036
- "visibility": "public"
5037
- },
5038
- {
5039
- "body": {
5040
- "id": 123,
5041
- "nodeType": "Block",
5042
- "src": "3408:419:0",
5043
- "statements": [
5044
- {
5045
- "condition": {
5046
- "id": 93,
5047
- "isConstant": false,
5048
- "isLValue": false,
5049
- "isPure": false,
5050
- "lValueRequested": false,
5051
- "nodeType": "UnaryOperation",
5052
- "operator": "!",
5053
- "prefix": true,
5054
- "src": "3422:23:0",
5055
- "subExpression": {
5056
- "arguments": [
5057
- {
5058
- "id": 90,
5059
- "name": "role",
5060
- "nodeType": "Identifier",
5061
- "overloadedDeclarations": [],
5062
- "referencedDeclaration": 84,
5063
- "src": "3431:4:0",
5064
- "typeDescriptions": {
5065
- "typeIdentifier": "t_bytes32",
5066
- "typeString": "bytes32"
5067
- }
5068
- },
5069
- {
5070
- "id": 91,
5071
- "name": "account",
5072
- "nodeType": "Identifier",
5073
- "overloadedDeclarations": [],
5074
- "referencedDeclaration": 86,
5075
- "src": "3437:7:0",
5076
- "typeDescriptions": {
5077
- "typeIdentifier": "t_address",
5078
- "typeString": "address"
5079
- }
5080
- }
5081
- ],
5082
- "expression": {
5083
- "argumentTypes": [
5084
- {
5085
- "typeIdentifier": "t_bytes32",
5086
- "typeString": "bytes32"
5087
- },
5088
- {
5089
- "typeIdentifier": "t_address",
5090
- "typeString": "address"
5091
- }
5092
- ],
5093
- "id": 89,
5094
- "name": "hasRole",
5095
- "nodeType": "Identifier",
5096
- "overloadedDeclarations": [],
5097
- "referencedDeclaration": 81,
5098
- "src": "3423:7:0",
5099
- "typeDescriptions": {
5100
- "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
5101
- "typeString": "function (bytes32,address) view returns (bool)"
5102
- }
5103
- },
5104
- "id": 92,
5105
- "isConstant": false,
5106
- "isLValue": false,
5107
- "isPure": false,
5108
- "kind": "functionCall",
5109
- "lValueRequested": false,
5110
- "names": [],
5111
- "nodeType": "FunctionCall",
5112
- "src": "3423:22:0",
5113
- "tryCall": false,
5114
- "typeDescriptions": {
5115
- "typeIdentifier": "t_bool",
5116
- "typeString": "bool"
5117
- }
5118
- },
5119
- "typeDescriptions": {
5120
- "typeIdentifier": "t_bool",
5121
- "typeString": "bool"
5122
- }
5123
- },
5124
- "id": 122,
5125
- "nodeType": "IfStatement",
5126
- "src": "3418:403:0",
5127
- "trueBody": {
5128
- "id": 121,
5129
- "nodeType": "Block",
5130
- "src": "3447:374:0",
5131
- "statements": [
5132
- {
5133
- "expression": {
5134
- "arguments": [
5135
- {
5136
- "arguments": [
5137
- {
5138
- "arguments": [
5139
- {
5140
- "hexValue": "416363657373436f6e74726f6c3a206163636f756e7420",
5141
- "id": 99,
5142
- "isConstant": false,
5143
- "isLValue": false,
5144
- "isPure": true,
5145
- "kind": "string",
5146
- "lValueRequested": false,
5147
- "nodeType": "Literal",
5148
- "src": "3555:25:0",
5149
- "typeDescriptions": {
5150
- "typeIdentifier": "t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874",
5151
- "typeString": "literal_string \"AccessControl: account \""
5152
- },
5153
- "value": "AccessControl: account "
5154
- },
5155
- {
5156
- "arguments": [
5157
- {
5158
- "arguments": [
5159
- {
5160
- "id": 104,
5161
- "name": "account",
5162
- "nodeType": "Identifier",
5163
- "overloadedDeclarations": [],
5164
- "referencedDeclaration": 86,
5165
- "src": "3634:7:0",
5166
- "typeDescriptions": {
5167
- "typeIdentifier": "t_address",
5168
- "typeString": "address"
5169
- }
5170
- }
5171
- ],
5172
- "expression": {
5173
- "argumentTypes": [
5174
- {
5175
- "typeIdentifier": "t_address",
5176
- "typeString": "address"
5177
- }
5178
- ],
5179
- "id": 103,
5180
- "isConstant": false,
5181
- "isLValue": false,
5182
- "isPure": true,
5183
- "lValueRequested": false,
5184
- "nodeType": "ElementaryTypeNameExpression",
5185
- "src": "3626:7:0",
5186
- "typeDescriptions": {
5187
- "typeIdentifier": "t_type$_t_uint160_$",
5188
- "typeString": "type(uint160)"
5189
- },
5190
- "typeName": {
5191
- "id": 102,
5192
- "name": "uint160",
5193
- "nodeType": "ElementaryTypeName",
5194
- "src": "3626:7:0",
5195
- "typeDescriptions": {}
5196
- }
5197
- },
5198
- "id": 105,
5199
- "isConstant": false,
5200
- "isLValue": false,
5201
- "isPure": false,
5202
- "kind": "typeConversion",
5203
- "lValueRequested": false,
5204
- "names": [],
5205
- "nodeType": "FunctionCall",
5206
- "src": "3626:16:0",
5207
- "tryCall": false,
5208
- "typeDescriptions": {
5209
- "typeIdentifier": "t_uint160",
5210
- "typeString": "uint160"
5211
- }
5212
- },
5213
- {
5214
- "hexValue": "3230",
5215
- "id": 106,
5216
- "isConstant": false,
5217
- "isLValue": false,
5218
- "isPure": true,
5219
- "kind": "number",
5220
- "lValueRequested": false,
5221
- "nodeType": "Literal",
5222
- "src": "3644:2:0",
5223
- "typeDescriptions": {
5224
- "typeIdentifier": "t_rational_20_by_1",
5225
- "typeString": "int_const 20"
5226
- },
5227
- "value": "20"
5228
- }
5229
- ],
5230
- "expression": {
5231
- "argumentTypes": [
5232
- {
5233
- "typeIdentifier": "t_uint160",
5234
- "typeString": "uint160"
5235
- },
5236
- {
5237
- "typeIdentifier": "t_rational_20_by_1",
5238
- "typeString": "int_const 20"
5239
- }
5240
- ],
5241
- "expression": {
5242
- "id": 100,
5243
- "name": "Strings",
5244
- "nodeType": "Identifier",
5245
- "overloadedDeclarations": [],
5246
- "referencedDeclaration": 3534,
5247
- "src": "3606:7:0",
5248
- "typeDescriptions": {
5249
- "typeIdentifier": "t_type$_t_contract$_Strings_$3534_$",
5250
- "typeString": "type(library Strings)"
5251
- }
5252
- },
5253
- "id": 101,
5254
- "isConstant": false,
5255
- "isLValue": false,
5256
- "isPure": false,
5257
- "lValueRequested": false,
5258
- "memberName": "toHexString",
5259
- "nodeType": "MemberAccess",
5260
- "referencedDeclaration": 3533,
5261
- "src": "3606:19:0",
5262
- "typeDescriptions": {
5263
- "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
5264
- "typeString": "function (uint256,uint256) pure returns (string memory)"
5265
- }
5266
- },
5267
- "id": 107,
5268
- "isConstant": false,
5269
- "isLValue": false,
5270
- "isPure": false,
5271
- "kind": "functionCall",
5272
- "lValueRequested": false,
5273
- "names": [],
5274
- "nodeType": "FunctionCall",
5275
- "src": "3606:41:0",
5276
- "tryCall": false,
5277
- "typeDescriptions": {
5278
- "typeIdentifier": "t_string_memory_ptr",
5279
- "typeString": "string memory"
5280
- }
5281
- },
5282
- {
5283
- "hexValue": "206973206d697373696e6720726f6c6520",
5284
- "id": 108,
5285
- "isConstant": false,
5286
- "isLValue": false,
5287
- "isPure": true,
5288
- "kind": "string",
5289
- "lValueRequested": false,
5290
- "nodeType": "Literal",
5291
- "src": "3673:19:0",
5292
- "typeDescriptions": {
5293
- "typeIdentifier": "t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69",
5294
- "typeString": "literal_string \" is missing role \""
5295
- },
5296
- "value": " is missing role "
5297
- },
5298
- {
5299
- "arguments": [
5300
- {
5301
- "arguments": [
5302
- {
5303
- "id": 113,
5304
- "name": "role",
5305
- "nodeType": "Identifier",
5306
- "overloadedDeclarations": [],
5307
- "referencedDeclaration": 84,
5308
- "src": "3746:4:0",
5309
- "typeDescriptions": {
5310
- "typeIdentifier": "t_bytes32",
5311
- "typeString": "bytes32"
5312
- }
5313
- }
5314
- ],
5315
- "expression": {
5316
- "argumentTypes": [
5317
- {
5318
- "typeIdentifier": "t_bytes32",
5319
- "typeString": "bytes32"
5320
- }
5321
- ],
5322
- "id": 112,
5323
- "isConstant": false,
5324
- "isLValue": false,
5325
- "isPure": true,
5326
- "lValueRequested": false,
5327
- "nodeType": "ElementaryTypeNameExpression",
5328
- "src": "3738:7:0",
5329
- "typeDescriptions": {
5330
- "typeIdentifier": "t_type$_t_uint256_$",
5331
- "typeString": "type(uint256)"
5332
- },
5333
- "typeName": {
5334
- "id": 111,
5335
- "name": "uint256",
5336
- "nodeType": "ElementaryTypeName",
5337
- "src": "3738:7:0",
5338
- "typeDescriptions": {}
5339
- }
5340
- },
5341
- "id": 114,
5342
- "isConstant": false,
5343
- "isLValue": false,
5344
- "isPure": false,
5345
- "kind": "typeConversion",
5346
- "lValueRequested": false,
5347
- "names": [],
5348
- "nodeType": "FunctionCall",
5349
- "src": "3738:13:0",
5350
- "tryCall": false,
5351
- "typeDescriptions": {
5352
- "typeIdentifier": "t_uint256",
5353
- "typeString": "uint256"
5354
- }
5355
- },
5356
- {
5357
- "hexValue": "3332",
5358
- "id": 115,
5359
- "isConstant": false,
5360
- "isLValue": false,
5361
- "isPure": true,
5362
- "kind": "number",
5363
- "lValueRequested": false,
5364
- "nodeType": "Literal",
5365
- "src": "3753:2:0",
5366
- "typeDescriptions": {
5367
- "typeIdentifier": "t_rational_32_by_1",
5368
- "typeString": "int_const 32"
5369
- },
5370
- "value": "32"
5371
- }
5372
- ],
5373
- "expression": {
5374
- "argumentTypes": [
5375
- {
5376
- "typeIdentifier": "t_uint256",
5377
- "typeString": "uint256"
5378
- },
5379
- {
5380
- "typeIdentifier": "t_rational_32_by_1",
5381
- "typeString": "int_const 32"
5382
- }
5383
- ],
5384
- "expression": {
5385
- "id": 109,
5386
- "name": "Strings",
5387
- "nodeType": "Identifier",
5388
- "overloadedDeclarations": [],
5389
- "referencedDeclaration": 3534,
5390
- "src": "3718:7:0",
5391
- "typeDescriptions": {
5392
- "typeIdentifier": "t_type$_t_contract$_Strings_$3534_$",
5393
- "typeString": "type(library Strings)"
5394
- }
5395
- },
5396
- "id": 110,
5397
- "isConstant": false,
5398
- "isLValue": false,
5399
- "isPure": false,
5400
- "lValueRequested": false,
5401
- "memberName": "toHexString",
5402
- "nodeType": "MemberAccess",
5403
- "referencedDeclaration": 3533,
5404
- "src": "3718:19:0",
5405
- "typeDescriptions": {
5406
- "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
5407
- "typeString": "function (uint256,uint256) pure returns (string memory)"
5408
- }
5409
- },
5410
- "id": 116,
5411
- "isConstant": false,
5412
- "isLValue": false,
5413
- "isPure": false,
5414
- "kind": "functionCall",
5415
- "lValueRequested": false,
5416
- "names": [],
5417
- "nodeType": "FunctionCall",
5418
- "src": "3718:38:0",
5419
- "tryCall": false,
5420
- "typeDescriptions": {
5421
- "typeIdentifier": "t_string_memory_ptr",
5422
- "typeString": "string memory"
5423
- }
5424
- }
5425
- ],
5426
- "expression": {
5427
- "argumentTypes": [
5428
- {
5429
- "typeIdentifier": "t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874",
5430
- "typeString": "literal_string \"AccessControl: account \""
5431
- },
5432
- {
5433
- "typeIdentifier": "t_string_memory_ptr",
5434
- "typeString": "string memory"
5435
- },
5436
- {
5437
- "typeIdentifier": "t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69",
5438
- "typeString": "literal_string \" is missing role \""
5439
- },
5440
- {
5441
- "typeIdentifier": "t_string_memory_ptr",
5442
- "typeString": "string memory"
5443
- }
5444
- ],
5445
- "expression": {
5446
- "id": 97,
5447
- "name": "abi",
5448
- "nodeType": "Identifier",
5449
- "overloadedDeclarations": [],
5450
- "referencedDeclaration": 4294967295,
5451
- "src": "3513:3:0",
5452
- "typeDescriptions": {
5453
- "typeIdentifier": "t_magic_abi",
5454
- "typeString": "abi"
5455
- }
5456
- },
5457
- "id": 98,
5458
- "isConstant": false,
5459
- "isLValue": false,
5460
- "isPure": true,
5461
- "lValueRequested": false,
5462
- "memberName": "encodePacked",
5463
- "nodeType": "MemberAccess",
5464
- "src": "3513:16:0",
5465
- "typeDescriptions": {
5466
- "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
5467
- "typeString": "function () pure returns (bytes memory)"
5468
- }
5469
- },
5470
- "id": 117,
5471
- "isConstant": false,
5472
- "isLValue": false,
5473
- "isPure": false,
5474
- "kind": "functionCall",
5475
- "lValueRequested": false,
5476
- "names": [],
5477
- "nodeType": "FunctionCall",
5478
- "src": "3513:265:0",
5479
- "tryCall": false,
5480
- "typeDescriptions": {
5481
- "typeIdentifier": "t_bytes_memory_ptr",
5482
- "typeString": "bytes memory"
5483
- }
5484
- }
5485
- ],
5486
- "expression": {
5487
- "argumentTypes": [
5488
- {
5489
- "typeIdentifier": "t_bytes_memory_ptr",
5490
- "typeString": "bytes memory"
5491
- }
5492
- ],
5493
- "id": 96,
5494
- "isConstant": false,
5495
- "isLValue": false,
5496
- "isPure": true,
5497
- "lValueRequested": false,
5498
- "nodeType": "ElementaryTypeNameExpression",
5499
- "src": "3485:6:0",
5500
- "typeDescriptions": {
5501
- "typeIdentifier": "t_type$_t_string_storage_ptr_$",
5502
- "typeString": "type(string storage pointer)"
5503
- },
5504
- "typeName": {
5505
- "id": 95,
5506
- "name": "string",
5507
- "nodeType": "ElementaryTypeName",
5508
- "src": "3485:6:0",
5509
- "typeDescriptions": {}
5510
- }
5511
- },
5512
- "id": 118,
5513
- "isConstant": false,
5514
- "isLValue": false,
5515
- "isPure": false,
5516
- "kind": "typeConversion",
5517
- "lValueRequested": false,
5518
- "names": [],
5519
- "nodeType": "FunctionCall",
5520
- "src": "3485:311:0",
5521
- "tryCall": false,
5522
- "typeDescriptions": {
5523
- "typeIdentifier": "t_string_memory_ptr",
5524
- "typeString": "string memory"
5525
- }
5526
- }
5527
- ],
5528
- "expression": {
5529
- "argumentTypes": [
5530
- {
5531
- "typeIdentifier": "t_string_memory_ptr",
5532
- "typeString": "string memory"
5533
- }
5534
- ],
5535
- "id": 94,
5536
- "name": "revert",
5537
- "nodeType": "Identifier",
5538
- "overloadedDeclarations": [
5539
- 4294967277,
5540
- 4294967277
5541
- ],
5542
- "referencedDeclaration": 4294967277,
5543
- "src": "3461:6:0",
5544
- "typeDescriptions": {
5545
- "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
5546
- "typeString": "function (string memory) pure"
5547
- }
5548
- },
5549
- "id": 119,
5550
- "isConstant": false,
5551
- "isLValue": false,
5552
- "isPure": false,
5553
- "kind": "functionCall",
5554
- "lValueRequested": false,
5555
- "names": [],
5556
- "nodeType": "FunctionCall",
5557
- "src": "3461:349:0",
5558
- "tryCall": false,
5559
- "typeDescriptions": {
5560
- "typeIdentifier": "t_tuple$__$",
5561
- "typeString": "tuple()"
5562
- }
5563
- },
5564
- "id": 120,
5565
- "nodeType": "ExpressionStatement",
5566
- "src": "3461:349:0"
5567
- }
5568
- ]
5569
- }
5570
- }
5571
- ]
5572
- },
5573
- "documentation": {
5574
- "id": 82,
5575
- "nodeType": "StructuredDocumentation",
5576
- "src": "3060:270:0",
5577
- "text": " @dev Revert with a standard message if `account` is missing `role`.\n The format of the revert reason is given by the following regular expression:\n /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/"
5578
- },
5579
- "id": 124,
5580
- "implemented": true,
5581
- "kind": "function",
5582
- "modifiers": [],
5583
- "name": "_checkRole",
5584
- "nameLocation": "3344:10:0",
5585
- "nodeType": "FunctionDefinition",
5586
- "parameters": {
5587
- "id": 87,
5588
- "nodeType": "ParameterList",
5589
- "parameters": [
5590
- {
5591
- "constant": false,
5592
- "id": 84,
5593
- "mutability": "mutable",
5594
- "name": "role",
5595
- "nameLocation": "3363:4:0",
5596
- "nodeType": "VariableDeclaration",
5597
- "scope": 124,
5598
- "src": "3355:12:0",
5599
- "stateVariable": false,
5600
- "storageLocation": "default",
5601
- "typeDescriptions": {
5602
- "typeIdentifier": "t_bytes32",
5603
- "typeString": "bytes32"
5604
- },
5605
- "typeName": {
5606
- "id": 83,
5607
- "name": "bytes32",
5608
- "nodeType": "ElementaryTypeName",
5609
- "src": "3355:7:0",
5610
- "typeDescriptions": {
5611
- "typeIdentifier": "t_bytes32",
5612
- "typeString": "bytes32"
5613
- }
5614
- },
5615
- "visibility": "internal"
5616
- },
5617
- {
5618
- "constant": false,
5619
- "id": 86,
5620
- "mutability": "mutable",
5621
- "name": "account",
5622
- "nameLocation": "3377:7:0",
5623
- "nodeType": "VariableDeclaration",
5624
- "scope": 124,
5625
- "src": "3369:15:0",
5626
- "stateVariable": false,
5627
- "storageLocation": "default",
5628
- "typeDescriptions": {
5629
- "typeIdentifier": "t_address",
5630
- "typeString": "address"
5631
- },
5632
- "typeName": {
5633
- "id": 85,
5634
- "name": "address",
5635
- "nodeType": "ElementaryTypeName",
5636
- "src": "3369:7:0",
5637
- "stateMutability": "nonpayable",
5638
- "typeDescriptions": {
5639
- "typeIdentifier": "t_address",
5640
- "typeString": "address"
5641
- }
5642
- },
5643
- "visibility": "internal"
5644
- }
5645
- ],
5646
- "src": "3354:31:0"
5647
- },
5648
- "returnParameters": {
5649
- "id": 88,
5650
- "nodeType": "ParameterList",
5651
- "parameters": [],
5652
- "src": "3408:0:0"
5653
- },
5654
- "scope": 308,
5655
- "src": "3335:492:0",
5656
- "stateMutability": "view",
5657
- "virtual": true,
5658
- "visibility": "internal"
5659
- },
5660
- {
5661
- "baseFunctions": [
5662
- 481
5663
- ],
5664
- "body": {
5665
- "id": 138,
5666
- "nodeType": "Block",
5667
- "src": "4091:46:0",
5668
- "statements": [
5669
- {
5670
- "expression": {
5671
- "expression": {
5672
- "baseExpression": {
5673
- "id": 133,
5674
- "name": "_roles",
5675
- "nodeType": "Identifier",
5676
- "overloadedDeclarations": [],
5677
- "referencedDeclaration": 24,
5678
- "src": "4108:6:0",
5679
- "typeDescriptions": {
5680
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$",
5681
- "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)"
5682
- }
5683
- },
5684
- "id": 135,
5685
- "indexExpression": {
5686
- "id": 134,
5687
- "name": "role",
5688
- "nodeType": "Identifier",
5689
- "overloadedDeclarations": [],
5690
- "referencedDeclaration": 127,
5691
- "src": "4115:4:0",
5692
- "typeDescriptions": {
5693
- "typeIdentifier": "t_bytes32",
5694
- "typeString": "bytes32"
5695
- }
5696
- },
5697
- "isConstant": false,
5698
- "isLValue": true,
5699
- "isPure": false,
5700
- "lValueRequested": false,
5701
- "nodeType": "IndexAccess",
5702
- "src": "4108:12:0",
5703
- "typeDescriptions": {
5704
- "typeIdentifier": "t_struct$_RoleData_$19_storage",
5705
- "typeString": "struct AccessControl.RoleData storage ref"
5706
- }
5707
- },
5708
- "id": 136,
5709
- "isConstant": false,
5710
- "isLValue": true,
5711
- "isPure": false,
5712
- "lValueRequested": false,
5713
- "memberName": "adminRole",
5714
- "nodeType": "MemberAccess",
5715
- "referencedDeclaration": 18,
5716
- "src": "4108:22:0",
5717
- "typeDescriptions": {
5718
- "typeIdentifier": "t_bytes32",
5719
- "typeString": "bytes32"
5720
- }
5721
- },
5722
- "functionReturnParameters": 132,
5723
- "id": 137,
5724
- "nodeType": "Return",
5725
- "src": "4101:29:0"
5726
- }
5727
- ]
5728
- },
5729
- "documentation": {
5730
- "id": 125,
5731
- "nodeType": "StructuredDocumentation",
5732
- "src": "3833:170:0",
5733
- "text": " @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}."
5734
- },
5735
- "functionSelector": "248a9ca3",
5736
- "id": 139,
5737
- "implemented": true,
5738
- "kind": "function",
5739
- "modifiers": [],
5740
- "name": "getRoleAdmin",
5741
- "nameLocation": "4017:12:0",
5742
- "nodeType": "FunctionDefinition",
5743
- "overrides": {
5744
- "id": 129,
5745
- "nodeType": "OverrideSpecifier",
5746
- "overrides": [],
5747
- "src": "4064:8:0"
5748
- },
5749
- "parameters": {
5750
- "id": 128,
5751
- "nodeType": "ParameterList",
5752
- "parameters": [
5753
- {
5754
- "constant": false,
5755
- "id": 127,
5756
- "mutability": "mutable",
5757
- "name": "role",
5758
- "nameLocation": "4038:4:0",
5759
- "nodeType": "VariableDeclaration",
5760
- "scope": 139,
5761
- "src": "4030:12:0",
5762
- "stateVariable": false,
5763
- "storageLocation": "default",
5764
- "typeDescriptions": {
5765
- "typeIdentifier": "t_bytes32",
5766
- "typeString": "bytes32"
5767
- },
5768
- "typeName": {
5769
- "id": 126,
5770
- "name": "bytes32",
5771
- "nodeType": "ElementaryTypeName",
5772
- "src": "4030:7:0",
5773
- "typeDescriptions": {
5774
- "typeIdentifier": "t_bytes32",
5775
- "typeString": "bytes32"
5776
- }
5777
- },
5778
- "visibility": "internal"
5779
- }
5780
- ],
5781
- "src": "4029:14:0"
5782
- },
5783
- "returnParameters": {
5784
- "id": 132,
5785
- "nodeType": "ParameterList",
5786
- "parameters": [
5787
- {
5788
- "constant": false,
5789
- "id": 131,
5790
- "mutability": "mutable",
5791
- "name": "",
5792
- "nameLocation": "-1:-1:-1",
5793
- "nodeType": "VariableDeclaration",
5794
- "scope": 139,
5795
- "src": "4082:7:0",
5796
- "stateVariable": false,
5797
- "storageLocation": "default",
5798
- "typeDescriptions": {
5799
- "typeIdentifier": "t_bytes32",
5800
- "typeString": "bytes32"
5801
- },
5802
- "typeName": {
5803
- "id": 130,
5804
- "name": "bytes32",
5805
- "nodeType": "ElementaryTypeName",
5806
- "src": "4082:7:0",
5807
- "typeDescriptions": {
5808
- "typeIdentifier": "t_bytes32",
5809
- "typeString": "bytes32"
5810
- }
5811
- },
5812
- "visibility": "internal"
5813
- }
5814
- ],
5815
- "src": "4081:9:0"
5816
- },
5817
- "scope": 308,
5818
- "src": "4008:129:0",
5819
- "stateMutability": "view",
5820
- "virtual": true,
5821
- "visibility": "public"
5822
- },
5823
- {
5824
- "baseFunctions": [
5825
- 489
5826
- ],
5827
- "body": {
5828
- "id": 158,
5829
- "nodeType": "Block",
5830
- "src": "4490:42:0",
5831
- "statements": [
5832
- {
5833
- "expression": {
5834
- "arguments": [
5835
- {
5836
- "id": 154,
5837
- "name": "role",
5838
- "nodeType": "Identifier",
5839
- "overloadedDeclarations": [],
5840
- "referencedDeclaration": 142,
5841
- "src": "4511:4:0",
5842
- "typeDescriptions": {
5843
- "typeIdentifier": "t_bytes32",
5844
- "typeString": "bytes32"
5845
- }
5846
- },
5847
- {
5848
- "id": 155,
5849
- "name": "account",
5850
- "nodeType": "Identifier",
5851
- "overloadedDeclarations": [],
5852
- "referencedDeclaration": 144,
5853
- "src": "4517:7:0",
5854
- "typeDescriptions": {
5855
- "typeIdentifier": "t_address",
5856
- "typeString": "address"
5857
- }
5858
- }
5859
- ],
5860
- "expression": {
5861
- "argumentTypes": [
5862
- {
5863
- "typeIdentifier": "t_bytes32",
5864
- "typeString": "bytes32"
5865
- },
5866
- {
5867
- "typeIdentifier": "t_address",
5868
- "typeString": "address"
5869
- }
5870
- ],
5871
- "id": 153,
5872
- "name": "_grantRole",
5873
- "nodeType": "Identifier",
5874
- "overloadedDeclarations": [],
5875
- "referencedDeclaration": 276,
5876
- "src": "4500:10:0",
5877
- "typeDescriptions": {
5878
- "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
5879
- "typeString": "function (bytes32,address)"
5880
- }
5881
- },
5882
- "id": 156,
5883
- "isConstant": false,
5884
- "isLValue": false,
5885
- "isPure": false,
5886
- "kind": "functionCall",
5887
- "lValueRequested": false,
5888
- "names": [],
5889
- "nodeType": "FunctionCall",
5890
- "src": "4500:25:0",
5891
- "tryCall": false,
5892
- "typeDescriptions": {
5893
- "typeIdentifier": "t_tuple$__$",
5894
- "typeString": "tuple()"
5895
- }
5896
- },
5897
- "id": 157,
5898
- "nodeType": "ExpressionStatement",
5899
- "src": "4500:25:0"
5900
- }
5901
- ]
5902
- },
5903
- "documentation": {
5904
- "id": 140,
5905
- "nodeType": "StructuredDocumentation",
5906
- "src": "4143:239:0",
5907
- "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role."
5908
- },
5909
- "functionSelector": "2f2ff15d",
5910
- "id": 159,
5911
- "implemented": true,
5912
- "kind": "function",
5913
- "modifiers": [
5914
- {
5915
- "arguments": [
5916
- {
5917
- "arguments": [
5918
- {
5919
- "id": 149,
5920
- "name": "role",
5921
- "nodeType": "Identifier",
5922
- "overloadedDeclarations": [],
5923
- "referencedDeclaration": 142,
5924
- "src": "4483:4:0",
5925
- "typeDescriptions": {
5926
- "typeIdentifier": "t_bytes32",
5927
- "typeString": "bytes32"
5928
- }
5929
- }
5930
- ],
5931
- "expression": {
5932
- "argumentTypes": [
5933
- {
5934
- "typeIdentifier": "t_bytes32",
5935
- "typeString": "bytes32"
5936
- }
5937
- ],
5938
- "id": 148,
5939
- "name": "getRoleAdmin",
5940
- "nodeType": "Identifier",
5941
- "overloadedDeclarations": [],
5942
- "referencedDeclaration": 139,
5943
- "src": "4470:12:0",
5944
- "typeDescriptions": {
5945
- "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
5946
- "typeString": "function (bytes32) view returns (bytes32)"
5947
- }
5948
- },
5949
- "id": 150,
5950
- "isConstant": false,
5951
- "isLValue": false,
5952
- "isPure": false,
5953
- "kind": "functionCall",
5954
- "lValueRequested": false,
5955
- "names": [],
5956
- "nodeType": "FunctionCall",
5957
- "src": "4470:18:0",
5958
- "tryCall": false,
5959
- "typeDescriptions": {
5960
- "typeIdentifier": "t_bytes32",
5961
- "typeString": "bytes32"
5962
- }
5963
- }
5964
- ],
5965
- "id": 151,
5966
- "kind": "modifierInvocation",
5967
- "modifierName": {
5968
- "id": 147,
5969
- "name": "onlyRole",
5970
- "nodeType": "IdentifierPath",
5971
- "referencedDeclaration": 40,
5972
- "src": "4461:8:0"
5973
- },
5974
- "nodeType": "ModifierInvocation",
5975
- "src": "4461:28:0"
5976
- }
5977
- ],
5978
- "name": "grantRole",
5979
- "nameLocation": "4396:9:0",
5980
- "nodeType": "FunctionDefinition",
5981
- "overrides": {
5982
- "id": 146,
5983
- "nodeType": "OverrideSpecifier",
5984
- "overrides": [],
5985
- "src": "4452:8:0"
5986
- },
5987
- "parameters": {
5988
- "id": 145,
5989
- "nodeType": "ParameterList",
5990
- "parameters": [
5991
- {
5992
- "constant": false,
5993
- "id": 142,
5994
- "mutability": "mutable",
5995
- "name": "role",
5996
- "nameLocation": "4414:4:0",
5997
- "nodeType": "VariableDeclaration",
5998
- "scope": 159,
5999
- "src": "4406:12:0",
6000
- "stateVariable": false,
6001
- "storageLocation": "default",
6002
- "typeDescriptions": {
6003
- "typeIdentifier": "t_bytes32",
6004
- "typeString": "bytes32"
6005
- },
6006
- "typeName": {
6007
- "id": 141,
6008
- "name": "bytes32",
6009
- "nodeType": "ElementaryTypeName",
6010
- "src": "4406:7:0",
6011
- "typeDescriptions": {
6012
- "typeIdentifier": "t_bytes32",
6013
- "typeString": "bytes32"
6014
- }
6015
- },
6016
- "visibility": "internal"
6017
- },
6018
- {
6019
- "constant": false,
6020
- "id": 144,
6021
- "mutability": "mutable",
6022
- "name": "account",
6023
- "nameLocation": "4428:7:0",
6024
- "nodeType": "VariableDeclaration",
6025
- "scope": 159,
6026
- "src": "4420:15:0",
6027
- "stateVariable": false,
6028
- "storageLocation": "default",
6029
- "typeDescriptions": {
6030
- "typeIdentifier": "t_address",
6031
- "typeString": "address"
6032
- },
6033
- "typeName": {
6034
- "id": 143,
6035
- "name": "address",
6036
- "nodeType": "ElementaryTypeName",
6037
- "src": "4420:7:0",
6038
- "stateMutability": "nonpayable",
6039
- "typeDescriptions": {
6040
- "typeIdentifier": "t_address",
6041
- "typeString": "address"
6042
- }
6043
- },
6044
- "visibility": "internal"
6045
- }
6046
- ],
6047
- "src": "4405:31:0"
6048
- },
6049
- "returnParameters": {
6050
- "id": 152,
6051
- "nodeType": "ParameterList",
6052
- "parameters": [],
6053
- "src": "4490:0:0"
6054
- },
6055
- "scope": 308,
6056
- "src": "4387:145:0",
6057
- "stateMutability": "nonpayable",
6058
- "virtual": true,
6059
- "visibility": "public"
6060
- },
6061
- {
6062
- "baseFunctions": [
6063
- 497
6064
- ],
6065
- "body": {
6066
- "id": 178,
6067
- "nodeType": "Block",
6068
- "src": "4870:43:0",
6069
- "statements": [
6070
- {
6071
- "expression": {
6072
- "arguments": [
6073
- {
6074
- "id": 174,
6075
- "name": "role",
6076
- "nodeType": "Identifier",
6077
- "overloadedDeclarations": [],
6078
- "referencedDeclaration": 162,
6079
- "src": "4892:4:0",
6080
- "typeDescriptions": {
6081
- "typeIdentifier": "t_bytes32",
6082
- "typeString": "bytes32"
6083
- }
6084
- },
6085
- {
6086
- "id": 175,
6087
- "name": "account",
6088
- "nodeType": "Identifier",
6089
- "overloadedDeclarations": [],
6090
- "referencedDeclaration": 164,
6091
- "src": "4898:7:0",
6092
- "typeDescriptions": {
6093
- "typeIdentifier": "t_address",
6094
- "typeString": "address"
6095
- }
6096
- }
6097
- ],
6098
- "expression": {
6099
- "argumentTypes": [
6100
- {
6101
- "typeIdentifier": "t_bytes32",
6102
- "typeString": "bytes32"
6103
- },
6104
- {
6105
- "typeIdentifier": "t_address",
6106
- "typeString": "address"
6107
- }
6108
- ],
6109
- "id": 173,
6110
- "name": "_revokeRole",
6111
- "nodeType": "Identifier",
6112
- "overloadedDeclarations": [],
6113
- "referencedDeclaration": 307,
6114
- "src": "4880:11:0",
6115
- "typeDescriptions": {
6116
- "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
6117
- "typeString": "function (bytes32,address)"
6118
- }
6119
- },
6120
- "id": 176,
6121
- "isConstant": false,
6122
- "isLValue": false,
6123
- "isPure": false,
6124
- "kind": "functionCall",
6125
- "lValueRequested": false,
6126
- "names": [],
6127
- "nodeType": "FunctionCall",
6128
- "src": "4880:26:0",
6129
- "tryCall": false,
6130
- "typeDescriptions": {
6131
- "typeIdentifier": "t_tuple$__$",
6132
- "typeString": "tuple()"
6133
- }
6134
- },
6135
- "id": 177,
6136
- "nodeType": "ExpressionStatement",
6137
- "src": "4880:26:0"
6138
- }
6139
- ]
6140
- },
6141
- "documentation": {
6142
- "id": 160,
6143
- "nodeType": "StructuredDocumentation",
6144
- "src": "4538:223:0",
6145
- "text": " @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role."
6146
- },
6147
- "functionSelector": "d547741f",
6148
- "id": 179,
6149
- "implemented": true,
6150
- "kind": "function",
6151
- "modifiers": [
6152
- {
6153
- "arguments": [
6154
- {
6155
- "arguments": [
6156
- {
6157
- "id": 169,
6158
- "name": "role",
6159
- "nodeType": "Identifier",
6160
- "overloadedDeclarations": [],
6161
- "referencedDeclaration": 162,
6162
- "src": "4863:4:0",
6163
- "typeDescriptions": {
6164
- "typeIdentifier": "t_bytes32",
6165
- "typeString": "bytes32"
6166
- }
6167
- }
6168
- ],
6169
- "expression": {
6170
- "argumentTypes": [
6171
- {
6172
- "typeIdentifier": "t_bytes32",
6173
- "typeString": "bytes32"
6174
- }
6175
- ],
6176
- "id": 168,
6177
- "name": "getRoleAdmin",
6178
- "nodeType": "Identifier",
6179
- "overloadedDeclarations": [],
6180
- "referencedDeclaration": 139,
6181
- "src": "4850:12:0",
6182
- "typeDescriptions": {
6183
- "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
6184
- "typeString": "function (bytes32) view returns (bytes32)"
6185
- }
6186
- },
6187
- "id": 170,
6188
- "isConstant": false,
6189
- "isLValue": false,
6190
- "isPure": false,
6191
- "kind": "functionCall",
6192
- "lValueRequested": false,
6193
- "names": [],
6194
- "nodeType": "FunctionCall",
6195
- "src": "4850:18:0",
6196
- "tryCall": false,
6197
- "typeDescriptions": {
6198
- "typeIdentifier": "t_bytes32",
6199
- "typeString": "bytes32"
6200
- }
6201
- }
6202
- ],
6203
- "id": 171,
6204
- "kind": "modifierInvocation",
6205
- "modifierName": {
6206
- "id": 167,
6207
- "name": "onlyRole",
6208
- "nodeType": "IdentifierPath",
6209
- "referencedDeclaration": 40,
6210
- "src": "4841:8:0"
6211
- },
6212
- "nodeType": "ModifierInvocation",
6213
- "src": "4841:28:0"
6214
- }
6215
- ],
6216
- "name": "revokeRole",
6217
- "nameLocation": "4775:10:0",
6218
- "nodeType": "FunctionDefinition",
6219
- "overrides": {
6220
- "id": 166,
6221
- "nodeType": "OverrideSpecifier",
6222
- "overrides": [],
6223
- "src": "4832:8:0"
6224
- },
6225
- "parameters": {
6226
- "id": 165,
6227
- "nodeType": "ParameterList",
6228
- "parameters": [
6229
- {
6230
- "constant": false,
6231
- "id": 162,
6232
- "mutability": "mutable",
6233
- "name": "role",
6234
- "nameLocation": "4794:4:0",
6235
- "nodeType": "VariableDeclaration",
6236
- "scope": 179,
6237
- "src": "4786:12:0",
6238
- "stateVariable": false,
6239
- "storageLocation": "default",
6240
- "typeDescriptions": {
6241
- "typeIdentifier": "t_bytes32",
6242
- "typeString": "bytes32"
6243
- },
6244
- "typeName": {
6245
- "id": 161,
6246
- "name": "bytes32",
6247
- "nodeType": "ElementaryTypeName",
6248
- "src": "4786:7:0",
6249
- "typeDescriptions": {
6250
- "typeIdentifier": "t_bytes32",
6251
- "typeString": "bytes32"
6252
- }
6253
- },
6254
- "visibility": "internal"
6255
- },
6256
- {
6257
- "constant": false,
6258
- "id": 164,
6259
- "mutability": "mutable",
6260
- "name": "account",
6261
- "nameLocation": "4808:7:0",
6262
- "nodeType": "VariableDeclaration",
6263
- "scope": 179,
6264
- "src": "4800:15:0",
6265
- "stateVariable": false,
6266
- "storageLocation": "default",
6267
- "typeDescriptions": {
6268
- "typeIdentifier": "t_address",
6269
- "typeString": "address"
6270
- },
6271
- "typeName": {
6272
- "id": 163,
6273
- "name": "address",
6274
- "nodeType": "ElementaryTypeName",
6275
- "src": "4800:7:0",
6276
- "stateMutability": "nonpayable",
6277
- "typeDescriptions": {
6278
- "typeIdentifier": "t_address",
6279
- "typeString": "address"
6280
- }
6281
- },
6282
- "visibility": "internal"
6283
- }
6284
- ],
6285
- "src": "4785:31:0"
6286
- },
6287
- "returnParameters": {
6288
- "id": 172,
6289
- "nodeType": "ParameterList",
6290
- "parameters": [],
6291
- "src": "4870:0:0"
6292
- },
6293
- "scope": 308,
6294
- "src": "4766:147:0",
6295
- "stateMutability": "nonpayable",
6296
- "virtual": true,
6297
- "visibility": "public"
6298
- },
6299
- {
6300
- "baseFunctions": [
6301
- 505
6302
- ],
6303
- "body": {
6304
- "id": 201,
6305
- "nodeType": "Block",
6306
- "src": "5481:137:0",
6307
- "statements": [
6308
- {
6309
- "expression": {
6310
- "arguments": [
6311
- {
6312
- "commonType": {
6313
- "typeIdentifier": "t_address",
6314
- "typeString": "address"
6315
- },
6316
- "id": 192,
6317
- "isConstant": false,
6318
- "isLValue": false,
6319
- "isPure": false,
6320
- "lValueRequested": false,
6321
- "leftExpression": {
6322
- "id": 189,
6323
- "name": "account",
6324
- "nodeType": "Identifier",
6325
- "overloadedDeclarations": [],
6326
- "referencedDeclaration": 184,
6327
- "src": "5499:7:0",
6328
- "typeDescriptions": {
6329
- "typeIdentifier": "t_address",
6330
- "typeString": "address"
6331
- }
6332
- },
6333
- "nodeType": "BinaryOperation",
6334
- "operator": "==",
6335
- "rightExpression": {
6336
- "arguments": [],
6337
- "expression": {
6338
- "argumentTypes": [],
6339
- "id": 190,
6340
- "name": "_msgSender",
6341
- "nodeType": "Identifier",
6342
- "overloadedDeclarations": [],
6343
- "referencedDeclaration": 3210,
6344
- "src": "5510:10:0",
6345
- "typeDescriptions": {
6346
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
6347
- "typeString": "function () view returns (address)"
6348
- }
6349
- },
6350
- "id": 191,
6351
- "isConstant": false,
6352
- "isLValue": false,
6353
- "isPure": false,
6354
- "kind": "functionCall",
6355
- "lValueRequested": false,
6356
- "names": [],
6357
- "nodeType": "FunctionCall",
6358
- "src": "5510:12:0",
6359
- "tryCall": false,
6360
- "typeDescriptions": {
6361
- "typeIdentifier": "t_address",
6362
- "typeString": "address"
6363
- }
6364
- },
6365
- "src": "5499:23:0",
6366
- "typeDescriptions": {
6367
- "typeIdentifier": "t_bool",
6368
- "typeString": "bool"
6369
- }
6370
- },
6371
- {
6372
- "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66",
6373
- "id": 193,
6374
- "isConstant": false,
6375
- "isLValue": false,
6376
- "isPure": true,
6377
- "kind": "string",
6378
- "lValueRequested": false,
6379
- "nodeType": "Literal",
6380
- "src": "5524:49:0",
6381
- "typeDescriptions": {
6382
- "typeIdentifier": "t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b",
6383
- "typeString": "literal_string \"AccessControl: can only renounce roles for self\""
6384
- },
6385
- "value": "AccessControl: can only renounce roles for self"
6386
- }
6387
- ],
6388
- "expression": {
6389
- "argumentTypes": [
6390
- {
6391
- "typeIdentifier": "t_bool",
6392
- "typeString": "bool"
6393
- },
6394
- {
6395
- "typeIdentifier": "t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b",
6396
- "typeString": "literal_string \"AccessControl: can only renounce roles for self\""
6397
- }
6398
- ],
6399
- "id": 188,
6400
- "name": "require",
6401
- "nodeType": "Identifier",
6402
- "overloadedDeclarations": [
6403
- 4294967278,
6404
- 4294967278
6405
- ],
6406
- "referencedDeclaration": 4294967278,
6407
- "src": "5491:7:0",
6408
- "typeDescriptions": {
6409
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
6410
- "typeString": "function (bool,string memory) pure"
6411
- }
6412
- },
6413
- "id": 194,
6414
- "isConstant": false,
6415
- "isLValue": false,
6416
- "isPure": false,
6417
- "kind": "functionCall",
6418
- "lValueRequested": false,
6419
- "names": [],
6420
- "nodeType": "FunctionCall",
6421
- "src": "5491:83:0",
6422
- "tryCall": false,
6423
- "typeDescriptions": {
6424
- "typeIdentifier": "t_tuple$__$",
6425
- "typeString": "tuple()"
6426
- }
6427
- },
6428
- "id": 195,
6429
- "nodeType": "ExpressionStatement",
6430
- "src": "5491:83:0"
6431
- },
6432
- {
6433
- "expression": {
6434
- "arguments": [
6435
- {
6436
- "id": 197,
6437
- "name": "role",
6438
- "nodeType": "Identifier",
6439
- "overloadedDeclarations": [],
6440
- "referencedDeclaration": 182,
6441
- "src": "5597:4:0",
6442
- "typeDescriptions": {
6443
- "typeIdentifier": "t_bytes32",
6444
- "typeString": "bytes32"
6445
- }
6446
- },
6447
- {
6448
- "id": 198,
6449
- "name": "account",
6450
- "nodeType": "Identifier",
6451
- "overloadedDeclarations": [],
6452
- "referencedDeclaration": 184,
6453
- "src": "5603:7:0",
6454
- "typeDescriptions": {
6455
- "typeIdentifier": "t_address",
6456
- "typeString": "address"
6457
- }
6458
- }
6459
- ],
6460
- "expression": {
6461
- "argumentTypes": [
6462
- {
6463
- "typeIdentifier": "t_bytes32",
6464
- "typeString": "bytes32"
6465
- },
6466
- {
6467
- "typeIdentifier": "t_address",
6468
- "typeString": "address"
6469
- }
6470
- ],
6471
- "id": 196,
6472
- "name": "_revokeRole",
6473
- "nodeType": "Identifier",
6474
- "overloadedDeclarations": [],
6475
- "referencedDeclaration": 307,
6476
- "src": "5585:11:0",
6477
- "typeDescriptions": {
6478
- "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
6479
- "typeString": "function (bytes32,address)"
6480
- }
6481
- },
6482
- "id": 199,
6483
- "isConstant": false,
6484
- "isLValue": false,
6485
- "isPure": false,
6486
- "kind": "functionCall",
6487
- "lValueRequested": false,
6488
- "names": [],
6489
- "nodeType": "FunctionCall",
6490
- "src": "5585:26:0",
6491
- "tryCall": false,
6492
- "typeDescriptions": {
6493
- "typeIdentifier": "t_tuple$__$",
6494
- "typeString": "tuple()"
6495
- }
6496
- },
6497
- "id": 200,
6498
- "nodeType": "ExpressionStatement",
6499
- "src": "5585:26:0"
6500
- }
6501
- ]
6502
- },
6503
- "documentation": {
6504
- "id": 180,
6505
- "nodeType": "StructuredDocumentation",
6506
- "src": "4919:480:0",
6507
- "text": " @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been revoked `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `account`."
6508
- },
6509
- "functionSelector": "36568abe",
6510
- "id": 202,
6511
- "implemented": true,
6512
- "kind": "function",
6513
- "modifiers": [],
6514
- "name": "renounceRole",
6515
- "nameLocation": "5413:12:0",
6516
- "nodeType": "FunctionDefinition",
6517
- "overrides": {
6518
- "id": 186,
6519
- "nodeType": "OverrideSpecifier",
6520
- "overrides": [],
6521
- "src": "5472:8:0"
6522
- },
6523
- "parameters": {
6524
- "id": 185,
6525
- "nodeType": "ParameterList",
6526
- "parameters": [
6527
- {
6528
- "constant": false,
6529
- "id": 182,
6530
- "mutability": "mutable",
6531
- "name": "role",
6532
- "nameLocation": "5434:4:0",
6533
- "nodeType": "VariableDeclaration",
6534
- "scope": 202,
6535
- "src": "5426:12:0",
6536
- "stateVariable": false,
6537
- "storageLocation": "default",
6538
- "typeDescriptions": {
6539
- "typeIdentifier": "t_bytes32",
6540
- "typeString": "bytes32"
6541
- },
6542
- "typeName": {
6543
- "id": 181,
6544
- "name": "bytes32",
6545
- "nodeType": "ElementaryTypeName",
6546
- "src": "5426:7:0",
6547
- "typeDescriptions": {
6548
- "typeIdentifier": "t_bytes32",
6549
- "typeString": "bytes32"
6550
- }
6551
- },
6552
- "visibility": "internal"
6553
- },
6554
- {
6555
- "constant": false,
6556
- "id": 184,
6557
- "mutability": "mutable",
6558
- "name": "account",
6559
- "nameLocation": "5448:7:0",
6560
- "nodeType": "VariableDeclaration",
6561
- "scope": 202,
6562
- "src": "5440:15:0",
6563
- "stateVariable": false,
6564
- "storageLocation": "default",
6565
- "typeDescriptions": {
6566
- "typeIdentifier": "t_address",
6567
- "typeString": "address"
6568
- },
6569
- "typeName": {
6570
- "id": 183,
6571
- "name": "address",
6572
- "nodeType": "ElementaryTypeName",
6573
- "src": "5440:7:0",
6574
- "stateMutability": "nonpayable",
6575
- "typeDescriptions": {
6576
- "typeIdentifier": "t_address",
6577
- "typeString": "address"
6578
- }
6579
- },
6580
- "visibility": "internal"
6581
- }
6582
- ],
6583
- "src": "5425:31:0"
6584
- },
6585
- "returnParameters": {
6586
- "id": 187,
6587
- "nodeType": "ParameterList",
6588
- "parameters": [],
6589
- "src": "5481:0:0"
6590
- },
6591
- "scope": 308,
6592
- "src": "5404:214:0",
6593
- "stateMutability": "nonpayable",
6594
- "virtual": true,
6595
- "visibility": "public"
6596
- },
6597
- {
6598
- "body": {
6599
- "id": 215,
6600
- "nodeType": "Block",
6601
- "src": "6325:42:0",
6602
- "statements": [
6603
- {
6604
- "expression": {
6605
- "arguments": [
6606
- {
6607
- "id": 211,
6608
- "name": "role",
6609
- "nodeType": "Identifier",
6610
- "overloadedDeclarations": [],
6611
- "referencedDeclaration": 205,
6612
- "src": "6346:4:0",
6613
- "typeDescriptions": {
6614
- "typeIdentifier": "t_bytes32",
6615
- "typeString": "bytes32"
6616
- }
6617
- },
6618
- {
6619
- "id": 212,
6620
- "name": "account",
6621
- "nodeType": "Identifier",
6622
- "overloadedDeclarations": [],
6623
- "referencedDeclaration": 207,
6624
- "src": "6352:7:0",
6625
- "typeDescriptions": {
6626
- "typeIdentifier": "t_address",
6627
- "typeString": "address"
6628
- }
6629
- }
6630
- ],
6631
- "expression": {
6632
- "argumentTypes": [
6633
- {
6634
- "typeIdentifier": "t_bytes32",
6635
- "typeString": "bytes32"
6636
- },
6637
- {
6638
- "typeIdentifier": "t_address",
6639
- "typeString": "address"
6640
- }
6641
- ],
6642
- "id": 210,
6643
- "name": "_grantRole",
6644
- "nodeType": "Identifier",
6645
- "overloadedDeclarations": [],
6646
- "referencedDeclaration": 276,
6647
- "src": "6335:10:0",
6648
- "typeDescriptions": {
6649
- "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
6650
- "typeString": "function (bytes32,address)"
6651
- }
6652
- },
6653
- "id": 213,
6654
- "isConstant": false,
6655
- "isLValue": false,
6656
- "isPure": false,
6657
- "kind": "functionCall",
6658
- "lValueRequested": false,
6659
- "names": [],
6660
- "nodeType": "FunctionCall",
6661
- "src": "6335:25:0",
6662
- "tryCall": false,
6663
- "typeDescriptions": {
6664
- "typeIdentifier": "t_tuple$__$",
6665
- "typeString": "tuple()"
6666
- }
6667
- },
6668
- "id": 214,
6669
- "nodeType": "ExpressionStatement",
6670
- "src": "6335:25:0"
6671
- }
6672
- ]
6673
- },
6674
- "documentation": {
6675
- "id": 203,
6676
- "nodeType": "StructuredDocumentation",
6677
- "src": "5624:628:0",
6678
- "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event. Note that unlike {grantRole}, this function doesn't perform any\n checks on the calling account.\n [WARNING]\n ====\n This function should only be called from the constructor when setting\n up the initial roles for the system.\n Using this function in any other way is effectively circumventing the admin\n system imposed by {AccessControl}.\n ====\n NOTE: This function is deprecated in favor of {_grantRole}."
6679
- },
6680
- "id": 216,
6681
- "implemented": true,
6682
- "kind": "function",
6683
- "modifiers": [],
6684
- "name": "_setupRole",
6685
- "nameLocation": "6266:10:0",
6686
- "nodeType": "FunctionDefinition",
6687
- "parameters": {
6688
- "id": 208,
6689
- "nodeType": "ParameterList",
6690
- "parameters": [
6691
- {
6692
- "constant": false,
6693
- "id": 205,
6694
- "mutability": "mutable",
6695
- "name": "role",
6696
- "nameLocation": "6285:4:0",
6697
- "nodeType": "VariableDeclaration",
6698
- "scope": 216,
6699
- "src": "6277:12:0",
6700
- "stateVariable": false,
6701
- "storageLocation": "default",
6702
- "typeDescriptions": {
6703
- "typeIdentifier": "t_bytes32",
6704
- "typeString": "bytes32"
6705
- },
6706
- "typeName": {
6707
- "id": 204,
6708
- "name": "bytes32",
6709
- "nodeType": "ElementaryTypeName",
6710
- "src": "6277:7:0",
6711
- "typeDescriptions": {
6712
- "typeIdentifier": "t_bytes32",
6713
- "typeString": "bytes32"
6714
- }
6715
- },
6716
- "visibility": "internal"
6717
- },
6718
- {
6719
- "constant": false,
6720
- "id": 207,
6721
- "mutability": "mutable",
6722
- "name": "account",
6723
- "nameLocation": "6299:7:0",
6724
- "nodeType": "VariableDeclaration",
6725
- "scope": 216,
6726
- "src": "6291:15:0",
6727
- "stateVariable": false,
6728
- "storageLocation": "default",
6729
- "typeDescriptions": {
6730
- "typeIdentifier": "t_address",
6731
- "typeString": "address"
6732
- },
6733
- "typeName": {
6734
- "id": 206,
6735
- "name": "address",
6736
- "nodeType": "ElementaryTypeName",
6737
- "src": "6291:7:0",
6738
- "stateMutability": "nonpayable",
6739
- "typeDescriptions": {
6740
- "typeIdentifier": "t_address",
6741
- "typeString": "address"
6742
- }
6743
- },
6744
- "visibility": "internal"
6745
- }
6746
- ],
6747
- "src": "6276:31:0"
6748
- },
6749
- "returnParameters": {
6750
- "id": 209,
6751
- "nodeType": "ParameterList",
6752
- "parameters": [],
6753
- "src": "6325:0:0"
6754
- },
6755
- "scope": 308,
6756
- "src": "6257:110:0",
6757
- "stateMutability": "nonpayable",
6758
- "virtual": true,
6759
- "visibility": "internal"
6760
- },
6761
- {
6762
- "body": {
6763
- "id": 243,
6764
- "nodeType": "Block",
6765
- "src": "6565:174:0",
6766
- "statements": [
6767
- {
6768
- "assignments": [
6769
- 225
6770
- ],
6771
- "declarations": [
6772
- {
6773
- "constant": false,
6774
- "id": 225,
6775
- "mutability": "mutable",
6776
- "name": "previousAdminRole",
6777
- "nameLocation": "6583:17:0",
6778
- "nodeType": "VariableDeclaration",
6779
- "scope": 243,
6780
- "src": "6575:25:0",
6781
- "stateVariable": false,
6782
- "storageLocation": "default",
6783
- "typeDescriptions": {
6784
- "typeIdentifier": "t_bytes32",
6785
- "typeString": "bytes32"
6786
- },
6787
- "typeName": {
6788
- "id": 224,
6789
- "name": "bytes32",
6790
- "nodeType": "ElementaryTypeName",
6791
- "src": "6575:7:0",
6792
- "typeDescriptions": {
6793
- "typeIdentifier": "t_bytes32",
6794
- "typeString": "bytes32"
6795
- }
6796
- },
6797
- "visibility": "internal"
6798
- }
6799
- ],
6800
- "id": 229,
6801
- "initialValue": {
6802
- "arguments": [
6803
- {
6804
- "id": 227,
6805
- "name": "role",
6806
- "nodeType": "Identifier",
6807
- "overloadedDeclarations": [],
6808
- "referencedDeclaration": 219,
6809
- "src": "6616:4:0",
6810
- "typeDescriptions": {
6811
- "typeIdentifier": "t_bytes32",
6812
- "typeString": "bytes32"
6813
- }
6814
- }
6815
- ],
6816
- "expression": {
6817
- "argumentTypes": [
6818
- {
6819
- "typeIdentifier": "t_bytes32",
6820
- "typeString": "bytes32"
6821
- }
6822
- ],
6823
- "id": 226,
6824
- "name": "getRoleAdmin",
6825
- "nodeType": "Identifier",
6826
- "overloadedDeclarations": [],
6827
- "referencedDeclaration": 139,
6828
- "src": "6603:12:0",
6829
- "typeDescriptions": {
6830
- "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
6831
- "typeString": "function (bytes32) view returns (bytes32)"
6832
- }
6833
- },
6834
- "id": 228,
6835
- "isConstant": false,
6836
- "isLValue": false,
6837
- "isPure": false,
6838
- "kind": "functionCall",
6839
- "lValueRequested": false,
6840
- "names": [],
6841
- "nodeType": "FunctionCall",
6842
- "src": "6603:18:0",
6843
- "tryCall": false,
6844
- "typeDescriptions": {
6845
- "typeIdentifier": "t_bytes32",
6846
- "typeString": "bytes32"
6847
- }
6848
- },
6849
- "nodeType": "VariableDeclarationStatement",
6850
- "src": "6575:46:0"
6851
- },
6852
- {
6853
- "expression": {
6854
- "id": 235,
6855
- "isConstant": false,
6856
- "isLValue": false,
6857
- "isPure": false,
6858
- "lValueRequested": false,
6859
- "leftHandSide": {
6860
- "expression": {
6861
- "baseExpression": {
6862
- "id": 230,
6863
- "name": "_roles",
6864
- "nodeType": "Identifier",
6865
- "overloadedDeclarations": [],
6866
- "referencedDeclaration": 24,
6867
- "src": "6631:6:0",
6868
- "typeDescriptions": {
6869
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$",
6870
- "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)"
6871
- }
6872
- },
6873
- "id": 232,
6874
- "indexExpression": {
6875
- "id": 231,
6876
- "name": "role",
6877
- "nodeType": "Identifier",
6878
- "overloadedDeclarations": [],
6879
- "referencedDeclaration": 219,
6880
- "src": "6638:4:0",
6881
- "typeDescriptions": {
6882
- "typeIdentifier": "t_bytes32",
6883
- "typeString": "bytes32"
6884
- }
6885
- },
6886
- "isConstant": false,
6887
- "isLValue": true,
6888
- "isPure": false,
6889
- "lValueRequested": false,
6890
- "nodeType": "IndexAccess",
6891
- "src": "6631:12:0",
6892
- "typeDescriptions": {
6893
- "typeIdentifier": "t_struct$_RoleData_$19_storage",
6894
- "typeString": "struct AccessControl.RoleData storage ref"
6895
- }
6896
- },
6897
- "id": 233,
6898
- "isConstant": false,
6899
- "isLValue": true,
6900
- "isPure": false,
6901
- "lValueRequested": true,
6902
- "memberName": "adminRole",
6903
- "nodeType": "MemberAccess",
6904
- "referencedDeclaration": 18,
6905
- "src": "6631:22:0",
6906
- "typeDescriptions": {
6907
- "typeIdentifier": "t_bytes32",
6908
- "typeString": "bytes32"
6909
- }
6910
- },
6911
- "nodeType": "Assignment",
6912
- "operator": "=",
6913
- "rightHandSide": {
6914
- "id": 234,
6915
- "name": "adminRole",
6916
- "nodeType": "Identifier",
6917
- "overloadedDeclarations": [],
6918
- "referencedDeclaration": 221,
6919
- "src": "6656:9:0",
6920
- "typeDescriptions": {
6921
- "typeIdentifier": "t_bytes32",
6922
- "typeString": "bytes32"
6923
- }
6924
- },
6925
- "src": "6631:34:0",
6926
- "typeDescriptions": {
6927
- "typeIdentifier": "t_bytes32",
6928
- "typeString": "bytes32"
6929
- }
6930
- },
6931
- "id": 236,
6932
- "nodeType": "ExpressionStatement",
6933
- "src": "6631:34:0"
6934
- },
6935
- {
6936
- "eventCall": {
6937
- "arguments": [
6938
- {
6939
- "id": 238,
6940
- "name": "role",
6941
- "nodeType": "Identifier",
6942
- "overloadedDeclarations": [],
6943
- "referencedDeclaration": 219,
6944
- "src": "6697:4:0",
6945
- "typeDescriptions": {
6946
- "typeIdentifier": "t_bytes32",
6947
- "typeString": "bytes32"
6948
- }
6949
- },
6950
- {
6951
- "id": 239,
6952
- "name": "previousAdminRole",
6953
- "nodeType": "Identifier",
6954
- "overloadedDeclarations": [],
6955
- "referencedDeclaration": 225,
6956
- "src": "6703:17:0",
6957
- "typeDescriptions": {
6958
- "typeIdentifier": "t_bytes32",
6959
- "typeString": "bytes32"
6960
- }
6961
- },
6962
- {
6963
- "id": 240,
6964
- "name": "adminRole",
6965
- "nodeType": "Identifier",
6966
- "overloadedDeclarations": [],
6967
- "referencedDeclaration": 221,
6968
- "src": "6722:9:0",
6969
- "typeDescriptions": {
6970
- "typeIdentifier": "t_bytes32",
6971
- "typeString": "bytes32"
6972
- }
6973
- }
6974
- ],
6975
- "expression": {
6976
- "argumentTypes": [
6977
- {
6978
- "typeIdentifier": "t_bytes32",
6979
- "typeString": "bytes32"
6980
- },
6981
- {
6982
- "typeIdentifier": "t_bytes32",
6983
- "typeString": "bytes32"
6984
- },
6985
- {
6986
- "typeIdentifier": "t_bytes32",
6987
- "typeString": "bytes32"
6988
- }
6989
- ],
6990
- "id": 237,
6991
- "name": "RoleAdminChanged",
6992
- "nodeType": "Identifier",
6993
- "overloadedDeclarations": [],
6994
- "referencedDeclaration": 445,
6995
- "src": "6680:16:0",
6996
- "typeDescriptions": {
6997
- "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
6998
- "typeString": "function (bytes32,bytes32,bytes32)"
6999
- }
7000
- },
7001
- "id": 241,
7002
- "isConstant": false,
7003
- "isLValue": false,
7004
- "isPure": false,
7005
- "kind": "functionCall",
7006
- "lValueRequested": false,
7007
- "names": [],
7008
- "nodeType": "FunctionCall",
7009
- "src": "6680:52:0",
7010
- "tryCall": false,
7011
- "typeDescriptions": {
7012
- "typeIdentifier": "t_tuple$__$",
7013
- "typeString": "tuple()"
7014
- }
7015
- },
7016
- "id": 242,
7017
- "nodeType": "EmitStatement",
7018
- "src": "6675:57:0"
7019
- }
7020
- ]
7021
- },
7022
- "documentation": {
7023
- "id": 217,
7024
- "nodeType": "StructuredDocumentation",
7025
- "src": "6373:114:0",
7026
- "text": " @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event."
7027
- },
7028
- "id": 244,
7029
- "implemented": true,
7030
- "kind": "function",
7031
- "modifiers": [],
7032
- "name": "_setRoleAdmin",
7033
- "nameLocation": "6501:13:0",
7034
- "nodeType": "FunctionDefinition",
7035
- "parameters": {
7036
- "id": 222,
7037
- "nodeType": "ParameterList",
7038
- "parameters": [
7039
- {
7040
- "constant": false,
7041
- "id": 219,
7042
- "mutability": "mutable",
7043
- "name": "role",
7044
- "nameLocation": "6523:4:0",
7045
- "nodeType": "VariableDeclaration",
7046
- "scope": 244,
7047
- "src": "6515:12:0",
7048
- "stateVariable": false,
7049
- "storageLocation": "default",
7050
- "typeDescriptions": {
7051
- "typeIdentifier": "t_bytes32",
7052
- "typeString": "bytes32"
7053
- },
7054
- "typeName": {
7055
- "id": 218,
7056
- "name": "bytes32",
7057
- "nodeType": "ElementaryTypeName",
7058
- "src": "6515:7:0",
7059
- "typeDescriptions": {
7060
- "typeIdentifier": "t_bytes32",
7061
- "typeString": "bytes32"
7062
- }
7063
- },
7064
- "visibility": "internal"
7065
- },
7066
- {
7067
- "constant": false,
7068
- "id": 221,
7069
- "mutability": "mutable",
7070
- "name": "adminRole",
7071
- "nameLocation": "6537:9:0",
7072
- "nodeType": "VariableDeclaration",
7073
- "scope": 244,
7074
- "src": "6529:17:0",
7075
- "stateVariable": false,
7076
- "storageLocation": "default",
7077
- "typeDescriptions": {
7078
- "typeIdentifier": "t_bytes32",
7079
- "typeString": "bytes32"
7080
- },
7081
- "typeName": {
7082
- "id": 220,
7083
- "name": "bytes32",
7084
- "nodeType": "ElementaryTypeName",
7085
- "src": "6529:7:0",
7086
- "typeDescriptions": {
7087
- "typeIdentifier": "t_bytes32",
7088
- "typeString": "bytes32"
7089
- }
7090
- },
7091
- "visibility": "internal"
7092
- }
7093
- ],
7094
- "src": "6514:33:0"
7095
- },
7096
- "returnParameters": {
7097
- "id": 223,
7098
- "nodeType": "ParameterList",
7099
- "parameters": [],
7100
- "src": "6565:0:0"
7101
- },
7102
- "scope": 308,
7103
- "src": "6492:247:0",
7104
- "stateMutability": "nonpayable",
7105
- "virtual": true,
7106
- "visibility": "internal"
7107
- },
7108
- {
7109
- "body": {
7110
- "id": 275,
7111
- "nodeType": "Block",
7112
- "src": "6929:165:0",
7113
- "statements": [
7114
- {
7115
- "condition": {
7116
- "id": 256,
7117
- "isConstant": false,
7118
- "isLValue": false,
7119
- "isPure": false,
7120
- "lValueRequested": false,
7121
- "nodeType": "UnaryOperation",
7122
- "operator": "!",
7123
- "prefix": true,
7124
- "src": "6943:23:0",
7125
- "subExpression": {
7126
- "arguments": [
7127
- {
7128
- "id": 253,
7129
- "name": "role",
7130
- "nodeType": "Identifier",
7131
- "overloadedDeclarations": [],
7132
- "referencedDeclaration": 247,
7133
- "src": "6952:4:0",
7134
- "typeDescriptions": {
7135
- "typeIdentifier": "t_bytes32",
7136
- "typeString": "bytes32"
7137
- }
7138
- },
7139
- {
7140
- "id": 254,
7141
- "name": "account",
7142
- "nodeType": "Identifier",
7143
- "overloadedDeclarations": [],
7144
- "referencedDeclaration": 249,
7145
- "src": "6958:7:0",
7146
- "typeDescriptions": {
7147
- "typeIdentifier": "t_address",
7148
- "typeString": "address"
7149
- }
7150
- }
7151
- ],
7152
- "expression": {
7153
- "argumentTypes": [
7154
- {
7155
- "typeIdentifier": "t_bytes32",
7156
- "typeString": "bytes32"
7157
- },
7158
- {
7159
- "typeIdentifier": "t_address",
7160
- "typeString": "address"
7161
- }
7162
- ],
7163
- "id": 252,
7164
- "name": "hasRole",
7165
- "nodeType": "Identifier",
7166
- "overloadedDeclarations": [],
7167
- "referencedDeclaration": 81,
7168
- "src": "6944:7:0",
7169
- "typeDescriptions": {
7170
- "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
7171
- "typeString": "function (bytes32,address) view returns (bool)"
7172
- }
7173
- },
7174
- "id": 255,
7175
- "isConstant": false,
7176
- "isLValue": false,
7177
- "isPure": false,
7178
- "kind": "functionCall",
7179
- "lValueRequested": false,
7180
- "names": [],
7181
- "nodeType": "FunctionCall",
7182
- "src": "6944:22:0",
7183
- "tryCall": false,
7184
- "typeDescriptions": {
7185
- "typeIdentifier": "t_bool",
7186
- "typeString": "bool"
7187
- }
7188
- },
7189
- "typeDescriptions": {
7190
- "typeIdentifier": "t_bool",
7191
- "typeString": "bool"
7192
- }
7193
- },
7194
- "id": 274,
7195
- "nodeType": "IfStatement",
7196
- "src": "6939:149:0",
7197
- "trueBody": {
7198
- "id": 273,
7199
- "nodeType": "Block",
7200
- "src": "6968:120:0",
7201
- "statements": [
7202
- {
7203
- "expression": {
7204
- "id": 264,
7205
- "isConstant": false,
7206
- "isLValue": false,
7207
- "isPure": false,
7208
- "lValueRequested": false,
7209
- "leftHandSide": {
7210
- "baseExpression": {
7211
- "expression": {
7212
- "baseExpression": {
7213
- "id": 257,
7214
- "name": "_roles",
7215
- "nodeType": "Identifier",
7216
- "overloadedDeclarations": [],
7217
- "referencedDeclaration": 24,
7218
- "src": "6982:6:0",
7219
- "typeDescriptions": {
7220
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$",
7221
- "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)"
7222
- }
7223
- },
7224
- "id": 259,
7225
- "indexExpression": {
7226
- "id": 258,
7227
- "name": "role",
7228
- "nodeType": "Identifier",
7229
- "overloadedDeclarations": [],
7230
- "referencedDeclaration": 247,
7231
- "src": "6989:4:0",
7232
- "typeDescriptions": {
7233
- "typeIdentifier": "t_bytes32",
7234
- "typeString": "bytes32"
7235
- }
7236
- },
7237
- "isConstant": false,
7238
- "isLValue": true,
7239
- "isPure": false,
7240
- "lValueRequested": false,
7241
- "nodeType": "IndexAccess",
7242
- "src": "6982:12:0",
7243
- "typeDescriptions": {
7244
- "typeIdentifier": "t_struct$_RoleData_$19_storage",
7245
- "typeString": "struct AccessControl.RoleData storage ref"
7246
- }
7247
- },
7248
- "id": 260,
7249
- "isConstant": false,
7250
- "isLValue": true,
7251
- "isPure": false,
7252
- "lValueRequested": false,
7253
- "memberName": "members",
7254
- "nodeType": "MemberAccess",
7255
- "referencedDeclaration": 16,
7256
- "src": "6982:20:0",
7257
- "typeDescriptions": {
7258
- "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
7259
- "typeString": "mapping(address => bool)"
7260
- }
7261
- },
7262
- "id": 262,
7263
- "indexExpression": {
7264
- "id": 261,
7265
- "name": "account",
7266
- "nodeType": "Identifier",
7267
- "overloadedDeclarations": [],
7268
- "referencedDeclaration": 249,
7269
- "src": "7003:7:0",
7270
- "typeDescriptions": {
7271
- "typeIdentifier": "t_address",
7272
- "typeString": "address"
7273
- }
7274
- },
7275
- "isConstant": false,
7276
- "isLValue": true,
7277
- "isPure": false,
7278
- "lValueRequested": true,
7279
- "nodeType": "IndexAccess",
7280
- "src": "6982:29:0",
7281
- "typeDescriptions": {
7282
- "typeIdentifier": "t_bool",
7283
- "typeString": "bool"
7284
- }
7285
- },
7286
- "nodeType": "Assignment",
7287
- "operator": "=",
7288
- "rightHandSide": {
7289
- "hexValue": "74727565",
7290
- "id": 263,
7291
- "isConstant": false,
7292
- "isLValue": false,
7293
- "isPure": true,
7294
- "kind": "bool",
7295
- "lValueRequested": false,
7296
- "nodeType": "Literal",
7297
- "src": "7014:4:0",
7298
- "typeDescriptions": {
7299
- "typeIdentifier": "t_bool",
7300
- "typeString": "bool"
7301
- },
7302
- "value": "true"
7303
- },
7304
- "src": "6982:36:0",
7305
- "typeDescriptions": {
7306
- "typeIdentifier": "t_bool",
7307
- "typeString": "bool"
7308
- }
7309
- },
7310
- "id": 265,
7311
- "nodeType": "ExpressionStatement",
7312
- "src": "6982:36:0"
7313
- },
7314
- {
7315
- "eventCall": {
7316
- "arguments": [
7317
- {
7318
- "id": 267,
7319
- "name": "role",
7320
- "nodeType": "Identifier",
7321
- "overloadedDeclarations": [],
7322
- "referencedDeclaration": 247,
7323
- "src": "7049:4:0",
7324
- "typeDescriptions": {
7325
- "typeIdentifier": "t_bytes32",
7326
- "typeString": "bytes32"
7327
- }
7328
- },
7329
- {
7330
- "id": 268,
7331
- "name": "account",
7332
- "nodeType": "Identifier",
7333
- "overloadedDeclarations": [],
7334
- "referencedDeclaration": 249,
7335
- "src": "7055:7:0",
7336
- "typeDescriptions": {
7337
- "typeIdentifier": "t_address",
7338
- "typeString": "address"
7339
- }
7340
- },
7341
- {
7342
- "arguments": [],
7343
- "expression": {
7344
- "argumentTypes": [],
7345
- "id": 269,
7346
- "name": "_msgSender",
7347
- "nodeType": "Identifier",
7348
- "overloadedDeclarations": [],
7349
- "referencedDeclaration": 3210,
7350
- "src": "7064:10:0",
7351
- "typeDescriptions": {
7352
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
7353
- "typeString": "function () view returns (address)"
7354
- }
7355
- },
7356
- "id": 270,
7357
- "isConstant": false,
7358
- "isLValue": false,
7359
- "isPure": false,
7360
- "kind": "functionCall",
7361
- "lValueRequested": false,
7362
- "names": [],
7363
- "nodeType": "FunctionCall",
7364
- "src": "7064:12:0",
7365
- "tryCall": false,
7366
- "typeDescriptions": {
7367
- "typeIdentifier": "t_address",
7368
- "typeString": "address"
7369
- }
7370
- }
7371
- ],
7372
- "expression": {
7373
- "argumentTypes": [
7374
- {
7375
- "typeIdentifier": "t_bytes32",
7376
- "typeString": "bytes32"
7377
- },
7378
- {
7379
- "typeIdentifier": "t_address",
7380
- "typeString": "address"
7381
- },
7382
- {
7383
- "typeIdentifier": "t_address",
7384
- "typeString": "address"
7385
- }
7386
- ],
7387
- "id": 266,
7388
- "name": "RoleGranted",
7389
- "nodeType": "Identifier",
7390
- "overloadedDeclarations": [],
7391
- "referencedDeclaration": 454,
7392
- "src": "7037:11:0",
7393
- "typeDescriptions": {
7394
- "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$",
7395
- "typeString": "function (bytes32,address,address)"
7396
- }
7397
- },
7398
- "id": 271,
7399
- "isConstant": false,
7400
- "isLValue": false,
7401
- "isPure": false,
7402
- "kind": "functionCall",
7403
- "lValueRequested": false,
7404
- "names": [],
7405
- "nodeType": "FunctionCall",
7406
- "src": "7037:40:0",
7407
- "tryCall": false,
7408
- "typeDescriptions": {
7409
- "typeIdentifier": "t_tuple$__$",
7410
- "typeString": "tuple()"
7411
- }
7412
- },
7413
- "id": 272,
7414
- "nodeType": "EmitStatement",
7415
- "src": "7032:45:0"
7416
- }
7417
- ]
7418
- }
7419
- }
7420
- ]
7421
- },
7422
- "documentation": {
7423
- "id": 245,
7424
- "nodeType": "StructuredDocumentation",
7425
- "src": "6745:111:0",
7426
- "text": " @dev Grants `role` to `account`.\n Internal function without access restriction."
7427
- },
7428
- "id": 276,
7429
- "implemented": true,
7430
- "kind": "function",
7431
- "modifiers": [],
7432
- "name": "_grantRole",
7433
- "nameLocation": "6870:10:0",
7434
- "nodeType": "FunctionDefinition",
7435
- "parameters": {
7436
- "id": 250,
7437
- "nodeType": "ParameterList",
7438
- "parameters": [
7439
- {
7440
- "constant": false,
7441
- "id": 247,
7442
- "mutability": "mutable",
7443
- "name": "role",
7444
- "nameLocation": "6889:4:0",
7445
- "nodeType": "VariableDeclaration",
7446
- "scope": 276,
7447
- "src": "6881:12:0",
7448
- "stateVariable": false,
7449
- "storageLocation": "default",
7450
- "typeDescriptions": {
7451
- "typeIdentifier": "t_bytes32",
7452
- "typeString": "bytes32"
7453
- },
7454
- "typeName": {
7455
- "id": 246,
7456
- "name": "bytes32",
7457
- "nodeType": "ElementaryTypeName",
7458
- "src": "6881:7:0",
7459
- "typeDescriptions": {
7460
- "typeIdentifier": "t_bytes32",
7461
- "typeString": "bytes32"
7462
- }
7463
- },
7464
- "visibility": "internal"
7465
- },
7466
- {
7467
- "constant": false,
7468
- "id": 249,
7469
- "mutability": "mutable",
7470
- "name": "account",
7471
- "nameLocation": "6903:7:0",
7472
- "nodeType": "VariableDeclaration",
7473
- "scope": 276,
7474
- "src": "6895:15:0",
7475
- "stateVariable": false,
7476
- "storageLocation": "default",
7477
- "typeDescriptions": {
7478
- "typeIdentifier": "t_address",
7479
- "typeString": "address"
7480
- },
7481
- "typeName": {
7482
- "id": 248,
7483
- "name": "address",
7484
- "nodeType": "ElementaryTypeName",
7485
- "src": "6895:7:0",
7486
- "stateMutability": "nonpayable",
7487
- "typeDescriptions": {
7488
- "typeIdentifier": "t_address",
7489
- "typeString": "address"
7490
- }
7491
- },
7492
- "visibility": "internal"
7493
- }
7494
- ],
7495
- "src": "6880:31:0"
7496
- },
7497
- "returnParameters": {
7498
- "id": 251,
7499
- "nodeType": "ParameterList",
7500
- "parameters": [],
7501
- "src": "6929:0:0"
7502
- },
7503
- "scope": 308,
7504
- "src": "6861:233:0",
7505
- "stateMutability": "nonpayable",
7506
- "virtual": true,
7507
- "visibility": "internal"
7508
- },
7509
- {
7510
- "body": {
7511
- "id": 306,
7512
- "nodeType": "Block",
7513
- "src": "7288:165:0",
7514
- "statements": [
7515
- {
7516
- "condition": {
7517
- "arguments": [
7518
- {
7519
- "id": 285,
7520
- "name": "role",
7521
- "nodeType": "Identifier",
7522
- "overloadedDeclarations": [],
7523
- "referencedDeclaration": 279,
7524
- "src": "7310:4:0",
7525
- "typeDescriptions": {
7526
- "typeIdentifier": "t_bytes32",
7527
- "typeString": "bytes32"
7528
- }
7529
- },
7530
- {
7531
- "id": 286,
7532
- "name": "account",
7533
- "nodeType": "Identifier",
7534
- "overloadedDeclarations": [],
7535
- "referencedDeclaration": 281,
7536
- "src": "7316:7:0",
7537
- "typeDescriptions": {
7538
- "typeIdentifier": "t_address",
7539
- "typeString": "address"
7540
- }
7541
- }
7542
- ],
7543
- "expression": {
7544
- "argumentTypes": [
7545
- {
7546
- "typeIdentifier": "t_bytes32",
7547
- "typeString": "bytes32"
7548
- },
7549
- {
7550
- "typeIdentifier": "t_address",
7551
- "typeString": "address"
7552
- }
7553
- ],
7554
- "id": 284,
7555
- "name": "hasRole",
7556
- "nodeType": "Identifier",
7557
- "overloadedDeclarations": [],
7558
- "referencedDeclaration": 81,
7559
- "src": "7302:7:0",
7560
- "typeDescriptions": {
7561
- "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
7562
- "typeString": "function (bytes32,address) view returns (bool)"
7563
- }
7564
- },
7565
- "id": 287,
7566
- "isConstant": false,
7567
- "isLValue": false,
7568
- "isPure": false,
7569
- "kind": "functionCall",
7570
- "lValueRequested": false,
7571
- "names": [],
7572
- "nodeType": "FunctionCall",
7573
- "src": "7302:22:0",
7574
- "tryCall": false,
7575
- "typeDescriptions": {
7576
- "typeIdentifier": "t_bool",
7577
- "typeString": "bool"
7578
- }
7579
- },
7580
- "id": 305,
7581
- "nodeType": "IfStatement",
7582
- "src": "7298:149:0",
7583
- "trueBody": {
7584
- "id": 304,
7585
- "nodeType": "Block",
7586
- "src": "7326:121:0",
7587
- "statements": [
7588
- {
7589
- "expression": {
7590
- "id": 295,
7591
- "isConstant": false,
7592
- "isLValue": false,
7593
- "isPure": false,
7594
- "lValueRequested": false,
7595
- "leftHandSide": {
7596
- "baseExpression": {
7597
- "expression": {
7598
- "baseExpression": {
7599
- "id": 288,
7600
- "name": "_roles",
7601
- "nodeType": "Identifier",
7602
- "overloadedDeclarations": [],
7603
- "referencedDeclaration": 24,
7604
- "src": "7340:6:0",
7605
- "typeDescriptions": {
7606
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$",
7607
- "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)"
7608
- }
7609
- },
7610
- "id": 290,
7611
- "indexExpression": {
7612
- "id": 289,
7613
- "name": "role",
7614
- "nodeType": "Identifier",
7615
- "overloadedDeclarations": [],
7616
- "referencedDeclaration": 279,
7617
- "src": "7347:4:0",
7618
- "typeDescriptions": {
7619
- "typeIdentifier": "t_bytes32",
7620
- "typeString": "bytes32"
7621
- }
7622
- },
7623
- "isConstant": false,
7624
- "isLValue": true,
7625
- "isPure": false,
7626
- "lValueRequested": false,
7627
- "nodeType": "IndexAccess",
7628
- "src": "7340:12:0",
7629
- "typeDescriptions": {
7630
- "typeIdentifier": "t_struct$_RoleData_$19_storage",
7631
- "typeString": "struct AccessControl.RoleData storage ref"
7632
- }
7633
- },
7634
- "id": 291,
7635
- "isConstant": false,
7636
- "isLValue": true,
7637
- "isPure": false,
7638
- "lValueRequested": false,
7639
- "memberName": "members",
7640
- "nodeType": "MemberAccess",
7641
- "referencedDeclaration": 16,
7642
- "src": "7340:20:0",
7643
- "typeDescriptions": {
7644
- "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
7645
- "typeString": "mapping(address => bool)"
7646
- }
7647
- },
7648
- "id": 293,
7649
- "indexExpression": {
7650
- "id": 292,
7651
- "name": "account",
7652
- "nodeType": "Identifier",
7653
- "overloadedDeclarations": [],
7654
- "referencedDeclaration": 281,
7655
- "src": "7361:7:0",
7656
- "typeDescriptions": {
7657
- "typeIdentifier": "t_address",
7658
- "typeString": "address"
7659
- }
7660
- },
7661
- "isConstant": false,
7662
- "isLValue": true,
7663
- "isPure": false,
7664
- "lValueRequested": true,
7665
- "nodeType": "IndexAccess",
7666
- "src": "7340:29:0",
7667
- "typeDescriptions": {
7668
- "typeIdentifier": "t_bool",
7669
- "typeString": "bool"
7670
- }
7671
- },
7672
- "nodeType": "Assignment",
7673
- "operator": "=",
7674
- "rightHandSide": {
7675
- "hexValue": "66616c7365",
7676
- "id": 294,
7677
- "isConstant": false,
7678
- "isLValue": false,
7679
- "isPure": true,
7680
- "kind": "bool",
7681
- "lValueRequested": false,
7682
- "nodeType": "Literal",
7683
- "src": "7372:5:0",
7684
- "typeDescriptions": {
7685
- "typeIdentifier": "t_bool",
7686
- "typeString": "bool"
7687
- },
7688
- "value": "false"
7689
- },
7690
- "src": "7340:37:0",
7691
- "typeDescriptions": {
7692
- "typeIdentifier": "t_bool",
7693
- "typeString": "bool"
7694
- }
7695
- },
7696
- "id": 296,
7697
- "nodeType": "ExpressionStatement",
7698
- "src": "7340:37:0"
7699
- },
7700
- {
7701
- "eventCall": {
7702
- "arguments": [
7703
- {
7704
- "id": 298,
7705
- "name": "role",
7706
- "nodeType": "Identifier",
7707
- "overloadedDeclarations": [],
7708
- "referencedDeclaration": 279,
7709
- "src": "7408:4:0",
7710
- "typeDescriptions": {
7711
- "typeIdentifier": "t_bytes32",
7712
- "typeString": "bytes32"
7713
- }
7714
- },
7715
- {
7716
- "id": 299,
7717
- "name": "account",
7718
- "nodeType": "Identifier",
7719
- "overloadedDeclarations": [],
7720
- "referencedDeclaration": 281,
7721
- "src": "7414:7:0",
7722
- "typeDescriptions": {
7723
- "typeIdentifier": "t_address",
7724
- "typeString": "address"
7725
- }
7726
- },
7727
- {
7728
- "arguments": [],
7729
- "expression": {
7730
- "argumentTypes": [],
7731
- "id": 300,
7732
- "name": "_msgSender",
7733
- "nodeType": "Identifier",
7734
- "overloadedDeclarations": [],
7735
- "referencedDeclaration": 3210,
7736
- "src": "7423:10:0",
7737
- "typeDescriptions": {
7738
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
7739
- "typeString": "function () view returns (address)"
7740
- }
7741
- },
7742
- "id": 301,
7743
- "isConstant": false,
7744
- "isLValue": false,
7745
- "isPure": false,
7746
- "kind": "functionCall",
7747
- "lValueRequested": false,
7748
- "names": [],
7749
- "nodeType": "FunctionCall",
7750
- "src": "7423:12:0",
7751
- "tryCall": false,
7752
- "typeDescriptions": {
7753
- "typeIdentifier": "t_address",
7754
- "typeString": "address"
7755
- }
7756
- }
7757
- ],
7758
- "expression": {
7759
- "argumentTypes": [
7760
- {
7761
- "typeIdentifier": "t_bytes32",
7762
- "typeString": "bytes32"
7763
- },
7764
- {
7765
- "typeIdentifier": "t_address",
7766
- "typeString": "address"
7767
- },
7768
- {
7769
- "typeIdentifier": "t_address",
7770
- "typeString": "address"
7771
- }
7772
- ],
7773
- "id": 297,
7774
- "name": "RoleRevoked",
7775
- "nodeType": "Identifier",
7776
- "overloadedDeclarations": [],
7777
- "referencedDeclaration": 463,
7778
- "src": "7396:11:0",
7779
- "typeDescriptions": {
7780
- "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$",
7781
- "typeString": "function (bytes32,address,address)"
7782
- }
7783
- },
7784
- "id": 302,
7785
- "isConstant": false,
7786
- "isLValue": false,
7787
- "isPure": false,
7788
- "kind": "functionCall",
7789
- "lValueRequested": false,
7790
- "names": [],
7791
- "nodeType": "FunctionCall",
7792
- "src": "7396:40:0",
7793
- "tryCall": false,
7794
- "typeDescriptions": {
7795
- "typeIdentifier": "t_tuple$__$",
7796
- "typeString": "tuple()"
7797
- }
7798
- },
7799
- "id": 303,
7800
- "nodeType": "EmitStatement",
7801
- "src": "7391:45:0"
7802
- }
7803
- ]
7804
- }
7805
- }
7806
- ]
7807
- },
7808
- "documentation": {
7809
- "id": 277,
7810
- "nodeType": "StructuredDocumentation",
7811
- "src": "7100:114:0",
7812
- "text": " @dev Revokes `role` from `account`.\n Internal function without access restriction."
7813
- },
7814
- "id": 307,
7815
- "implemented": true,
7816
- "kind": "function",
7817
- "modifiers": [],
7818
- "name": "_revokeRole",
7819
- "nameLocation": "7228:11:0",
7820
- "nodeType": "FunctionDefinition",
7821
- "parameters": {
7822
- "id": 282,
7823
- "nodeType": "ParameterList",
7824
- "parameters": [
7825
- {
7826
- "constant": false,
7827
- "id": 279,
7828
- "mutability": "mutable",
7829
- "name": "role",
7830
- "nameLocation": "7248:4:0",
7831
- "nodeType": "VariableDeclaration",
7832
- "scope": 307,
7833
- "src": "7240:12:0",
7834
- "stateVariable": false,
7835
- "storageLocation": "default",
7836
- "typeDescriptions": {
7837
- "typeIdentifier": "t_bytes32",
7838
- "typeString": "bytes32"
7839
- },
7840
- "typeName": {
7841
- "id": 278,
7842
- "name": "bytes32",
7843
- "nodeType": "ElementaryTypeName",
7844
- "src": "7240:7:0",
7845
- "typeDescriptions": {
7846
- "typeIdentifier": "t_bytes32",
7847
- "typeString": "bytes32"
7848
- }
7849
- },
7850
- "visibility": "internal"
7851
- },
7852
- {
7853
- "constant": false,
7854
- "id": 281,
7855
- "mutability": "mutable",
7856
- "name": "account",
7857
- "nameLocation": "7262:7:0",
7858
- "nodeType": "VariableDeclaration",
7859
- "scope": 307,
7860
- "src": "7254:15:0",
7861
- "stateVariable": false,
7862
- "storageLocation": "default",
7863
- "typeDescriptions": {
7864
- "typeIdentifier": "t_address",
7865
- "typeString": "address"
7866
- },
7867
- "typeName": {
7868
- "id": 280,
7869
- "name": "address",
7870
- "nodeType": "ElementaryTypeName",
7871
- "src": "7254:7:0",
7872
- "stateMutability": "nonpayable",
7873
- "typeDescriptions": {
7874
- "typeIdentifier": "t_address",
7875
- "typeString": "address"
7876
- }
7877
- },
7878
- "visibility": "internal"
7879
- }
7880
- ],
7881
- "src": "7239:31:0"
7882
- },
7883
- "returnParameters": {
7884
- "id": 283,
7885
- "nodeType": "ParameterList",
7886
- "parameters": [],
7887
- "src": "7288:0:0"
7888
- },
7889
- "scope": 308,
7890
- "src": "7219:234:0",
7891
- "stateMutability": "nonpayable",
7892
- "virtual": true,
7893
- "visibility": "internal"
7894
- }
7895
- ],
7896
- "scope": 309,
7897
- "src": "1806:5649:0",
7898
- "usedErrors": []
7899
- }
7900
- ],
7901
- "src": "108:7348:0"
7902
- },
7903
4061
  "compiler": {
7904
4062
  "name": "solc",
7905
4063
  "version": "0.8.13+commit.abaa5c0e.Emscripten.clang"
7906
4064
  },
7907
4065
  "networks": {},
7908
- "schemaVersion": "3.4.4",
7909
- "updatedAt": "2022-04-14T09:53:22.496Z",
4066
+ "schemaVersion": "3.4.7",
4067
+ "updatedAt": "2022-04-18T12:29:28.141Z",
7910
4068
  "devdoc": {
7911
4069
  "details": "Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ``` bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.",
7912
4070
  "kind": "dev",