:Context: pass:normal[xref:GSN.adoc#Context[`Context`]]
:xref-Context: xref:GSN.adoc#Context
:Context-constructor: pass:normal[xref:GSN.adoc#Context-constructor--[`Context.constructor`]]
:xref-Context-constructor: xref:GSN.adoc#Context-constructor--
:Context-_msgSender: pass:normal[xref:GSN.adoc#Context-_msgSender--[`Context._msgSender`]]
:xref-Context-_msgSender: xref:GSN.adoc#Context-_msgSender--
:Context-_msgData: pass:normal[xref:GSN.adoc#Context-_msgData--[`Context._msgData`]]
:xref-Context-_msgData: xref:GSN.adoc#Context-_msgData--
:GSNRecipient: pass:normal[xref:GSN.adoc#GSNRecipient[`GSNRecipient`]]
:xref-GSNRecipient: xref:GSN.adoc#GSNRecipient
:GSNRecipient-POST_RELAYED_CALL_MAX_GAS: pass:normal[xref:GSN.adoc#GSNRecipient-POST_RELAYED_CALL_MAX_GAS-uint256[`GSNRecipient.POST_RELAYED_CALL_MAX_GAS`]]
:xref-GSNRecipient-POST_RELAYED_CALL_MAX_GAS: xref:GSN.adoc#GSNRecipient-POST_RELAYED_CALL_MAX_GAS-uint256
:GSNRecipient-getHubAddr: pass:normal[xref:GSN.adoc#GSNRecipient-getHubAddr--[`GSNRecipient.getHubAddr`]]
:xref-GSNRecipient-getHubAddr: xref:GSN.adoc#GSNRecipient-getHubAddr--
:GSNRecipient-_upgradeRelayHub: pass:normal[xref:GSN.adoc#GSNRecipient-_upgradeRelayHub-address-[`GSNRecipient._upgradeRelayHub`]]
:xref-GSNRecipient-_upgradeRelayHub: xref:GSN.adoc#GSNRecipient-_upgradeRelayHub-address-
:GSNRecipient-relayHubVersion: pass:normal[xref:GSN.adoc#GSNRecipient-relayHubVersion--[`GSNRecipient.relayHubVersion`]]
:xref-GSNRecipient-relayHubVersion: xref:GSN.adoc#GSNRecipient-relayHubVersion--
:GSNRecipient-_withdrawDeposits: pass:normal[xref:GSN.adoc#GSNRecipient-_withdrawDeposits-uint256-address-payable-[`GSNRecipient._withdrawDeposits`]]
:xref-GSNRecipient-_withdrawDeposits: xref:GSN.adoc#GSNRecipient-_withdrawDeposits-uint256-address-payable-
:GSNRecipient-_msgSender: pass:normal[xref:GSN.adoc#GSNRecipient-_msgSender--[`GSNRecipient._msgSender`]]
:xref-GSNRecipient-_msgSender: xref:GSN.adoc#GSNRecipient-_msgSender--
:GSNRecipient-_msgData: pass:normal[xref:GSN.adoc#GSNRecipient-_msgData--[`GSNRecipient._msgData`]]
:xref-GSNRecipient-_msgData: xref:GSN.adoc#GSNRecipient-_msgData--
:GSNRecipient-preRelayedCall: pass:normal[xref:GSN.adoc#GSNRecipient-preRelayedCall-bytes-[`GSNRecipient.preRelayedCall`]]
:xref-GSNRecipient-preRelayedCall: xref:GSN.adoc#GSNRecipient-preRelayedCall-bytes-
:GSNRecipient-_preRelayedCall: pass:normal[xref:GSN.adoc#GSNRecipient-_preRelayedCall-bytes-[`GSNRecipient._preRelayedCall`]]
:xref-GSNRecipient-_preRelayedCall: xref:GSN.adoc#GSNRecipient-_preRelayedCall-bytes-
:GSNRecipient-postRelayedCall: pass:normal[xref:GSN.adoc#GSNRecipient-postRelayedCall-bytes-bool-uint256-bytes32-[`GSNRecipient.postRelayedCall`]]
:xref-GSNRecipient-postRelayedCall: xref:GSN.adoc#GSNRecipient-postRelayedCall-bytes-bool-uint256-bytes32-
:GSNRecipient-_postRelayedCall: pass:normal[xref:GSN.adoc#GSNRecipient-_postRelayedCall-bytes-bool-uint256-bytes32-[`GSNRecipient._postRelayedCall`]]
:xref-GSNRecipient-_postRelayedCall: xref:GSN.adoc#GSNRecipient-_postRelayedCall-bytes-bool-uint256-bytes32-
:GSNRecipient-_approveRelayedCall: pass:normal[xref:GSN.adoc#GSNRecipient-_approveRelayedCall--[`GSNRecipient._approveRelayedCall`]]
:xref-GSNRecipient-_approveRelayedCall: xref:GSN.adoc#GSNRecipient-_approveRelayedCall--
:GSNRecipient-_approveRelayedCall: pass:normal[xref:GSN.adoc#GSNRecipient-_approveRelayedCall-bytes-[`GSNRecipient._approveRelayedCall`]]
:xref-GSNRecipient-_approveRelayedCall: xref:GSN.adoc#GSNRecipient-_approveRelayedCall-bytes-
:GSNRecipient-_rejectRelayedCall: pass:normal[xref:GSN.adoc#GSNRecipient-_rejectRelayedCall-uint256-[`GSNRecipient._rejectRelayedCall`]]
:xref-GSNRecipient-_rejectRelayedCall: xref:GSN.adoc#GSNRecipient-_rejectRelayedCall-uint256-
:GSNRecipient-_computeCharge: pass:normal[xref:GSN.adoc#GSNRecipient-_computeCharge-uint256-uint256-uint256-[`GSNRecipient._computeCharge`]]
:xref-GSNRecipient-_computeCharge: xref:GSN.adoc#GSNRecipient-_computeCharge-uint256-uint256-uint256-
:GSNRecipient-RelayHubChanged: pass:normal[xref:GSN.adoc#GSNRecipient-RelayHubChanged-address-address-[`GSNRecipient.RelayHubChanged`]]
:xref-GSNRecipient-RelayHubChanged: xref:GSN.adoc#GSNRecipient-RelayHubChanged-address-address-
:GSNRecipientERC20Fee: pass:normal[xref:GSN.adoc#GSNRecipientERC20Fee[`GSNRecipientERC20Fee`]]
:xref-GSNRecipientERC20Fee: xref:GSN.adoc#GSNRecipientERC20Fee
:GSNRecipientERC20Fee-constructor: pass:normal[xref:GSN.adoc#GSNRecipientERC20Fee-constructor-string-string-[`GSNRecipientERC20Fee.constructor`]]
:xref-GSNRecipientERC20Fee-constructor: xref:GSN.adoc#GSNRecipientERC20Fee-constructor-string-string-
:GSNRecipientERC20Fee-token: pass:normal[xref:GSN.adoc#GSNRecipientERC20Fee-token--[`GSNRecipientERC20Fee.token`]]
:xref-GSNRecipientERC20Fee-token: xref:GSN.adoc#GSNRecipientERC20Fee-token--
:GSNRecipientERC20Fee-_mint: pass:normal[xref:GSN.adoc#GSNRecipientERC20Fee-_mint-address-uint256-[`GSNRecipientERC20Fee._mint`]]
:xref-GSNRecipientERC20Fee-_mint: xref:GSN.adoc#GSNRecipientERC20Fee-_mint-address-uint256-
:GSNRecipientERC20Fee-acceptRelayedCall: pass:normal[xref:GSN.adoc#GSNRecipientERC20Fee-acceptRelayedCall-address-address-bytes-uint256-uint256-uint256-uint256-bytes-uint256-[`GSNRecipientERC20Fee.acceptRelayedCall`]]
:xref-GSNRecipientERC20Fee-acceptRelayedCall: xref:GSN.adoc#GSNRecipientERC20Fee-acceptRelayedCall-address-address-bytes-uint256-uint256-uint256-uint256-bytes-uint256-
:GSNRecipientERC20Fee-_preRelayedCall: pass:normal[xref:GSN.adoc#GSNRecipientERC20Fee-_preRelayedCall-bytes-[`GSNRecipientERC20Fee._preRelayedCall`]]
:xref-GSNRecipientERC20Fee-_preRelayedCall: xref:GSN.adoc#GSNRecipientERC20Fee-_preRelayedCall-bytes-
:GSNRecipientERC20Fee-_postRelayedCall: pass:normal[xref:GSN.adoc#GSNRecipientERC20Fee-_postRelayedCall-bytes-bool-uint256-bytes32-[`GSNRecipientERC20Fee._postRelayedCall`]]
:xref-GSNRecipientERC20Fee-_postRelayedCall: xref:GSN.adoc#GSNRecipientERC20Fee-_postRelayedCall-bytes-bool-uint256-bytes32-
:__unstable__ERC20PrimaryAdmin: pass:normal[xref:GSN.adoc#__unstable__ERC20PrimaryAdmin[`__unstable__ERC20PrimaryAdmin`]]
:xref-__unstable__ERC20PrimaryAdmin: xref:GSN.adoc#__unstable__ERC20PrimaryAdmin
:__unstable__ERC20PrimaryAdmin-constructor: pass:normal[xref:GSN.adoc#__unstable__ERC20PrimaryAdmin-constructor-string-string-uint8-[`__unstable__ERC20PrimaryAdmin.constructor`]]
:xref-__unstable__ERC20PrimaryAdmin-constructor: xref:GSN.adoc#__unstable__ERC20PrimaryAdmin-constructor-string-string-uint8-
:__unstable__ERC20PrimaryAdmin-mint: pass:normal[xref:GSN.adoc#__unstable__ERC20PrimaryAdmin-mint-address-uint256-[`__unstable__ERC20PrimaryAdmin.mint`]]
:xref-__unstable__ERC20PrimaryAdmin-mint: xref:GSN.adoc#__unstable__ERC20PrimaryAdmin-mint-address-uint256-
:__unstable__ERC20PrimaryAdmin-allowance: pass:normal[xref:GSN.adoc#__unstable__ERC20PrimaryAdmin-allowance-address-address-[`__unstable__ERC20PrimaryAdmin.allowance`]]
:xref-__unstable__ERC20PrimaryAdmin-allowance: xref:GSN.adoc#__unstable__ERC20PrimaryAdmin-allowance-address-address-
:__unstable__ERC20PrimaryAdmin-_approve: pass:normal[xref:GSN.adoc#__unstable__ERC20PrimaryAdmin-_approve-address-address-uint256-[`__unstable__ERC20PrimaryAdmin._approve`]]
:xref-__unstable__ERC20PrimaryAdmin-_approve: xref:GSN.adoc#__unstable__ERC20PrimaryAdmin-_approve-address-address-uint256-
:__unstable__ERC20PrimaryAdmin-transferFrom: pass:normal[xref:GSN.adoc#__unstable__ERC20PrimaryAdmin-transferFrom-address-address-uint256-[`__unstable__ERC20PrimaryAdmin.transferFrom`]]
:xref-__unstable__ERC20PrimaryAdmin-transferFrom: xref:GSN.adoc#__unstable__ERC20PrimaryAdmin-transferFrom-address-address-uint256-
:GSNRecipientSignature: pass:normal[xref:GSN.adoc#GSNRecipientSignature[`GSNRecipientSignature`]]
:xref-GSNRecipientSignature: xref:GSN.adoc#GSNRecipientSignature
:GSNRecipientSignature-constructor: pass:normal[xref:GSN.adoc#GSNRecipientSignature-constructor-address-[`GSNRecipientSignature.constructor`]]
:xref-GSNRecipientSignature-constructor: xref:GSN.adoc#GSNRecipientSignature-constructor-address-
:GSNRecipientSignature-acceptRelayedCall: pass:normal[xref:GSN.adoc#GSNRecipientSignature-acceptRelayedCall-address-address-bytes-uint256-uint256-uint256-uint256-bytes-uint256-[`GSNRecipientSignature.acceptRelayedCall`]]
:xref-GSNRecipientSignature-acceptRelayedCall: xref:GSN.adoc#GSNRecipientSignature-acceptRelayedCall-address-address-bytes-uint256-uint256-uint256-uint256-bytes-uint256-
:GSNRecipientSignature-_preRelayedCall: pass:normal[xref:GSN.adoc#GSNRecipientSignature-_preRelayedCall-bytes-[`GSNRecipientSignature._preRelayedCall`]]
:xref-GSNRecipientSignature-_preRelayedCall: xref:GSN.adoc#GSNRecipientSignature-_preRelayedCall-bytes-
:GSNRecipientSignature-_postRelayedCall: pass:normal[xref:GSN.adoc#GSNRecipientSignature-_postRelayedCall-bytes-bool-uint256-bytes32-[`GSNRecipientSignature._postRelayedCall`]]
:xref-GSNRecipientSignature-_postRelayedCall: xref:GSN.adoc#GSNRecipientSignature-_postRelayedCall-bytes-bool-uint256-bytes32-
:IRelayHub: pass:normal[xref:GSN.adoc#IRelayHub[`IRelayHub`]]
:xref-IRelayHub: xref:GSN.adoc#IRelayHub
:IRelayHub-stake: pass:normal[xref:GSN.adoc#IRelayHub-stake-address-uint256-[`IRelayHub.stake`]]
:xref-IRelayHub-stake: xref:GSN.adoc#IRelayHub-stake-address-uint256-
:IRelayHub-registerRelay: pass:normal[xref:GSN.adoc#IRelayHub-registerRelay-uint256-string-[`IRelayHub.registerRelay`]]
:xref-IRelayHub-registerRelay: xref:GSN.adoc#IRelayHub-registerRelay-uint256-string-
:IRelayHub-removeRelayByOwner: pass:normal[xref:GSN.adoc#IRelayHub-removeRelayByOwner-address-[`IRelayHub.removeRelayByOwner`]]
:xref-IRelayHub-removeRelayByOwner: xref:GSN.adoc#IRelayHub-removeRelayByOwner-address-
:IRelayHub-unstake: pass:normal[xref:GSN.adoc#IRelayHub-unstake-address-[`IRelayHub.unstake`]]
:xref-IRelayHub-unstake: xref:GSN.adoc#IRelayHub-unstake-address-
:IRelayHub-getRelay: pass:normal[xref:GSN.adoc#IRelayHub-getRelay-address-[`IRelayHub.getRelay`]]
:xref-IRelayHub-getRelay: xref:GSN.adoc#IRelayHub-getRelay-address-
:IRelayHub-depositFor: pass:normal[xref:GSN.adoc#IRelayHub-depositFor-address-[`IRelayHub.depositFor`]]
:xref-IRelayHub-depositFor: xref:GSN.adoc#IRelayHub-depositFor-address-
:IRelayHub-balanceOf: pass:normal[xref:GSN.adoc#IRelayHub-balanceOf-address-[`IRelayHub.balanceOf`]]
:xref-IRelayHub-balanceOf: xref:GSN.adoc#IRelayHub-balanceOf-address-
:IRelayHub-withdraw: pass:normal[xref:GSN.adoc#IRelayHub-withdraw-uint256-address-payable-[`IRelayHub.withdraw`]]
:xref-IRelayHub-withdraw: xref:GSN.adoc#IRelayHub-withdraw-uint256-address-payable-
:IRelayHub-canRelay: pass:normal[xref:GSN.adoc#IRelayHub-canRelay-address-address-address-bytes-uint256-uint256-uint256-uint256-bytes-bytes-[`IRelayHub.canRelay`]]
:xref-IRelayHub-canRelay: xref:GSN.adoc#IRelayHub-canRelay-address-address-address-bytes-uint256-uint256-uint256-uint256-bytes-bytes-
:IRelayHub-relayCall: pass:normal[xref:GSN.adoc#IRelayHub-relayCall-address-address-bytes-uint256-uint256-uint256-uint256-bytes-bytes-[`IRelayHub.relayCall`]]
:xref-IRelayHub-relayCall: xref:GSN.adoc#IRelayHub-relayCall-address-address-bytes-uint256-uint256-uint256-uint256-bytes-bytes-
:IRelayHub-requiredGas: pass:normal[xref:GSN.adoc#IRelayHub-requiredGas-uint256-[`IRelayHub.requiredGas`]]
:xref-IRelayHub-requiredGas: xref:GSN.adoc#IRelayHub-requiredGas-uint256-
:IRelayHub-maxPossibleCharge: pass:normal[xref:GSN.adoc#IRelayHub-maxPossibleCharge-uint256-uint256-uint256-[`IRelayHub.maxPossibleCharge`]]
:xref-IRelayHub-maxPossibleCharge: xref:GSN.adoc#IRelayHub-maxPossibleCharge-uint256-uint256-uint256-
:IRelayHub-penalizeRepeatedNonce: pass:normal[xref:GSN.adoc#IRelayHub-penalizeRepeatedNonce-bytes-bytes-bytes-bytes-[`IRelayHub.penalizeRepeatedNonce`]]
:xref-IRelayHub-penalizeRepeatedNonce: xref:GSN.adoc#IRelayHub-penalizeRepeatedNonce-bytes-bytes-bytes-bytes-
:IRelayHub-penalizeIllegalTransaction: pass:normal[xref:GSN.adoc#IRelayHub-penalizeIllegalTransaction-bytes-bytes-[`IRelayHub.penalizeIllegalTransaction`]]
:xref-IRelayHub-penalizeIllegalTransaction: xref:GSN.adoc#IRelayHub-penalizeIllegalTransaction-bytes-bytes-
:IRelayHub-getNonce: pass:normal[xref:GSN.adoc#IRelayHub-getNonce-address-[`IRelayHub.getNonce`]]
:xref-IRelayHub-getNonce: xref:GSN.adoc#IRelayHub-getNonce-address-
:IRelayHub-Staked: pass:normal[xref:GSN.adoc#IRelayHub-Staked-address-uint256-uint256-[`IRelayHub.Staked`]]
:xref-IRelayHub-Staked: xref:GSN.adoc#IRelayHub-Staked-address-uint256-uint256-
:IRelayHub-RelayAdded: pass:normal[xref:GSN.adoc#IRelayHub-RelayAdded-address-address-uint256-uint256-uint256-string-[`IRelayHub.RelayAdded`]]
:xref-IRelayHub-RelayAdded: xref:GSN.adoc#IRelayHub-RelayAdded-address-address-uint256-uint256-uint256-string-
:IRelayHub-RelayRemoved: pass:normal[xref:GSN.adoc#IRelayHub-RelayRemoved-address-uint256-[`IRelayHub.RelayRemoved`]]
:xref-IRelayHub-RelayRemoved: xref:GSN.adoc#IRelayHub-RelayRemoved-address-uint256-
:IRelayHub-Unstaked: pass:normal[xref:GSN.adoc#IRelayHub-Unstaked-address-uint256-[`IRelayHub.Unstaked`]]
:xref-IRelayHub-Unstaked: xref:GSN.adoc#IRelayHub-Unstaked-address-uint256-
:IRelayHub-Deposited: pass:normal[xref:GSN.adoc#IRelayHub-Deposited-address-address-uint256-[`IRelayHub.Deposited`]]
:xref-IRelayHub-Deposited: xref:GSN.adoc#IRelayHub-Deposited-address-address-uint256-
:IRelayHub-Withdrawn: pass:normal[xref:GSN.adoc#IRelayHub-Withdrawn-address-address-uint256-[`IRelayHub.Withdrawn`]]
:xref-IRelayHub-Withdrawn: xref:GSN.adoc#IRelayHub-Withdrawn-address-address-uint256-
:IRelayHub-CanRelayFailed: pass:normal[xref:GSN.adoc#IRelayHub-CanRelayFailed-address-address-address-bytes4-uint256-[`IRelayHub.CanRelayFailed`]]
:xref-IRelayHub-CanRelayFailed: xref:GSN.adoc#IRelayHub-CanRelayFailed-address-address-address-bytes4-uint256-
:IRelayHub-TransactionRelayed: pass:normal[xref:GSN.adoc#IRelayHub-TransactionRelayed-address-address-address-bytes4-enum-IRelayHub-RelayCallStatus-uint256-[`IRelayHub.TransactionRelayed`]]
:xref-IRelayHub-TransactionRelayed: xref:GSN.adoc#IRelayHub-TransactionRelayed-address-address-address-bytes4-enum-IRelayHub-RelayCallStatus-uint256-
:IRelayHub-Penalized: pass:normal[xref:GSN.adoc#IRelayHub-Penalized-address-address-uint256-[`IRelayHub.Penalized`]]
:xref-IRelayHub-Penalized: xref:GSN.adoc#IRelayHub-Penalized-address-address-uint256-
:IRelayRecipient: pass:normal[xref:GSN.adoc#IRelayRecipient[`IRelayRecipient`]]
:xref-IRelayRecipient: xref:GSN.adoc#IRelayRecipient
:IRelayRecipient-getHubAddr: pass:normal[xref:GSN.adoc#IRelayRecipient-getHubAddr--[`IRelayRecipient.getHubAddr`]]
:xref-IRelayRecipient-getHubAddr: xref:GSN.adoc#IRelayRecipient-getHubAddr--
:IRelayRecipient-acceptRelayedCall: pass:normal[xref:GSN.adoc#IRelayRecipient-acceptRelayedCall-address-address-bytes-uint256-uint256-uint256-uint256-bytes-uint256-[`IRelayRecipient.acceptRelayedCall`]]
:xref-IRelayRecipient-acceptRelayedCall: xref:GSN.adoc#IRelayRecipient-acceptRelayedCall-address-address-bytes-uint256-uint256-uint256-uint256-bytes-uint256-
:IRelayRecipient-preRelayedCall: pass:normal[xref:GSN.adoc#IRelayRecipient-preRelayedCall-bytes-[`IRelayRecipient.preRelayedCall`]]
:xref-IRelayRecipient-preRelayedCall: xref:GSN.adoc#IRelayRecipient-preRelayedCall-bytes-
:IRelayRecipient-postRelayedCall: pass:normal[xref:GSN.adoc#IRelayRecipient-postRelayedCall-bytes-bool-uint256-bytes32-[`IRelayRecipient.postRelayedCall`]]
:xref-IRelayRecipient-postRelayedCall: xref:GSN.adoc#IRelayRecipient-postRelayedCall-bytes-bool-uint256-bytes32-
:Crowdsale: pass:normal[xref:crowdsale.adoc#Crowdsale[`Crowdsale`]]
:xref-Crowdsale: xref:crowdsale.adoc#Crowdsale
:Crowdsale-constructor: pass:normal[xref:crowdsale.adoc#Crowdsale-constructor-uint256-address-payable-contract-IERC20-[`Crowdsale.constructor`]]
:xref-Crowdsale-constructor: xref:crowdsale.adoc#Crowdsale-constructor-uint256-address-payable-contract-IERC20-
:Crowdsale-fallback: pass:normal[xref:crowdsale.adoc#Crowdsale-fallback--[`Crowdsale.fallback`]]
:xref-Crowdsale-fallback: xref:crowdsale.adoc#Crowdsale-fallback--
:Crowdsale-token: pass:normal[xref:crowdsale.adoc#Crowdsale-token--[`Crowdsale.token`]]
:xref-Crowdsale-token: xref:crowdsale.adoc#Crowdsale-token--
:Crowdsale-wallet: pass:normal[xref:crowdsale.adoc#Crowdsale-wallet--[`Crowdsale.wallet`]]
:xref-Crowdsale-wallet: xref:crowdsale.adoc#Crowdsale-wallet--
:Crowdsale-rate: pass:normal[xref:crowdsale.adoc#Crowdsale-rate--[`Crowdsale.rate`]]
:xref-Crowdsale-rate: xref:crowdsale.adoc#Crowdsale-rate--
:Crowdsale-weiRaised: pass:normal[xref:crowdsale.adoc#Crowdsale-weiRaised--[`Crowdsale.weiRaised`]]
:xref-Crowdsale-weiRaised: xref:crowdsale.adoc#Crowdsale-weiRaised--
:Crowdsale-buyTokens: pass:normal[xref:crowdsale.adoc#Crowdsale-buyTokens-address-[`Crowdsale.buyTokens`]]
:xref-Crowdsale-buyTokens: xref:crowdsale.adoc#Crowdsale-buyTokens-address-
:Crowdsale-_preValidatePurchase: pass:normal[xref:crowdsale.adoc#Crowdsale-_preValidatePurchase-address-uint256-[`Crowdsale._preValidatePurchase`]]
:xref-Crowdsale-_preValidatePurchase: xref:crowdsale.adoc#Crowdsale-_preValidatePurchase-address-uint256-
:Crowdsale-_postValidatePurchase: pass:normal[xref:crowdsale.adoc#Crowdsale-_postValidatePurchase-address-uint256-[`Crowdsale._postValidatePurchase`]]
:xref-Crowdsale-_postValidatePurchase: xref:crowdsale.adoc#Crowdsale-_postValidatePurchase-address-uint256-
:Crowdsale-_deliverTokens: pass:normal[xref:crowdsale.adoc#Crowdsale-_deliverTokens-address-uint256-[`Crowdsale._deliverTokens`]]
:xref-Crowdsale-_deliverTokens: xref:crowdsale.adoc#Crowdsale-_deliverTokens-address-uint256-
:Crowdsale-_processPurchase: pass:normal[xref:crowdsale.adoc#Crowdsale-_processPurchase-address-uint256-[`Crowdsale._processPurchase`]]
:xref-Crowdsale-_processPurchase: xref:crowdsale.adoc#Crowdsale-_processPurchase-address-uint256-
:Crowdsale-_updatePurchasingState: pass:normal[xref:crowdsale.adoc#Crowdsale-_updatePurchasingState-address-uint256-[`Crowdsale._updatePurchasingState`]]
:xref-Crowdsale-_updatePurchasingState: xref:crowdsale.adoc#Crowdsale-_updatePurchasingState-address-uint256-
:Crowdsale-_getTokenAmount: pass:normal[xref:crowdsale.adoc#Crowdsale-_getTokenAmount-uint256-[`Crowdsale._getTokenAmount`]]
:xref-Crowdsale-_getTokenAmount: xref:crowdsale.adoc#Crowdsale-_getTokenAmount-uint256-
:Crowdsale-_forwardFunds: pass:normal[xref:crowdsale.adoc#Crowdsale-_forwardFunds--[`Crowdsale._forwardFunds`]]
:xref-Crowdsale-_forwardFunds: xref:crowdsale.adoc#Crowdsale-_forwardFunds--
:Crowdsale-TokensPurchased: pass:normal[xref:crowdsale.adoc#Crowdsale-TokensPurchased-address-address-uint256-uint256-[`Crowdsale.TokensPurchased`]]
:xref-Crowdsale-TokensPurchased: xref:crowdsale.adoc#Crowdsale-TokensPurchased-address-address-uint256-uint256-
:FinalizableCrowdsale: pass:normal[xref:crowdsale.adoc#FinalizableCrowdsale[`FinalizableCrowdsale`]]
:xref-FinalizableCrowdsale: xref:crowdsale.adoc#FinalizableCrowdsale
:FinalizableCrowdsale-constructor: pass:normal[xref:crowdsale.adoc#FinalizableCrowdsale-constructor--[`FinalizableCrowdsale.constructor`]]
:xref-FinalizableCrowdsale-constructor: xref:crowdsale.adoc#FinalizableCrowdsale-constructor--
:FinalizableCrowdsale-finalized: pass:normal[xref:crowdsale.adoc#FinalizableCrowdsale-finalized--[`FinalizableCrowdsale.finalized`]]
:xref-FinalizableCrowdsale-finalized: xref:crowdsale.adoc#FinalizableCrowdsale-finalized--
:FinalizableCrowdsale-finalize: pass:normal[xref:crowdsale.adoc#FinalizableCrowdsale-finalize--[`FinalizableCrowdsale.finalize`]]
:xref-FinalizableCrowdsale-finalize: xref:crowdsale.adoc#FinalizableCrowdsale-finalize--
:FinalizableCrowdsale-_finalization: pass:normal[xref:crowdsale.adoc#FinalizableCrowdsale-_finalization--[`FinalizableCrowdsale._finalization`]]
:xref-FinalizableCrowdsale-_finalization: xref:crowdsale.adoc#FinalizableCrowdsale-_finalization--
:FinalizableCrowdsale-CrowdsaleFinalized: pass:normal[xref:crowdsale.adoc#FinalizableCrowdsale-CrowdsaleFinalized--[`FinalizableCrowdsale.CrowdsaleFinalized`]]
:xref-FinalizableCrowdsale-CrowdsaleFinalized: xref:crowdsale.adoc#FinalizableCrowdsale-CrowdsaleFinalized--
:PostDeliveryCrowdsale: pass:normal[xref:crowdsale.adoc#PostDeliveryCrowdsale[`PostDeliveryCrowdsale`]]
:xref-PostDeliveryCrowdsale: xref:crowdsale.adoc#PostDeliveryCrowdsale
:PostDeliveryCrowdsale-withdrawTokens: pass:normal[xref:crowdsale.adoc#PostDeliveryCrowdsale-withdrawTokens-address-[`PostDeliveryCrowdsale.withdrawTokens`]]
:xref-PostDeliveryCrowdsale-withdrawTokens: xref:crowdsale.adoc#PostDeliveryCrowdsale-withdrawTokens-address-
:PostDeliveryCrowdsale-balanceOf: pass:normal[xref:crowdsale.adoc#PostDeliveryCrowdsale-balanceOf-address-[`PostDeliveryCrowdsale.balanceOf`]]
:xref-PostDeliveryCrowdsale-balanceOf: xref:crowdsale.adoc#PostDeliveryCrowdsale-balanceOf-address-
:PostDeliveryCrowdsale-_processPurchase: pass:normal[xref:crowdsale.adoc#PostDeliveryCrowdsale-_processPurchase-address-uint256-[`PostDeliveryCrowdsale._processPurchase`]]
:xref-PostDeliveryCrowdsale-_processPurchase: xref:crowdsale.adoc#PostDeliveryCrowdsale-_processPurchase-address-uint256-
:__unstable__TokenVault: pass:normal[xref:crowdsale.adoc#__unstable__TokenVault[`__unstable__TokenVault`]]
:xref-__unstable__TokenVault: xref:crowdsale.adoc#__unstable__TokenVault
:__unstable__TokenVault-transfer: pass:normal[xref:crowdsale.adoc#__unstable__TokenVault-transfer-contract-IERC20-address-uint256-[`__unstable__TokenVault.transfer`]]
:xref-__unstable__TokenVault-transfer: xref:crowdsale.adoc#__unstable__TokenVault-transfer-contract-IERC20-address-uint256-
:RefundableCrowdsale: pass:normal[xref:crowdsale.adoc#RefundableCrowdsale[`RefundableCrowdsale`]]
:xref-RefundableCrowdsale: xref:crowdsale.adoc#RefundableCrowdsale
:RefundableCrowdsale-constructor: pass:normal[xref:crowdsale.adoc#RefundableCrowdsale-constructor-uint256-[`RefundableCrowdsale.constructor`]]
:xref-RefundableCrowdsale-constructor: xref:crowdsale.adoc#RefundableCrowdsale-constructor-uint256-
:RefundableCrowdsale-goal: pass:normal[xref:crowdsale.adoc#RefundableCrowdsale-goal--[`RefundableCrowdsale.goal`]]
:xref-RefundableCrowdsale-goal: xref:crowdsale.adoc#RefundableCrowdsale-goal--
:RefundableCrowdsale-claimRefund: pass:normal[xref:crowdsale.adoc#RefundableCrowdsale-claimRefund-address-payable-[`RefundableCrowdsale.claimRefund`]]
:xref-RefundableCrowdsale-claimRefund: xref:crowdsale.adoc#RefundableCrowdsale-claimRefund-address-payable-
:RefundableCrowdsale-goalReached: pass:normal[xref:crowdsale.adoc#RefundableCrowdsale-goalReached--[`RefundableCrowdsale.goalReached`]]
:xref-RefundableCrowdsale-goalReached: xref:crowdsale.adoc#RefundableCrowdsale-goalReached--
:RefundableCrowdsale-_finalization: pass:normal[xref:crowdsale.adoc#RefundableCrowdsale-_finalization--[`RefundableCrowdsale._finalization`]]
:xref-RefundableCrowdsale-_finalization: xref:crowdsale.adoc#RefundableCrowdsale-_finalization--
:RefundableCrowdsale-_forwardFunds: pass:normal[xref:crowdsale.adoc#RefundableCrowdsale-_forwardFunds--[`RefundableCrowdsale._forwardFunds`]]
:xref-RefundableCrowdsale-_forwardFunds: xref:crowdsale.adoc#RefundableCrowdsale-_forwardFunds--
:RefundablePostDeliveryCrowdsale: pass:normal[xref:crowdsale.adoc#RefundablePostDeliveryCrowdsale[`RefundablePostDeliveryCrowdsale`]]
:xref-RefundablePostDeliveryCrowdsale: xref:crowdsale.adoc#RefundablePostDeliveryCrowdsale
:RefundablePostDeliveryCrowdsale-withdrawTokens: pass:normal[xref:crowdsale.adoc#RefundablePostDeliveryCrowdsale-withdrawTokens-address-[`RefundablePostDeliveryCrowdsale.withdrawTokens`]]
:xref-RefundablePostDeliveryCrowdsale-withdrawTokens: xref:crowdsale.adoc#RefundablePostDeliveryCrowdsale-withdrawTokens-address-
:AllowanceCrowdsale: pass:normal[xref:crowdsale.adoc#AllowanceCrowdsale[`AllowanceCrowdsale`]]
:xref-AllowanceCrowdsale: xref:crowdsale.adoc#AllowanceCrowdsale
:AllowanceCrowdsale-constructor: pass:normal[xref:crowdsale.adoc#AllowanceCrowdsale-constructor-address-[`AllowanceCrowdsale.constructor`]]
:xref-AllowanceCrowdsale-constructor: xref:crowdsale.adoc#AllowanceCrowdsale-constructor-address-
:AllowanceCrowdsale-tokenWallet: pass:normal[xref:crowdsale.adoc#AllowanceCrowdsale-tokenWallet--[`AllowanceCrowdsale.tokenWallet`]]
:xref-AllowanceCrowdsale-tokenWallet: xref:crowdsale.adoc#AllowanceCrowdsale-tokenWallet--
:AllowanceCrowdsale-remainingTokens: pass:normal[xref:crowdsale.adoc#AllowanceCrowdsale-remainingTokens--[`AllowanceCrowdsale.remainingTokens`]]
:xref-AllowanceCrowdsale-remainingTokens: xref:crowdsale.adoc#AllowanceCrowdsale-remainingTokens--
:AllowanceCrowdsale-_deliverTokens: pass:normal[xref:crowdsale.adoc#AllowanceCrowdsale-_deliverTokens-address-uint256-[`AllowanceCrowdsale._deliverTokens`]]
:xref-AllowanceCrowdsale-_deliverTokens: xref:crowdsale.adoc#AllowanceCrowdsale-_deliverTokens-address-uint256-
:MintedCrowdsale: pass:normal[xref:crowdsale.adoc#MintedCrowdsale[`MintedCrowdsale`]]
:xref-MintedCrowdsale: xref:crowdsale.adoc#MintedCrowdsale
:MintedCrowdsale-_deliverTokens: pass:normal[xref:crowdsale.adoc#MintedCrowdsale-_deliverTokens-address-uint256-[`MintedCrowdsale._deliverTokens`]]
:xref-MintedCrowdsale-_deliverTokens: xref:crowdsale.adoc#MintedCrowdsale-_deliverTokens-address-uint256-
:IncreasingPriceCrowdsale: pass:normal[xref:crowdsale.adoc#IncreasingPriceCrowdsale[`IncreasingPriceCrowdsale`]]
:xref-IncreasingPriceCrowdsale: xref:crowdsale.adoc#IncreasingPriceCrowdsale
:IncreasingPriceCrowdsale-constructor: pass:normal[xref:crowdsale.adoc#IncreasingPriceCrowdsale-constructor-uint256-uint256-[`IncreasingPriceCrowdsale.constructor`]]
:xref-IncreasingPriceCrowdsale-constructor: xref:crowdsale.adoc#IncreasingPriceCrowdsale-constructor-uint256-uint256-
:IncreasingPriceCrowdsale-rate: pass:normal[xref:crowdsale.adoc#IncreasingPriceCrowdsale-rate--[`IncreasingPriceCrowdsale.rate`]]
:xref-IncreasingPriceCrowdsale-rate: xref:crowdsale.adoc#IncreasingPriceCrowdsale-rate--
:IncreasingPriceCrowdsale-initialRate: pass:normal[xref:crowdsale.adoc#IncreasingPriceCrowdsale-initialRate--[`IncreasingPriceCrowdsale.initialRate`]]
:xref-IncreasingPriceCrowdsale-initialRate: xref:crowdsale.adoc#IncreasingPriceCrowdsale-initialRate--
:IncreasingPriceCrowdsale-finalRate: pass:normal[xref:crowdsale.adoc#IncreasingPriceCrowdsale-finalRate--[`IncreasingPriceCrowdsale.finalRate`]]
:xref-IncreasingPriceCrowdsale-finalRate: xref:crowdsale.adoc#IncreasingPriceCrowdsale-finalRate--
:IncreasingPriceCrowdsale-getCurrentRate: pass:normal[xref:crowdsale.adoc#IncreasingPriceCrowdsale-getCurrentRate--[`IncreasingPriceCrowdsale.getCurrentRate`]]
:xref-IncreasingPriceCrowdsale-getCurrentRate: xref:crowdsale.adoc#IncreasingPriceCrowdsale-getCurrentRate--
:IncreasingPriceCrowdsale-_getTokenAmount: pass:normal[xref:crowdsale.adoc#IncreasingPriceCrowdsale-_getTokenAmount-uint256-[`IncreasingPriceCrowdsale._getTokenAmount`]]
:xref-IncreasingPriceCrowdsale-_getTokenAmount: xref:crowdsale.adoc#IncreasingPriceCrowdsale-_getTokenAmount-uint256-
:CappedCrowdsale: pass:normal[xref:crowdsale.adoc#CappedCrowdsale[`CappedCrowdsale`]]
:xref-CappedCrowdsale: xref:crowdsale.adoc#CappedCrowdsale
:CappedCrowdsale-constructor: pass:normal[xref:crowdsale.adoc#CappedCrowdsale-constructor-uint256-[`CappedCrowdsale.constructor`]]
:xref-CappedCrowdsale-constructor: xref:crowdsale.adoc#CappedCrowdsale-constructor-uint256-
:CappedCrowdsale-cap: pass:normal[xref:crowdsale.adoc#CappedCrowdsale-cap--[`CappedCrowdsale.cap`]]
:xref-CappedCrowdsale-cap: xref:crowdsale.adoc#CappedCrowdsale-cap--
:CappedCrowdsale-capReached: pass:normal[xref:crowdsale.adoc#CappedCrowdsale-capReached--[`CappedCrowdsale.capReached`]]
:xref-CappedCrowdsale-capReached: xref:crowdsale.adoc#CappedCrowdsale-capReached--
:CappedCrowdsale-_preValidatePurchase: pass:normal[xref:crowdsale.adoc#CappedCrowdsale-_preValidatePurchase-address-uint256-[`CappedCrowdsale._preValidatePurchase`]]
:xref-CappedCrowdsale-_preValidatePurchase: xref:crowdsale.adoc#CappedCrowdsale-_preValidatePurchase-address-uint256-
:IndividuallyCappedCrowdsale: pass:normal[xref:crowdsale.adoc#IndividuallyCappedCrowdsale[`IndividuallyCappedCrowdsale`]]
:xref-IndividuallyCappedCrowdsale: xref:crowdsale.adoc#IndividuallyCappedCrowdsale
:IndividuallyCappedCrowdsale-setCap: pass:normal[xref:crowdsale.adoc#IndividuallyCappedCrowdsale-setCap-address-uint256-[`IndividuallyCappedCrowdsale.setCap`]]
:xref-IndividuallyCappedCrowdsale-setCap: xref:crowdsale.adoc#IndividuallyCappedCrowdsale-setCap-address-uint256-
:IndividuallyCappedCrowdsale-getCap: pass:normal[xref:crowdsale.adoc#IndividuallyCappedCrowdsale-getCap-address-[`IndividuallyCappedCrowdsale.getCap`]]
:xref-IndividuallyCappedCrowdsale-getCap: xref:crowdsale.adoc#IndividuallyCappedCrowdsale-getCap-address-
:IndividuallyCappedCrowdsale-getContribution: pass:normal[xref:crowdsale.adoc#IndividuallyCappedCrowdsale-getContribution-address-[`IndividuallyCappedCrowdsale.getContribution`]]
:xref-IndividuallyCappedCrowdsale-getContribution: xref:crowdsale.adoc#IndividuallyCappedCrowdsale-getContribution-address-
:IndividuallyCappedCrowdsale-_preValidatePurchase: pass:normal[xref:crowdsale.adoc#IndividuallyCappedCrowdsale-_preValidatePurchase-address-uint256-[`IndividuallyCappedCrowdsale._preValidatePurchase`]]
:xref-IndividuallyCappedCrowdsale-_preValidatePurchase: xref:crowdsale.adoc#IndividuallyCappedCrowdsale-_preValidatePurchase-address-uint256-
:IndividuallyCappedCrowdsale-_updatePurchasingState: pass:normal[xref:crowdsale.adoc#IndividuallyCappedCrowdsale-_updatePurchasingState-address-uint256-[`IndividuallyCappedCrowdsale._updatePurchasingState`]]
:xref-IndividuallyCappedCrowdsale-_updatePurchasingState: xref:crowdsale.adoc#IndividuallyCappedCrowdsale-_updatePurchasingState-address-uint256-
:PausableCrowdsale: pass:normal[xref:crowdsale.adoc#PausableCrowdsale[`PausableCrowdsale`]]
:xref-PausableCrowdsale: xref:crowdsale.adoc#PausableCrowdsale
:PausableCrowdsale-_preValidatePurchase: pass:normal[xref:crowdsale.adoc#PausableCrowdsale-_preValidatePurchase-address-uint256-[`PausableCrowdsale._preValidatePurchase`]]
:xref-PausableCrowdsale-_preValidatePurchase: xref:crowdsale.adoc#PausableCrowdsale-_preValidatePurchase-address-uint256-
:TimedCrowdsale: pass:normal[xref:crowdsale.adoc#TimedCrowdsale[`TimedCrowdsale`]]
:xref-TimedCrowdsale: xref:crowdsale.adoc#TimedCrowdsale
:TimedCrowdsale-onlyWhileOpen: pass:normal[xref:crowdsale.adoc#TimedCrowdsale-onlyWhileOpen--[`TimedCrowdsale.onlyWhileOpen`]]
:xref-TimedCrowdsale-onlyWhileOpen: xref:crowdsale.adoc#TimedCrowdsale-onlyWhileOpen--
:TimedCrowdsale-constructor: pass:normal[xref:crowdsale.adoc#TimedCrowdsale-constructor-uint256-uint256-[`TimedCrowdsale.constructor`]]
:xref-TimedCrowdsale-constructor: xref:crowdsale.adoc#TimedCrowdsale-constructor-uint256-uint256-
:TimedCrowdsale-openingTime: pass:normal[xref:crowdsale.adoc#TimedCrowdsale-openingTime--[`TimedCrowdsale.openingTime`]]
:xref-TimedCrowdsale-openingTime: xref:crowdsale.adoc#TimedCrowdsale-openingTime--
:TimedCrowdsale-closingTime: pass:normal[xref:crowdsale.adoc#TimedCrowdsale-closingTime--[`TimedCrowdsale.closingTime`]]
:xref-TimedCrowdsale-closingTime: xref:crowdsale.adoc#TimedCrowdsale-closingTime--
:TimedCrowdsale-isOpen: pass:normal[xref:crowdsale.adoc#TimedCrowdsale-isOpen--[`TimedCrowdsale.isOpen`]]
:xref-TimedCrowdsale-isOpen: xref:crowdsale.adoc#TimedCrowdsale-isOpen--
:TimedCrowdsale-hasClosed: pass:normal[xref:crowdsale.adoc#TimedCrowdsale-hasClosed--[`TimedCrowdsale.hasClosed`]]
:xref-TimedCrowdsale-hasClosed: xref:crowdsale.adoc#TimedCrowdsale-hasClosed--
:TimedCrowdsale-_preValidatePurchase: pass:normal[xref:crowdsale.adoc#TimedCrowdsale-_preValidatePurchase-address-uint256-[`TimedCrowdsale._preValidatePurchase`]]
:xref-TimedCrowdsale-_preValidatePurchase: xref:crowdsale.adoc#TimedCrowdsale-_preValidatePurchase-address-uint256-
:TimedCrowdsale-_extendTime: pass:normal[xref:crowdsale.adoc#TimedCrowdsale-_extendTime-uint256-[`TimedCrowdsale._extendTime`]]
:xref-TimedCrowdsale-_extendTime: xref:crowdsale.adoc#TimedCrowdsale-_extendTime-uint256-
:TimedCrowdsale-TimedCrowdsaleExtended: pass:normal[xref:crowdsale.adoc#TimedCrowdsale-TimedCrowdsaleExtended-uint256-uint256-[`TimedCrowdsale.TimedCrowdsaleExtended`]]
:xref-TimedCrowdsale-TimedCrowdsaleExtended: xref:crowdsale.adoc#TimedCrowdsale-TimedCrowdsaleExtended-uint256-uint256-
:WhitelistCrowdsale: pass:normal[xref:crowdsale.adoc#WhitelistCrowdsale[`WhitelistCrowdsale`]]
:xref-WhitelistCrowdsale: xref:crowdsale.adoc#WhitelistCrowdsale
:WhitelistCrowdsale-_preValidatePurchase: pass:normal[xref:crowdsale.adoc#WhitelistCrowdsale-_preValidatePurchase-address-uint256-[`WhitelistCrowdsale._preValidatePurchase`]]
:xref-WhitelistCrowdsale-_preValidatePurchase: xref:crowdsale.adoc#WhitelistCrowdsale-_preValidatePurchase-address-uint256-
:Counters: pass:normal[xref:drafts.adoc#Counters[`Counters`]]
:xref-Counters: xref:drafts.adoc#Counters
:Counters-current: pass:normal[xref:drafts.adoc#Counters-current-struct-Counters-Counter-[`Counters.current`]]
:xref-Counters-current: xref:drafts.adoc#Counters-current-struct-Counters-Counter-
:Counters-increment: pass:normal[xref:drafts.adoc#Counters-increment-struct-Counters-Counter-[`Counters.increment`]]
:xref-Counters-increment: xref:drafts.adoc#Counters-increment-struct-Counters-Counter-
:Counters-decrement: pass:normal[xref:drafts.adoc#Counters-decrement-struct-Counters-Counter-[`Counters.decrement`]]
:xref-Counters-decrement: xref:drafts.adoc#Counters-decrement-struct-Counters-Counter-
:ERC20Metadata: pass:normal[xref:drafts.adoc#ERC20Metadata[`ERC20Metadata`]]
:xref-ERC20Metadata: xref:drafts.adoc#ERC20Metadata
:ERC20Metadata-constructor: pass:normal[xref:drafts.adoc#ERC20Metadata-constructor-string-[`ERC20Metadata.constructor`]]
:xref-ERC20Metadata-constructor: xref:drafts.adoc#ERC20Metadata-constructor-string-
:ERC20Metadata-tokenURI: pass:normal[xref:drafts.adoc#ERC20Metadata-tokenURI--[`ERC20Metadata.tokenURI`]]
:xref-ERC20Metadata-tokenURI: xref:drafts.adoc#ERC20Metadata-tokenURI--
:ERC20Metadata-_setTokenURI: pass:normal[xref:drafts.adoc#ERC20Metadata-_setTokenURI-string-[`ERC20Metadata._setTokenURI`]]
:xref-ERC20Metadata-_setTokenURI: xref:drafts.adoc#ERC20Metadata-_setTokenURI-string-
:ERC20Migrator: pass:normal[xref:drafts.adoc#ERC20Migrator[`ERC20Migrator`]]
:xref-ERC20Migrator: xref:drafts.adoc#ERC20Migrator
:ERC20Migrator-constructor: pass:normal[xref:drafts.adoc#ERC20Migrator-constructor-contract-IERC20-[`ERC20Migrator.constructor`]]
:xref-ERC20Migrator-constructor: xref:drafts.adoc#ERC20Migrator-constructor-contract-IERC20-
:ERC20Migrator-legacyToken: pass:normal[xref:drafts.adoc#ERC20Migrator-legacyToken--[`ERC20Migrator.legacyToken`]]
:xref-ERC20Migrator-legacyToken: xref:drafts.adoc#ERC20Migrator-legacyToken--
:ERC20Migrator-newToken: pass:normal[xref:drafts.adoc#ERC20Migrator-newToken--[`ERC20Migrator.newToken`]]
:xref-ERC20Migrator-newToken: xref:drafts.adoc#ERC20Migrator-newToken--
:ERC20Migrator-beginMigration: pass:normal[xref:drafts.adoc#ERC20Migrator-beginMigration-contract-ERC20Mintable-[`ERC20Migrator.beginMigration`]]
:xref-ERC20Migrator-beginMigration: xref:drafts.adoc#ERC20Migrator-beginMigration-contract-ERC20Mintable-
:ERC20Migrator-migrate: pass:normal[xref:drafts.adoc#ERC20Migrator-migrate-address-uint256-[`ERC20Migrator.migrate`]]
:xref-ERC20Migrator-migrate: xref:drafts.adoc#ERC20Migrator-migrate-address-uint256-
:ERC20Migrator-migrateAll: pass:normal[xref:drafts.adoc#ERC20Migrator-migrateAll-address-[`ERC20Migrator.migrateAll`]]
:xref-ERC20Migrator-migrateAll: xref:drafts.adoc#ERC20Migrator-migrateAll-address-
:ERC20Snapshot: pass:normal[xref:drafts.adoc#ERC20Snapshot[`ERC20Snapshot`]]
:xref-ERC20Snapshot: xref:drafts.adoc#ERC20Snapshot
:ERC20Snapshot-snapshot: pass:normal[xref:drafts.adoc#ERC20Snapshot-snapshot--[`ERC20Snapshot.snapshot`]]
:xref-ERC20Snapshot-snapshot: xref:drafts.adoc#ERC20Snapshot-snapshot--
:ERC20Snapshot-balanceOfAt: pass:normal[xref:drafts.adoc#ERC20Snapshot-balanceOfAt-address-uint256-[`ERC20Snapshot.balanceOfAt`]]
:xref-ERC20Snapshot-balanceOfAt: xref:drafts.adoc#ERC20Snapshot-balanceOfAt-address-uint256-
:ERC20Snapshot-totalSupplyAt: pass:normal[xref:drafts.adoc#ERC20Snapshot-totalSupplyAt-uint256-[`ERC20Snapshot.totalSupplyAt`]]
:xref-ERC20Snapshot-totalSupplyAt: xref:drafts.adoc#ERC20Snapshot-totalSupplyAt-uint256-
:ERC20Snapshot-_transfer: pass:normal[xref:drafts.adoc#ERC20Snapshot-_transfer-address-address-uint256-[`ERC20Snapshot._transfer`]]
:xref-ERC20Snapshot-_transfer: xref:drafts.adoc#ERC20Snapshot-_transfer-address-address-uint256-
:ERC20Snapshot-_mint: pass:normal[xref:drafts.adoc#ERC20Snapshot-_mint-address-uint256-[`ERC20Snapshot._mint`]]
:xref-ERC20Snapshot-_mint: xref:drafts.adoc#ERC20Snapshot-_mint-address-uint256-
:ERC20Snapshot-_burn: pass:normal[xref:drafts.adoc#ERC20Snapshot-_burn-address-uint256-[`ERC20Snapshot._burn`]]
:xref-ERC20Snapshot-_burn: xref:drafts.adoc#ERC20Snapshot-_burn-address-uint256-
:ERC20Snapshot-Snapshot: pass:normal[xref:drafts.adoc#ERC20Snapshot-Snapshot-uint256-[`ERC20Snapshot.Snapshot`]]
:xref-ERC20Snapshot-Snapshot: xref:drafts.adoc#ERC20Snapshot-Snapshot-uint256-
:SignedSafeMath: pass:normal[xref:drafts.adoc#SignedSafeMath[`SignedSafeMath`]]
:xref-SignedSafeMath: xref:drafts.adoc#SignedSafeMath
:SignedSafeMath-mul: pass:normal[xref:drafts.adoc#SignedSafeMath-mul-int256-int256-[`SignedSafeMath.mul`]]
:xref-SignedSafeMath-mul: xref:drafts.adoc#SignedSafeMath-mul-int256-int256-
:SignedSafeMath-div: pass:normal[xref:drafts.adoc#SignedSafeMath-div-int256-int256-[`SignedSafeMath.div`]]
:xref-SignedSafeMath-div: xref:drafts.adoc#SignedSafeMath-div-int256-int256-
:SignedSafeMath-sub: pass:normal[xref:drafts.adoc#SignedSafeMath-sub-int256-int256-[`SignedSafeMath.sub`]]
:xref-SignedSafeMath-sub: xref:drafts.adoc#SignedSafeMath-sub-int256-int256-
:SignedSafeMath-add: pass:normal[xref:drafts.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]]
:xref-SignedSafeMath-add: xref:drafts.adoc#SignedSafeMath-add-int256-int256-
:Strings: pass:normal[xref:drafts.adoc#Strings[`Strings`]]
:xref-Strings: xref:drafts.adoc#Strings
:Strings-fromUint256: pass:normal[xref:drafts.adoc#Strings-fromUint256-uint256-[`Strings.fromUint256`]]
:xref-Strings-fromUint256: xref:drafts.adoc#Strings-fromUint256-uint256-
:TokenVesting: pass:normal[xref:drafts.adoc#TokenVesting[`TokenVesting`]]
:xref-TokenVesting: xref:drafts.adoc#TokenVesting
:TokenVesting-constructor: pass:normal[xref:drafts.adoc#TokenVesting-constructor-address-uint256-uint256-uint256-bool-[`TokenVesting.constructor`]]
:xref-TokenVesting-constructor: xref:drafts.adoc#TokenVesting-constructor-address-uint256-uint256-uint256-bool-
:TokenVesting-beneficiary: pass:normal[xref:drafts.adoc#TokenVesting-beneficiary--[`TokenVesting.beneficiary`]]
:xref-TokenVesting-beneficiary: xref:drafts.adoc#TokenVesting-beneficiary--
:TokenVesting-cliff: pass:normal[xref:drafts.adoc#TokenVesting-cliff--[`TokenVesting.cliff`]]
:xref-TokenVesting-cliff: xref:drafts.adoc#TokenVesting-cliff--
:TokenVesting-start: pass:normal[xref:drafts.adoc#TokenVesting-start--[`TokenVesting.start`]]
:xref-TokenVesting-start: xref:drafts.adoc#TokenVesting-start--
:TokenVesting-duration: pass:normal[xref:drafts.adoc#TokenVesting-duration--[`TokenVesting.duration`]]
:xref-TokenVesting-duration: xref:drafts.adoc#TokenVesting-duration--
:TokenVesting-revocable: pass:normal[xref:drafts.adoc#TokenVesting-revocable--[`TokenVesting.revocable`]]
:xref-TokenVesting-revocable: xref:drafts.adoc#TokenVesting-revocable--
:TokenVesting-released: pass:normal[xref:drafts.adoc#TokenVesting-released-address-[`TokenVesting.released`]]
:xref-TokenVesting-released: xref:drafts.adoc#TokenVesting-released-address-
:TokenVesting-revoked: pass:normal[xref:drafts.adoc#TokenVesting-revoked-address-[`TokenVesting.revoked`]]
:xref-TokenVesting-revoked: xref:drafts.adoc#TokenVesting-revoked-address-
:TokenVesting-release: pass:normal[xref:drafts.adoc#TokenVesting-release-contract-IERC20-[`TokenVesting.release`]]
:xref-TokenVesting-release: xref:drafts.adoc#TokenVesting-release-contract-IERC20-
:TokenVesting-revoke: pass:normal[xref:drafts.adoc#TokenVesting-revoke-contract-IERC20-[`TokenVesting.revoke`]]
:xref-TokenVesting-revoke: xref:drafts.adoc#TokenVesting-revoke-contract-IERC20-
:TokenVesting-TokensReleased: pass:normal[xref:drafts.adoc#TokenVesting-TokensReleased-address-uint256-[`TokenVesting.TokensReleased`]]
:xref-TokenVesting-TokensReleased: xref:drafts.adoc#TokenVesting-TokensReleased-address-uint256-
:TokenVesting-TokenVestingRevoked: pass:normal[xref:drafts.adoc#TokenVesting-TokenVestingRevoked-address-[`TokenVesting.TokenVestingRevoked`]]
:xref-TokenVesting-TokenVestingRevoked: xref:drafts.adoc#TokenVesting-TokenVestingRevoked-address-
:Roles: pass:normal[xref:access.adoc#Roles[`Roles`]]
:xref-Roles: xref:access.adoc#Roles
:Roles-add: pass:normal[xref:access.adoc#Roles-add-struct-Roles-Role-address-[`Roles.add`]]
:xref-Roles-add: xref:access.adoc#Roles-add-struct-Roles-Role-address-
:Roles-remove: pass:normal[xref:access.adoc#Roles-remove-struct-Roles-Role-address-[`Roles.remove`]]
:xref-Roles-remove: xref:access.adoc#Roles-remove-struct-Roles-Role-address-
:Roles-has: pass:normal[xref:access.adoc#Roles-has-struct-Roles-Role-address-[`Roles.has`]]
:xref-Roles-has: xref:access.adoc#Roles-has-struct-Roles-Role-address-
:CapperRole: pass:normal[xref:access.adoc#CapperRole[`CapperRole`]]
:xref-CapperRole: xref:access.adoc#CapperRole
:CapperRole-onlyCapper: pass:normal[xref:access.adoc#CapperRole-onlyCapper--[`CapperRole.onlyCapper`]]
:xref-CapperRole-onlyCapper: xref:access.adoc#CapperRole-onlyCapper--
:CapperRole-constructor: pass:normal[xref:access.adoc#CapperRole-constructor--[`CapperRole.constructor`]]
:xref-CapperRole-constructor: xref:access.adoc#CapperRole-constructor--
:CapperRole-isCapper: pass:normal[xref:access.adoc#CapperRole-isCapper-address-[`CapperRole.isCapper`]]
:xref-CapperRole-isCapper: xref:access.adoc#CapperRole-isCapper-address-
:CapperRole-addCapper: pass:normal[xref:access.adoc#CapperRole-addCapper-address-[`CapperRole.addCapper`]]
:xref-CapperRole-addCapper: xref:access.adoc#CapperRole-addCapper-address-
:CapperRole-renounceCapper: pass:normal[xref:access.adoc#CapperRole-renounceCapper--[`CapperRole.renounceCapper`]]
:xref-CapperRole-renounceCapper: xref:access.adoc#CapperRole-renounceCapper--
:CapperRole-_addCapper: pass:normal[xref:access.adoc#CapperRole-_addCapper-address-[`CapperRole._addCapper`]]
:xref-CapperRole-_addCapper: xref:access.adoc#CapperRole-_addCapper-address-
:CapperRole-_removeCapper: pass:normal[xref:access.adoc#CapperRole-_removeCapper-address-[`CapperRole._removeCapper`]]
:xref-CapperRole-_removeCapper: xref:access.adoc#CapperRole-_removeCapper-address-
:CapperRole-CapperAdded: pass:normal[xref:access.adoc#CapperRole-CapperAdded-address-[`CapperRole.CapperAdded`]]
:xref-CapperRole-CapperAdded: xref:access.adoc#CapperRole-CapperAdded-address-
:CapperRole-CapperRemoved: pass:normal[xref:access.adoc#CapperRole-CapperRemoved-address-[`CapperRole.CapperRemoved`]]
:xref-CapperRole-CapperRemoved: xref:access.adoc#CapperRole-CapperRemoved-address-
:MinterRole: pass:normal[xref:access.adoc#MinterRole[`MinterRole`]]
:xref-MinterRole: xref:access.adoc#MinterRole
:MinterRole-onlyMinter: pass:normal[xref:access.adoc#MinterRole-onlyMinter--[`MinterRole.onlyMinter`]]
:xref-MinterRole-onlyMinter: xref:access.adoc#MinterRole-onlyMinter--
:MinterRole-constructor: pass:normal[xref:access.adoc#MinterRole-constructor--[`MinterRole.constructor`]]
:xref-MinterRole-constructor: xref:access.adoc#MinterRole-constructor--
:MinterRole-isMinter: pass:normal[xref:access.adoc#MinterRole-isMinter-address-[`MinterRole.isMinter`]]
:xref-MinterRole-isMinter: xref:access.adoc#MinterRole-isMinter-address-
:MinterRole-addMinter: pass:normal[xref:access.adoc#MinterRole-addMinter-address-[`MinterRole.addMinter`]]
:xref-MinterRole-addMinter: xref:access.adoc#MinterRole-addMinter-address-
:MinterRole-renounceMinter: pass:normal[xref:access.adoc#MinterRole-renounceMinter--[`MinterRole.renounceMinter`]]
:xref-MinterRole-renounceMinter: xref:access.adoc#MinterRole-renounceMinter--
:MinterRole-_addMinter: pass:normal[xref:access.adoc#MinterRole-_addMinter-address-[`MinterRole._addMinter`]]
:xref-MinterRole-_addMinter: xref:access.adoc#MinterRole-_addMinter-address-
:MinterRole-_removeMinter: pass:normal[xref:access.adoc#MinterRole-_removeMinter-address-[`MinterRole._removeMinter`]]
:xref-MinterRole-_removeMinter: xref:access.adoc#MinterRole-_removeMinter-address-
:MinterRole-MinterAdded: pass:normal[xref:access.adoc#MinterRole-MinterAdded-address-[`MinterRole.MinterAdded`]]
:xref-MinterRole-MinterAdded: xref:access.adoc#MinterRole-MinterAdded-address-
:MinterRole-MinterRemoved: pass:normal[xref:access.adoc#MinterRole-MinterRemoved-address-[`MinterRole.MinterRemoved`]]
:xref-MinterRole-MinterRemoved: xref:access.adoc#MinterRole-MinterRemoved-address-
:PauserRole: pass:normal[xref:access.adoc#PauserRole[`PauserRole`]]
:xref-PauserRole: xref:access.adoc#PauserRole
:PauserRole-onlyPauser: pass:normal[xref:access.adoc#PauserRole-onlyPauser--[`PauserRole.onlyPauser`]]
:xref-PauserRole-onlyPauser: xref:access.adoc#PauserRole-onlyPauser--
:PauserRole-constructor: pass:normal[xref:access.adoc#PauserRole-constructor--[`PauserRole.constructor`]]
:xref-PauserRole-constructor: xref:access.adoc#PauserRole-constructor--
:PauserRole-isPauser: pass:normal[xref:access.adoc#PauserRole-isPauser-address-[`PauserRole.isPauser`]]
:xref-PauserRole-isPauser: xref:access.adoc#PauserRole-isPauser-address-
:PauserRole-addPauser: pass:normal[xref:access.adoc#PauserRole-addPauser-address-[`PauserRole.addPauser`]]
:xref-PauserRole-addPauser: xref:access.adoc#PauserRole-addPauser-address-
:PauserRole-renouncePauser: pass:normal[xref:access.adoc#PauserRole-renouncePauser--[`PauserRole.renouncePauser`]]
:xref-PauserRole-renouncePauser: xref:access.adoc#PauserRole-renouncePauser--
:PauserRole-_addPauser: pass:normal[xref:access.adoc#PauserRole-_addPauser-address-[`PauserRole._addPauser`]]
:xref-PauserRole-_addPauser: xref:access.adoc#PauserRole-_addPauser-address-
:PauserRole-_removePauser: pass:normal[xref:access.adoc#PauserRole-_removePauser-address-[`PauserRole._removePauser`]]
:xref-PauserRole-_removePauser: xref:access.adoc#PauserRole-_removePauser-address-
:PauserRole-PauserAdded: pass:normal[xref:access.adoc#PauserRole-PauserAdded-address-[`PauserRole.PauserAdded`]]
:xref-PauserRole-PauserAdded: xref:access.adoc#PauserRole-PauserAdded-address-
:PauserRole-PauserRemoved: pass:normal[xref:access.adoc#PauserRole-PauserRemoved-address-[`PauserRole.PauserRemoved`]]
:xref-PauserRole-PauserRemoved: xref:access.adoc#PauserRole-PauserRemoved-address-
:SignerRole: pass:normal[xref:access.adoc#SignerRole[`SignerRole`]]
:xref-SignerRole: xref:access.adoc#SignerRole
:SignerRole-onlySigner: pass:normal[xref:access.adoc#SignerRole-onlySigner--[`SignerRole.onlySigner`]]
:xref-SignerRole-onlySigner: xref:access.adoc#SignerRole-onlySigner--
:SignerRole-constructor: pass:normal[xref:access.adoc#SignerRole-constructor--[`SignerRole.constructor`]]
:xref-SignerRole-constructor: xref:access.adoc#SignerRole-constructor--
:SignerRole-isSigner: pass:normal[xref:access.adoc#SignerRole-isSigner-address-[`SignerRole.isSigner`]]
:xref-SignerRole-isSigner: xref:access.adoc#SignerRole-isSigner-address-
:SignerRole-addSigner: pass:normal[xref:access.adoc#SignerRole-addSigner-address-[`SignerRole.addSigner`]]
:xref-SignerRole-addSigner: xref:access.adoc#SignerRole-addSigner-address-
:SignerRole-renounceSigner: pass:normal[xref:access.adoc#SignerRole-renounceSigner--[`SignerRole.renounceSigner`]]
:xref-SignerRole-renounceSigner: xref:access.adoc#SignerRole-renounceSigner--
:SignerRole-_addSigner: pass:normal[xref:access.adoc#SignerRole-_addSigner-address-[`SignerRole._addSigner`]]
:xref-SignerRole-_addSigner: xref:access.adoc#SignerRole-_addSigner-address-
:SignerRole-_removeSigner: pass:normal[xref:access.adoc#SignerRole-_removeSigner-address-[`SignerRole._removeSigner`]]
:xref-SignerRole-_removeSigner: xref:access.adoc#SignerRole-_removeSigner-address-
:SignerRole-SignerAdded: pass:normal[xref:access.adoc#SignerRole-SignerAdded-address-[`SignerRole.SignerAdded`]]
:xref-SignerRole-SignerAdded: xref:access.adoc#SignerRole-SignerAdded-address-
:SignerRole-SignerRemoved: pass:normal[xref:access.adoc#SignerRole-SignerRemoved-address-[`SignerRole.SignerRemoved`]]
:xref-SignerRole-SignerRemoved: xref:access.adoc#SignerRole-SignerRemoved-address-
:WhitelistAdminRole: pass:normal[xref:access.adoc#WhitelistAdminRole[`WhitelistAdminRole`]]
:xref-WhitelistAdminRole: xref:access.adoc#WhitelistAdminRole
:WhitelistAdminRole-onlyWhitelistAdmin: pass:normal[xref:access.adoc#WhitelistAdminRole-onlyWhitelistAdmin--[`WhitelistAdminRole.onlyWhitelistAdmin`]]
:xref-WhitelistAdminRole-onlyWhitelistAdmin: xref:access.adoc#WhitelistAdminRole-onlyWhitelistAdmin--
:WhitelistAdminRole-constructor: pass:normal[xref:access.adoc#WhitelistAdminRole-constructor--[`WhitelistAdminRole.constructor`]]
:xref-WhitelistAdminRole-constructor: xref:access.adoc#WhitelistAdminRole-constructor--
:WhitelistAdminRole-isWhitelistAdmin: pass:normal[xref:access.adoc#WhitelistAdminRole-isWhitelistAdmin-address-[`WhitelistAdminRole.isWhitelistAdmin`]]
:xref-WhitelistAdminRole-isWhitelistAdmin: xref:access.adoc#WhitelistAdminRole-isWhitelistAdmin-address-
:WhitelistAdminRole-addWhitelistAdmin: pass:normal[xref:access.adoc#WhitelistAdminRole-addWhitelistAdmin-address-[`WhitelistAdminRole.addWhitelistAdmin`]]
:xref-WhitelistAdminRole-addWhitelistAdmin: xref:access.adoc#WhitelistAdminRole-addWhitelistAdmin-address-
:WhitelistAdminRole-renounceWhitelistAdmin: pass:normal[xref:access.adoc#WhitelistAdminRole-renounceWhitelistAdmin--[`WhitelistAdminRole.renounceWhitelistAdmin`]]
:xref-WhitelistAdminRole-renounceWhitelistAdmin: xref:access.adoc#WhitelistAdminRole-renounceWhitelistAdmin--
:WhitelistAdminRole-_addWhitelistAdmin: pass:normal[xref:access.adoc#WhitelistAdminRole-_addWhitelistAdmin-address-[`WhitelistAdminRole._addWhitelistAdmin`]]
:xref-WhitelistAdminRole-_addWhitelistAdmin: xref:access.adoc#WhitelistAdminRole-_addWhitelistAdmin-address-
:WhitelistAdminRole-_removeWhitelistAdmin: pass:normal[xref:access.adoc#WhitelistAdminRole-_removeWhitelistAdmin-address-[`WhitelistAdminRole._removeWhitelistAdmin`]]
:xref-WhitelistAdminRole-_removeWhitelistAdmin: xref:access.adoc#WhitelistAdminRole-_removeWhitelistAdmin-address-
:WhitelistAdminRole-WhitelistAdminAdded: pass:normal[xref:access.adoc#WhitelistAdminRole-WhitelistAdminAdded-address-[`WhitelistAdminRole.WhitelistAdminAdded`]]
:xref-WhitelistAdminRole-WhitelistAdminAdded: xref:access.adoc#WhitelistAdminRole-WhitelistAdminAdded-address-
:WhitelistAdminRole-WhitelistAdminRemoved: pass:normal[xref:access.adoc#WhitelistAdminRole-WhitelistAdminRemoved-address-[`WhitelistAdminRole.WhitelistAdminRemoved`]]
:xref-WhitelistAdminRole-WhitelistAdminRemoved: xref:access.adoc#WhitelistAdminRole-WhitelistAdminRemoved-address-
:WhitelistedRole: pass:normal[xref:access.adoc#WhitelistedRole[`WhitelistedRole`]]
:xref-WhitelistedRole: xref:access.adoc#WhitelistedRole
:WhitelistedRole-onlyWhitelisted: pass:normal[xref:access.adoc#WhitelistedRole-onlyWhitelisted--[`WhitelistedRole.onlyWhitelisted`]]
:xref-WhitelistedRole-onlyWhitelisted: xref:access.adoc#WhitelistedRole-onlyWhitelisted--
:WhitelistedRole-isWhitelisted: pass:normal[xref:access.adoc#WhitelistedRole-isWhitelisted-address-[`WhitelistedRole.isWhitelisted`]]
:xref-WhitelistedRole-isWhitelisted: xref:access.adoc#WhitelistedRole-isWhitelisted-address-
:WhitelistedRole-addWhitelisted: pass:normal[xref:access.adoc#WhitelistedRole-addWhitelisted-address-[`WhitelistedRole.addWhitelisted`]]
:xref-WhitelistedRole-addWhitelisted: xref:access.adoc#WhitelistedRole-addWhitelisted-address-
:WhitelistedRole-removeWhitelisted: pass:normal[xref:access.adoc#WhitelistedRole-removeWhitelisted-address-[`WhitelistedRole.removeWhitelisted`]]
:xref-WhitelistedRole-removeWhitelisted: xref:access.adoc#WhitelistedRole-removeWhitelisted-address-
:WhitelistedRole-renounceWhitelisted: pass:normal[xref:access.adoc#WhitelistedRole-renounceWhitelisted--[`WhitelistedRole.renounceWhitelisted`]]
:xref-WhitelistedRole-renounceWhitelisted: xref:access.adoc#WhitelistedRole-renounceWhitelisted--
:WhitelistedRole-_addWhitelisted: pass:normal[xref:access.adoc#WhitelistedRole-_addWhitelisted-address-[`WhitelistedRole._addWhitelisted`]]
:xref-WhitelistedRole-_addWhitelisted: xref:access.adoc#WhitelistedRole-_addWhitelisted-address-
:WhitelistedRole-_removeWhitelisted: pass:normal[xref:access.adoc#WhitelistedRole-_removeWhitelisted-address-[`WhitelistedRole._removeWhitelisted`]]
:xref-WhitelistedRole-_removeWhitelisted: xref:access.adoc#WhitelistedRole-_removeWhitelisted-address-
:WhitelistedRole-WhitelistedAdded: pass:normal[xref:access.adoc#WhitelistedRole-WhitelistedAdded-address-[`WhitelistedRole.WhitelistedAdded`]]
:xref-WhitelistedRole-WhitelistedAdded: xref:access.adoc#WhitelistedRole-WhitelistedAdded-address-
:WhitelistedRole-WhitelistedRemoved: pass:normal[xref:access.adoc#WhitelistedRole-WhitelistedRemoved-address-[`WhitelistedRole.WhitelistedRemoved`]]
:xref-WhitelistedRole-WhitelistedRemoved: xref:access.adoc#WhitelistedRole-WhitelistedRemoved-address-
:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
:xref-ECDSA: xref:cryptography.adoc#ECDSA
:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
:xref-ECDSA-recover: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
:xref-ECDSA-toEthSignedMessageHash: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
:xref-MerkleProof-verify: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
:xref-ERC165: xref:introspection.adoc#ERC165
:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
:xref-ERC165-constructor: xref:introspection.adoc#ERC165-constructor--
:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
:xref-ERC165-supportsInterface: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
:xref-ERC165-_registerInterface: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
:ERC165Checker-_supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-_supportsERC165-address-[`ERC165Checker._supportsERC165`]]
:xref-ERC165Checker-_supportsERC165: xref:introspection.adoc#ERC165Checker-_supportsERC165-address-
:ERC165Checker-_supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-_supportsInterface-address-bytes4-[`ERC165Checker._supportsInterface`]]
:xref-ERC165Checker-_supportsInterface: xref:introspection.adoc#ERC165Checker-_supportsInterface-address-bytes4-
:ERC165Checker-_supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-_supportsAllInterfaces-address-bytes4---[`ERC165Checker._supportsAllInterfaces`]]
:xref-ERC165Checker-_supportsAllInterfaces: xref:introspection.adoc#ERC165Checker-_supportsAllInterfaces-address-bytes4---
:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
:xref-ERC1820Implementer-canImplementInterfaceForAddress: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
:xref-ERC1820Implementer-_registerInterfaceForAddress: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
:xref-IERC165: xref:introspection.adoc#IERC165
:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
:xref-IERC165-supportsInterface: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
:xref-IERC1820Implementer-canImplementInterfaceForAddress: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
:xref-IERC1820Registry-setManager: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
:xref-IERC1820Registry-getManager: xref:introspection.adoc#IERC1820Registry-getManager-address-
:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
:xref-IERC1820Registry-setInterfaceImplementer: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
:xref-IERC1820Registry-getInterfaceImplementer: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
:xref-IERC1820Registry-interfaceHash: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
:xref-IERC1820Registry-updateERC165Cache: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
:xref-IERC1820Registry-implementsERC165Interface: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
:xref-IERC1820Registry-implementsERC165InterfaceNoCache: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
:xref-IERC1820Registry-InterfaceImplementerSet: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
:xref-IERC1820Registry-ManagerChanged: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
:Pausable: pass:normal[xref:lifecycle.adoc#Pausable[`Pausable`]]
:xref-Pausable: xref:lifecycle.adoc#Pausable
:Pausable-whenNotPaused: pass:normal[xref:lifecycle.adoc#Pausable-whenNotPaused--[`Pausable.whenNotPaused`]]
:xref-Pausable-whenNotPaused: xref:lifecycle.adoc#Pausable-whenNotPaused--
:Pausable-whenPaused: pass:normal[xref:lifecycle.adoc#Pausable-whenPaused--[`Pausable.whenPaused`]]
:xref-Pausable-whenPaused: xref:lifecycle.adoc#Pausable-whenPaused--
:Pausable-constructor: pass:normal[xref:lifecycle.adoc#Pausable-constructor--[`Pausable.constructor`]]
:xref-Pausable-constructor: xref:lifecycle.adoc#Pausable-constructor--
:Pausable-paused: pass:normal[xref:lifecycle.adoc#Pausable-paused--[`Pausable.paused`]]
:xref-Pausable-paused: xref:lifecycle.adoc#Pausable-paused--
:Pausable-pause: pass:normal[xref:lifecycle.adoc#Pausable-pause--[`Pausable.pause`]]
:xref-Pausable-pause: xref:lifecycle.adoc#Pausable-pause--
:Pausable-unpause: pass:normal[xref:lifecycle.adoc#Pausable-unpause--[`Pausable.unpause`]]
:xref-Pausable-unpause: xref:lifecycle.adoc#Pausable-unpause--
:Pausable-Paused: pass:normal[xref:lifecycle.adoc#Pausable-Paused-address-[`Pausable.Paused`]]
:xref-Pausable-Paused: xref:lifecycle.adoc#Pausable-Paused-address-
:Pausable-Unpaused: pass:normal[xref:lifecycle.adoc#Pausable-Unpaused-address-[`Pausable.Unpaused`]]
:xref-Pausable-Unpaused: xref:lifecycle.adoc#Pausable-Unpaused-address-
:Ownable: pass:normal[xref:ownership.adoc#Ownable[`Ownable`]]
:xref-Ownable: xref:ownership.adoc#Ownable
:Ownable-onlyOwner: pass:normal[xref:ownership.adoc#Ownable-onlyOwner--[`Ownable.onlyOwner`]]
:xref-Ownable-onlyOwner: xref:ownership.adoc#Ownable-onlyOwner--
:Ownable-constructor: pass:normal[xref:ownership.adoc#Ownable-constructor--[`Ownable.constructor`]]
:xref-Ownable-constructor: xref:ownership.adoc#Ownable-constructor--
:Ownable-owner: pass:normal[xref:ownership.adoc#Ownable-owner--[`Ownable.owner`]]
:xref-Ownable-owner: xref:ownership.adoc#Ownable-owner--
:Ownable-isOwner: pass:normal[xref:ownership.adoc#Ownable-isOwner--[`Ownable.isOwner`]]
:xref-Ownable-isOwner: xref:ownership.adoc#Ownable-isOwner--
:Ownable-renounceOwnership: pass:normal[xref:ownership.adoc#Ownable-renounceOwnership--[`Ownable.renounceOwnership`]]
:xref-Ownable-renounceOwnership: xref:ownership.adoc#Ownable-renounceOwnership--
:Ownable-transferOwnership: pass:normal[xref:ownership.adoc#Ownable-transferOwnership-address-[`Ownable.transferOwnership`]]
:xref-Ownable-transferOwnership: xref:ownership.adoc#Ownable-transferOwnership-address-
:Ownable-_transferOwnership: pass:normal[xref:ownership.adoc#Ownable-_transferOwnership-address-[`Ownable._transferOwnership`]]
:xref-Ownable-_transferOwnership: xref:ownership.adoc#Ownable-_transferOwnership-address-
:Ownable-OwnershipTransferred: pass:normal[xref:ownership.adoc#Ownable-OwnershipTransferred-address-address-[`Ownable.OwnershipTransferred`]]
:xref-Ownable-OwnershipTransferred: xref:ownership.adoc#Ownable-OwnershipTransferred-address-address-
:Secondary: pass:normal[xref:ownership.adoc#Secondary[`Secondary`]]
:xref-Secondary: xref:ownership.adoc#Secondary
:Secondary-onlyPrimary: pass:normal[xref:ownership.adoc#Secondary-onlyPrimary--[`Secondary.onlyPrimary`]]
:xref-Secondary-onlyPrimary: xref:ownership.adoc#Secondary-onlyPrimary--
:Secondary-constructor: pass:normal[xref:ownership.adoc#Secondary-constructor--[`Secondary.constructor`]]
:xref-Secondary-constructor: xref:ownership.adoc#Secondary-constructor--
:Secondary-primary: pass:normal[xref:ownership.adoc#Secondary-primary--[`Secondary.primary`]]
:xref-Secondary-primary: xref:ownership.adoc#Secondary-primary--
:Secondary-transferPrimary: pass:normal[xref:ownership.adoc#Secondary-transferPrimary-address-[`Secondary.transferPrimary`]]
:xref-Secondary-transferPrimary: xref:ownership.adoc#Secondary-transferPrimary-address-
:Secondary-PrimaryTransferred: pass:normal[xref:ownership.adoc#Secondary-PrimaryTransferred-address-[`Secondary.PrimaryTransferred`]]
:xref-Secondary-PrimaryTransferred: xref:ownership.adoc#Secondary-PrimaryTransferred-address-
:Math: pass:normal[xref:math.adoc#Math[`Math`]]
:xref-Math: xref:math.adoc#Math
:Math-max: pass:normal[xref:math.adoc#Math-max-uint256-uint256-[`Math.max`]]
:xref-Math-max: xref:math.adoc#Math-max-uint256-uint256-
:Math-min: pass:normal[xref:math.adoc#Math-min-uint256-uint256-[`Math.min`]]
:xref-Math-min: xref:math.adoc#Math-min-uint256-uint256-
:Math-average: pass:normal[xref:math.adoc#Math-average-uint256-uint256-[`Math.average`]]
:xref-Math-average: xref:math.adoc#Math-average-uint256-uint256-
:SafeMath: pass:normal[xref:math.adoc#SafeMath[`SafeMath`]]
:xref-SafeMath: xref:math.adoc#SafeMath
:SafeMath-add: pass:normal[xref:math.adoc#SafeMath-add-uint256-uint256-[`SafeMath.add`]]
:xref-SafeMath-add: xref:math.adoc#SafeMath-add-uint256-uint256-
:SafeMath-sub: pass:normal[xref:math.adoc#SafeMath-sub-uint256-uint256-[`SafeMath.sub`]]
:xref-SafeMath-sub: xref:math.adoc#SafeMath-sub-uint256-uint256-
:SafeMath-sub: pass:normal[xref:math.adoc#SafeMath-sub-uint256-uint256-string-[`SafeMath.sub`]]
:xref-SafeMath-sub: xref:math.adoc#SafeMath-sub-uint256-uint256-string-
:SafeMath-mul: pass:normal[xref:math.adoc#SafeMath-mul-uint256-uint256-[`SafeMath.mul`]]
:xref-SafeMath-mul: xref:math.adoc#SafeMath-mul-uint256-uint256-
:SafeMath-div: pass:normal[xref:math.adoc#SafeMath-div-uint256-uint256-[`SafeMath.div`]]
:xref-SafeMath-div: xref:math.adoc#SafeMath-div-uint256-uint256-
:SafeMath-div: pass:normal[xref:math.adoc#SafeMath-div-uint256-uint256-string-[`SafeMath.div`]]
:xref-SafeMath-div: xref:math.adoc#SafeMath-div-uint256-uint256-string-
:SafeMath-mod: pass:normal[xref:math.adoc#SafeMath-mod-uint256-uint256-[`SafeMath.mod`]]
:xref-SafeMath-mod: xref:math.adoc#SafeMath-mod-uint256-uint256-
:SafeMath-mod: pass:normal[xref:math.adoc#SafeMath-mod-uint256-uint256-string-[`SafeMath.mod`]]
:xref-SafeMath-mod: xref:math.adoc#SafeMath-mod-uint256-uint256-string-
:PaymentSplitter: pass:normal[xref:payment.adoc#PaymentSplitter[`PaymentSplitter`]]
:xref-PaymentSplitter: xref:payment.adoc#PaymentSplitter
:PaymentSplitter-constructor: pass:normal[xref:payment.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]]
:xref-PaymentSplitter-constructor: xref:payment.adoc#PaymentSplitter-constructor-address---uint256---
:PaymentSplitter-fallback: pass:normal[xref:payment.adoc#PaymentSplitter-fallback--[`PaymentSplitter.fallback`]]
:xref-PaymentSplitter-fallback: xref:payment.adoc#PaymentSplitter-fallback--
:PaymentSplitter-totalShares: pass:normal[xref:payment.adoc#PaymentSplitter-totalShares--[`PaymentSplitter.totalShares`]]
:xref-PaymentSplitter-totalShares: xref:payment.adoc#PaymentSplitter-totalShares--
:PaymentSplitter-totalReleased: pass:normal[xref:payment.adoc#PaymentSplitter-totalReleased--[`PaymentSplitter.totalReleased`]]
:xref-PaymentSplitter-totalReleased: xref:payment.adoc#PaymentSplitter-totalReleased--
:PaymentSplitter-shares: pass:normal[xref:payment.adoc#PaymentSplitter-shares-address-[`PaymentSplitter.shares`]]
:xref-PaymentSplitter-shares: xref:payment.adoc#PaymentSplitter-shares-address-
:PaymentSplitter-released: pass:normal[xref:payment.adoc#PaymentSplitter-released-address-[`PaymentSplitter.released`]]
:xref-PaymentSplitter-released: xref:payment.adoc#PaymentSplitter-released-address-
:PaymentSplitter-payee: pass:normal[xref:payment.adoc#PaymentSplitter-payee-uint256-[`PaymentSplitter.payee`]]
:xref-PaymentSplitter-payee: xref:payment.adoc#PaymentSplitter-payee-uint256-
:PaymentSplitter-release: pass:normal[xref:payment.adoc#PaymentSplitter-release-address-payable-[`PaymentSplitter.release`]]
:xref-PaymentSplitter-release: xref:payment.adoc#PaymentSplitter-release-address-payable-
:PaymentSplitter-PayeeAdded: pass:normal[xref:payment.adoc#PaymentSplitter-PayeeAdded-address-uint256-[`PaymentSplitter.PayeeAdded`]]
:xref-PaymentSplitter-PayeeAdded: xref:payment.adoc#PaymentSplitter-PayeeAdded-address-uint256-
:PaymentSplitter-PaymentReleased: pass:normal[xref:payment.adoc#PaymentSplitter-PaymentReleased-address-uint256-[`PaymentSplitter.PaymentReleased`]]
:xref-PaymentSplitter-PaymentReleased: xref:payment.adoc#PaymentSplitter-PaymentReleased-address-uint256-
:PaymentSplitter-PaymentReceived: pass:normal[xref:payment.adoc#PaymentSplitter-PaymentReceived-address-uint256-[`PaymentSplitter.PaymentReceived`]]
:xref-PaymentSplitter-PaymentReceived: xref:payment.adoc#PaymentSplitter-PaymentReceived-address-uint256-
:PullPayment: pass:normal[xref:payment.adoc#PullPayment[`PullPayment`]]
:xref-PullPayment: xref:payment.adoc#PullPayment
:PullPayment-constructor: pass:normal[xref:payment.adoc#PullPayment-constructor--[`PullPayment.constructor`]]
:xref-PullPayment-constructor: xref:payment.adoc#PullPayment-constructor--
:PullPayment-withdrawPayments: pass:normal[xref:payment.adoc#PullPayment-withdrawPayments-address-payable-[`PullPayment.withdrawPayments`]]
:xref-PullPayment-withdrawPayments: xref:payment.adoc#PullPayment-withdrawPayments-address-payable-
:PullPayment-withdrawPaymentsWithGas: pass:normal[xref:payment.adoc#PullPayment-withdrawPaymentsWithGas-address-payable-[`PullPayment.withdrawPaymentsWithGas`]]
:xref-PullPayment-withdrawPaymentsWithGas: xref:payment.adoc#PullPayment-withdrawPaymentsWithGas-address-payable-
:PullPayment-payments: pass:normal[xref:payment.adoc#PullPayment-payments-address-[`PullPayment.payments`]]
:xref-PullPayment-payments: xref:payment.adoc#PullPayment-payments-address-
:PullPayment-_asyncTransfer: pass:normal[xref:payment.adoc#PullPayment-_asyncTransfer-address-uint256-[`PullPayment._asyncTransfer`]]
:xref-PullPayment-_asyncTransfer: xref:payment.adoc#PullPayment-_asyncTransfer-address-uint256-
:ConditionalEscrow: pass:normal[xref:payment.adoc#ConditionalEscrow[`ConditionalEscrow`]]
:xref-ConditionalEscrow: xref:payment.adoc#ConditionalEscrow
:ConditionalEscrow-withdrawalAllowed: pass:normal[xref:payment.adoc#ConditionalEscrow-withdrawalAllowed-address-[`ConditionalEscrow.withdrawalAllowed`]]
:xref-ConditionalEscrow-withdrawalAllowed: xref:payment.adoc#ConditionalEscrow-withdrawalAllowed-address-
:ConditionalEscrow-withdraw: pass:normal[xref:payment.adoc#ConditionalEscrow-withdraw-address-payable-[`ConditionalEscrow.withdraw`]]
:xref-ConditionalEscrow-withdraw: xref:payment.adoc#ConditionalEscrow-withdraw-address-payable-
:Escrow: pass:normal[xref:payment.adoc#Escrow[`Escrow`]]
:xref-Escrow: xref:payment.adoc#Escrow
:Escrow-depositsOf: pass:normal[xref:payment.adoc#Escrow-depositsOf-address-[`Escrow.depositsOf`]]
:xref-Escrow-depositsOf: xref:payment.adoc#Escrow-depositsOf-address-
:Escrow-deposit: pass:normal[xref:payment.adoc#Escrow-deposit-address-[`Escrow.deposit`]]
:xref-Escrow-deposit: xref:payment.adoc#Escrow-deposit-address-
:Escrow-withdraw: pass:normal[xref:payment.adoc#Escrow-withdraw-address-payable-[`Escrow.withdraw`]]
:xref-Escrow-withdraw: xref:payment.adoc#Escrow-withdraw-address-payable-
:Escrow-withdrawWithGas: pass:normal[xref:payment.adoc#Escrow-withdrawWithGas-address-payable-[`Escrow.withdrawWithGas`]]
:xref-Escrow-withdrawWithGas: xref:payment.adoc#Escrow-withdrawWithGas-address-payable-
:Escrow-Deposited: pass:normal[xref:payment.adoc#Escrow-Deposited-address-uint256-[`Escrow.Deposited`]]
:xref-Escrow-Deposited: xref:payment.adoc#Escrow-Deposited-address-uint256-
:Escrow-Withdrawn: pass:normal[xref:payment.adoc#Escrow-Withdrawn-address-uint256-[`Escrow.Withdrawn`]]
:xref-Escrow-Withdrawn: xref:payment.adoc#Escrow-Withdrawn-address-uint256-
:RefundEscrow: pass:normal[xref:payment.adoc#RefundEscrow[`RefundEscrow`]]
:xref-RefundEscrow: xref:payment.adoc#RefundEscrow
:RefundEscrow-constructor: pass:normal[xref:payment.adoc#RefundEscrow-constructor-address-payable-[`RefundEscrow.constructor`]]
:xref-RefundEscrow-constructor: xref:payment.adoc#RefundEscrow-constructor-address-payable-
:RefundEscrow-state: pass:normal[xref:payment.adoc#RefundEscrow-state--[`RefundEscrow.state`]]
:xref-RefundEscrow-state: xref:payment.adoc#RefundEscrow-state--
:RefundEscrow-beneficiary: pass:normal[xref:payment.adoc#RefundEscrow-beneficiary--[`RefundEscrow.beneficiary`]]
:xref-RefundEscrow-beneficiary: xref:payment.adoc#RefundEscrow-beneficiary--
:RefundEscrow-deposit: pass:normal[xref:payment.adoc#RefundEscrow-deposit-address-[`RefundEscrow.deposit`]]
:xref-RefundEscrow-deposit: xref:payment.adoc#RefundEscrow-deposit-address-
:RefundEscrow-close: pass:normal[xref:payment.adoc#RefundEscrow-close--[`RefundEscrow.close`]]
:xref-RefundEscrow-close: xref:payment.adoc#RefundEscrow-close--
:RefundEscrow-enableRefunds: pass:normal[xref:payment.adoc#RefundEscrow-enableRefunds--[`RefundEscrow.enableRefunds`]]
:xref-RefundEscrow-enableRefunds: xref:payment.adoc#RefundEscrow-enableRefunds--
:RefundEscrow-beneficiaryWithdraw: pass:normal[xref:payment.adoc#RefundEscrow-beneficiaryWithdraw--[`RefundEscrow.beneficiaryWithdraw`]]
:xref-RefundEscrow-beneficiaryWithdraw: xref:payment.adoc#RefundEscrow-beneficiaryWithdraw--
:RefundEscrow-withdrawalAllowed: pass:normal[xref:payment.adoc#RefundEscrow-withdrawalAllowed-address-[`RefundEscrow.withdrawalAllowed`]]
:xref-RefundEscrow-withdrawalAllowed: xref:payment.adoc#RefundEscrow-withdrawalAllowed-address-
:RefundEscrow-RefundsClosed: pass:normal[xref:payment.adoc#RefundEscrow-RefundsClosed--[`RefundEscrow.RefundsClosed`]]
:xref-RefundEscrow-RefundsClosed: xref:payment.adoc#RefundEscrow-RefundsClosed--
:RefundEscrow-RefundsEnabled: pass:normal[xref:payment.adoc#RefundEscrow-RefundsEnabled--[`RefundEscrow.RefundsEnabled`]]
:xref-RefundEscrow-RefundsEnabled: xref:payment.adoc#RefundEscrow-RefundsEnabled--
:Address: pass:normal[xref:utils.adoc#Address[`Address`]]
:xref-Address: xref:utils.adoc#Address
:Address-isContract: pass:normal[xref:utils.adoc#Address-isContract-address-[`Address.isContract`]]
:xref-Address-isContract: xref:utils.adoc#Address-isContract-address-
:Address-toPayable: pass:normal[xref:utils.adoc#Address-toPayable-address-[`Address.toPayable`]]
:xref-Address-toPayable: xref:utils.adoc#Address-toPayable-address-
:Address-sendValue: pass:normal[xref:utils.adoc#Address-sendValue-address-payable-uint256-[`Address.sendValue`]]
:xref-Address-sendValue: xref:utils.adoc#Address-sendValue-address-payable-uint256-
:Arrays: pass:normal[xref:utils.adoc#Arrays[`Arrays`]]
:xref-Arrays: xref:utils.adoc#Arrays
:Arrays-findUpperBound: pass:normal[xref:utils.adoc#Arrays-findUpperBound-uint256---uint256-[`Arrays.findUpperBound`]]
:xref-Arrays-findUpperBound: xref:utils.adoc#Arrays-findUpperBound-uint256---uint256-
:Create2: pass:normal[xref:utils.adoc#Create2[`Create2`]]
:xref-Create2: xref:utils.adoc#Create2
:Create2-deploy: pass:normal[xref:utils.adoc#Create2-deploy-bytes32-bytes-[`Create2.deploy`]]
:xref-Create2-deploy: xref:utils.adoc#Create2-deploy-bytes32-bytes-
:Create2-computeAddress: pass:normal[xref:utils.adoc#Create2-computeAddress-bytes32-bytes-[`Create2.computeAddress`]]
:xref-Create2-computeAddress: xref:utils.adoc#Create2-computeAddress-bytes32-bytes-
:Create2-computeAddress: pass:normal[xref:utils.adoc#Create2-computeAddress-bytes32-bytes-address-[`Create2.computeAddress`]]
:xref-Create2-computeAddress: xref:utils.adoc#Create2-computeAddress-bytes32-bytes-address-
:EnumerableSet: pass:normal[xref:utils.adoc#EnumerableSet[`EnumerableSet`]]
:xref-EnumerableSet: xref:utils.adoc#EnumerableSet
:EnumerableSet-add: pass:normal[xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-AddressSet-address-[`EnumerableSet.add`]]
:xref-EnumerableSet-add: xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-AddressSet-address-
:EnumerableSet-remove: pass:normal[xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-AddressSet-address-[`EnumerableSet.remove`]]
:xref-EnumerableSet-remove: xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-AddressSet-address-
:EnumerableSet-contains: pass:normal[xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-AddressSet-address-[`EnumerableSet.contains`]]
:xref-EnumerableSet-contains: xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-AddressSet-address-
:EnumerableSet-enumerate: pass:normal[xref:utils.adoc#EnumerableSet-enumerate-struct-EnumerableSet-AddressSet-[`EnumerableSet.enumerate`]]
:xref-EnumerableSet-enumerate: xref:utils.adoc#EnumerableSet-enumerate-struct-EnumerableSet-AddressSet-
:EnumerableSet-length: pass:normal[xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-AddressSet-[`EnumerableSet.length`]]
:xref-EnumerableSet-length: xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-AddressSet-
:EnumerableSet-get: pass:normal[xref:utils.adoc#EnumerableSet-get-struct-EnumerableSet-AddressSet-uint256-[`EnumerableSet.get`]]
:xref-EnumerableSet-get: xref:utils.adoc#EnumerableSet-get-struct-EnumerableSet-AddressSet-uint256-
:ReentrancyGuard: pass:normal[xref:utils.adoc#ReentrancyGuard[`ReentrancyGuard`]]
:xref-ReentrancyGuard: xref:utils.adoc#ReentrancyGuard
:ReentrancyGuard-nonReentrant: pass:normal[xref:utils.adoc#ReentrancyGuard-nonReentrant--[`ReentrancyGuard.nonReentrant`]]
:xref-ReentrancyGuard-nonReentrant: xref:utils.adoc#ReentrancyGuard-nonReentrant--
:ReentrancyGuard-constructor: pass:normal[xref:utils.adoc#ReentrancyGuard-constructor--[`ReentrancyGuard.constructor`]]
:xref-ReentrancyGuard-constructor: xref:utils.adoc#ReentrancyGuard-constructor--
:SafeCast: pass:normal[xref:utils.adoc#SafeCast[`SafeCast`]]
:xref-SafeCast: xref:utils.adoc#SafeCast
:SafeCast-toUint128: pass:normal[xref:utils.adoc#SafeCast-toUint128-uint256-[`SafeCast.toUint128`]]
:xref-SafeCast-toUint128: xref:utils.adoc#SafeCast-toUint128-uint256-
:SafeCast-toUint64: pass:normal[xref:utils.adoc#SafeCast-toUint64-uint256-[`SafeCast.toUint64`]]
:xref-SafeCast-toUint64: xref:utils.adoc#SafeCast-toUint64-uint256-
:SafeCast-toUint32: pass:normal[xref:utils.adoc#SafeCast-toUint32-uint256-[`SafeCast.toUint32`]]
:xref-SafeCast-toUint32: xref:utils.adoc#SafeCast-toUint32-uint256-
:SafeCast-toUint16: pass:normal[xref:utils.adoc#SafeCast-toUint16-uint256-[`SafeCast.toUint16`]]
:xref-SafeCast-toUint16: xref:utils.adoc#SafeCast-toUint16-uint256-
:SafeCast-toUint8: pass:normal[xref:utils.adoc#SafeCast-toUint8-uint256-[`SafeCast.toUint8`]]
:xref-SafeCast-toUint8: xref:utils.adoc#SafeCast-toUint8-uint256-
:ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]]
:xref-ERC721: xref:token/ERC721.adoc#ERC721
:ERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#ERC721-balanceOf-address-[`ERC721.balanceOf`]]
:xref-ERC721-balanceOf: xref:token/ERC721.adoc#ERC721-balanceOf-address-
:ERC721-ownerOf: pass:normal[xref:token/ERC721.adoc#ERC721-ownerOf-uint256-[`ERC721.ownerOf`]]
:xref-ERC721-ownerOf: xref:token/ERC721.adoc#ERC721-ownerOf-uint256-
:ERC721-approve: pass:normal[xref:token/ERC721.adoc#ERC721-approve-address-uint256-[`ERC721.approve`]]
:xref-ERC721-approve: xref:token/ERC721.adoc#ERC721-approve-address-uint256-
:ERC721-getApproved: pass:normal[xref:token/ERC721.adoc#ERC721-getApproved-uint256-[`ERC721.getApproved`]]
:xref-ERC721-getApproved: xref:token/ERC721.adoc#ERC721-getApproved-uint256-
:ERC721-setApprovalForAll: pass:normal[xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool-[`ERC721.setApprovalForAll`]]
:xref-ERC721-setApprovalForAll: xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool-
:ERC721-isApprovedForAll: pass:normal[xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address-[`ERC721.isApprovedForAll`]]
:xref-ERC721-isApprovedForAll: xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address-
:ERC721-transferFrom: pass:normal[xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256-[`ERC721.transferFrom`]]
:xref-ERC721-transferFrom: xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256-
:ERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-[`ERC721.safeTransferFrom`]]
:xref-ERC721-safeTransferFrom: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-
:ERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes-[`ERC721.safeTransferFrom`]]
:xref-ERC721-safeTransferFrom: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes-
:ERC721-_safeTransferFrom: pass:normal[xref:token/ERC721.adoc#ERC721-_safeTransferFrom-address-address-uint256-bytes-[`ERC721._safeTransferFrom`]]
:xref-ERC721-_safeTransferFrom: xref:token/ERC721.adoc#ERC721-_safeTransferFrom-address-address-uint256-bytes-
:ERC721-_exists: pass:normal[xref:token/ERC721.adoc#ERC721-_exists-uint256-[`ERC721._exists`]]
:xref-ERC721-_exists: xref:token/ERC721.adoc#ERC721-_exists-uint256-
:ERC721-_isApprovedOrOwner: pass:normal[xref:token/ERC721.adoc#ERC721-_isApprovedOrOwner-address-uint256-[`ERC721._isApprovedOrOwner`]]
:xref-ERC721-_isApprovedOrOwner: xref:token/ERC721.adoc#ERC721-_isApprovedOrOwner-address-uint256-
:ERC721-_safeMint: pass:normal[xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-[`ERC721._safeMint`]]
:xref-ERC721-_safeMint: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-
:ERC721-_safeMint: pass:normal[xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes-[`ERC721._safeMint`]]
:xref-ERC721-_safeMint: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes-
:ERC721-_mint: pass:normal[xref:token/ERC721.adoc#ERC721-_mint-address-uint256-[`ERC721._mint`]]
:xref-ERC721-_mint: xref:token/ERC721.adoc#ERC721-_mint-address-uint256-
:ERC721-_burn: pass:normal[xref:token/ERC721.adoc#ERC721-_burn-address-uint256-[`ERC721._burn`]]
:xref-ERC721-_burn: xref:token/ERC721.adoc#ERC721-_burn-address-uint256-
:ERC721-_burn: pass:normal[xref:token/ERC721.adoc#ERC721-_burn-uint256-[`ERC721._burn`]]
:xref-ERC721-_burn: xref:token/ERC721.adoc#ERC721-_burn-uint256-
:ERC721-_transferFrom: pass:normal[xref:token/ERC721.adoc#ERC721-_transferFrom-address-address-uint256-[`ERC721._transferFrom`]]
:xref-ERC721-_transferFrom: xref:token/ERC721.adoc#ERC721-_transferFrom-address-address-uint256-
:ERC721-_checkOnERC721Received: pass:normal[xref:token/ERC721.adoc#ERC721-_checkOnERC721Received-address-address-uint256-bytes-[`ERC721._checkOnERC721Received`]]
:xref-ERC721-_checkOnERC721Received: xref:token/ERC721.adoc#ERC721-_checkOnERC721Received-address-address-uint256-bytes-
:ERC721Burnable: pass:normal[xref:token/ERC721.adoc#ERC721Burnable[`ERC721Burnable`]]
:xref-ERC721Burnable: xref:token/ERC721.adoc#ERC721Burnable
:ERC721Burnable-burn: pass:normal[xref:token/ERC721.adoc#ERC721Burnable-burn-uint256-[`ERC721Burnable.burn`]]
:xref-ERC721Burnable-burn: xref:token/ERC721.adoc#ERC721Burnable-burn-uint256-
:ERC721Enumerable: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable[`ERC721Enumerable`]]
:xref-ERC721Enumerable: xref:token/ERC721.adoc#ERC721Enumerable
:ERC721Enumerable-constructor: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-constructor--[`ERC721Enumerable.constructor`]]
:xref-ERC721Enumerable-constructor: xref:token/ERC721.adoc#ERC721Enumerable-constructor--
:ERC721Enumerable-tokenOfOwnerByIndex: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-tokenOfOwnerByIndex-address-uint256-[`ERC721Enumerable.tokenOfOwnerByIndex`]]
:xref-ERC721Enumerable-tokenOfOwnerByIndex: xref:token/ERC721.adoc#ERC721Enumerable-tokenOfOwnerByIndex-address-uint256-
:ERC721Enumerable-totalSupply: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-totalSupply--[`ERC721Enumerable.totalSupply`]]
:xref-ERC721Enumerable-totalSupply: xref:token/ERC721.adoc#ERC721Enumerable-totalSupply--
:ERC721Enumerable-tokenByIndex: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-tokenByIndex-uint256-[`ERC721Enumerable.tokenByIndex`]]
:xref-ERC721Enumerable-tokenByIndex: xref:token/ERC721.adoc#ERC721Enumerable-tokenByIndex-uint256-
:ERC721Enumerable-_transferFrom: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-_transferFrom-address-address-uint256-[`ERC721Enumerable._transferFrom`]]
:xref-ERC721Enumerable-_transferFrom: xref:token/ERC721.adoc#ERC721Enumerable-_transferFrom-address-address-uint256-
:ERC721Enumerable-_mint: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-_mint-address-uint256-[`ERC721Enumerable._mint`]]
:xref-ERC721Enumerable-_mint: xref:token/ERC721.adoc#ERC721Enumerable-_mint-address-uint256-
:ERC721Enumerable-_burn: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-_burn-address-uint256-[`ERC721Enumerable._burn`]]
:xref-ERC721Enumerable-_burn: xref:token/ERC721.adoc#ERC721Enumerable-_burn-address-uint256-
:ERC721Enumerable-_tokensOfOwner: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-_tokensOfOwner-address-[`ERC721Enumerable._tokensOfOwner`]]
:xref-ERC721Enumerable-_tokensOfOwner: xref:token/ERC721.adoc#ERC721Enumerable-_tokensOfOwner-address-
:ERC721Full: pass:normal[xref:token/ERC721.adoc#ERC721Full[`ERC721Full`]]
:xref-ERC721Full: xref:token/ERC721.adoc#ERC721Full
:ERC721Full-constructor: pass:normal[xref:token/ERC721.adoc#ERC721Full-constructor-string-string-[`ERC721Full.constructor`]]
:xref-ERC721Full-constructor: xref:token/ERC721.adoc#ERC721Full-constructor-string-string-
:ERC721Holder: pass:normal[xref:token/ERC721.adoc#ERC721Holder[`ERC721Holder`]]
:xref-ERC721Holder: xref:token/ERC721.adoc#ERC721Holder
:ERC721Holder-onERC721Received: pass:normal[xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-[`ERC721Holder.onERC721Received`]]
:xref-ERC721Holder-onERC721Received: xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-
:ERC721Metadata: pass:normal[xref:token/ERC721.adoc#ERC721Metadata[`ERC721Metadata`]]
:xref-ERC721Metadata: xref:token/ERC721.adoc#ERC721Metadata
:ERC721Metadata-constructor: pass:normal[xref:token/ERC721.adoc#ERC721Metadata-constructor-string-string-[`ERC721Metadata.constructor`]]
:xref-ERC721Metadata-constructor: xref:token/ERC721.adoc#ERC721Metadata-constructor-string-string-
:ERC721Metadata-name: pass:normal[xref:token/ERC721.adoc#ERC721Metadata-name--[`ERC721Metadata.name`]]
:xref-ERC721Metadata-name: xref:token/ERC721.adoc#ERC721Metadata-name--
:ERC721Metadata-symbol: pass:normal[xref:token/ERC721.adoc#ERC721Metadata-symbol--[`ERC721Metadata.symbol`]]
:xref-ERC721Metadata-symbol: xref:token/ERC721.adoc#ERC721Metadata-symbol--
:ERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721Metadata-tokenURI-uint256-[`ERC721Metadata.tokenURI`]]
:xref-ERC721Metadata-tokenURI: xref:token/ERC721.adoc#ERC721Metadata-tokenURI-uint256-
:ERC721Metadata-_setTokenURI: pass:normal[xref:token/ERC721.adoc#ERC721Metadata-_setTokenURI-uint256-string-[`ERC721Metadata._setTokenURI`]]
:xref-ERC721Metadata-_setTokenURI: xref:token/ERC721.adoc#ERC721Metadata-_setTokenURI-uint256-string-
:ERC721Metadata-_setBaseURI: pass:normal[xref:token/ERC721.adoc#ERC721Metadata-_setBaseURI-string-[`ERC721Metadata._setBaseURI`]]
:xref-ERC721Metadata-_setBaseURI: xref:token/ERC721.adoc#ERC721Metadata-_setBaseURI-string-
:ERC721Metadata-baseURI: pass:normal[xref:token/ERC721.adoc#ERC721Metadata-baseURI--[`ERC721Metadata.baseURI`]]
:xref-ERC721Metadata-baseURI: xref:token/ERC721.adoc#ERC721Metadata-baseURI--
:ERC721Metadata-_burn: pass:normal[xref:token/ERC721.adoc#ERC721Metadata-_burn-address-uint256-[`ERC721Metadata._burn`]]
:xref-ERC721Metadata-_burn: xref:token/ERC721.adoc#ERC721Metadata-_burn-address-uint256-
:ERC721MetadataMintable: pass:normal[xref:token/ERC721.adoc#ERC721MetadataMintable[`ERC721MetadataMintable`]]
:xref-ERC721MetadataMintable: xref:token/ERC721.adoc#ERC721MetadataMintable
:ERC721MetadataMintable-mintWithTokenURI: pass:normal[xref:token/ERC721.adoc#ERC721MetadataMintable-mintWithTokenURI-address-uint256-string-[`ERC721MetadataMintable.mintWithTokenURI`]]
:xref-ERC721MetadataMintable-mintWithTokenURI: xref:token/ERC721.adoc#ERC721MetadataMintable-mintWithTokenURI-address-uint256-string-
:ERC721Mintable: pass:normal[xref:token/ERC721.adoc#ERC721Mintable[`ERC721Mintable`]]
:xref-ERC721Mintable: xref:token/ERC721.adoc#ERC721Mintable
:ERC721Mintable-mint: pass:normal[xref:token/ERC721.adoc#ERC721Mintable-mint-address-uint256-[`ERC721Mintable.mint`]]
:xref-ERC721Mintable-mint: xref:token/ERC721.adoc#ERC721Mintable-mint-address-uint256-
:ERC721Mintable-safeMint: pass:normal[xref:token/ERC721.adoc#ERC721Mintable-safeMint-address-uint256-[`ERC721Mintable.safeMint`]]
:xref-ERC721Mintable-safeMint: xref:token/ERC721.adoc#ERC721Mintable-safeMint-address-uint256-
:ERC721Mintable-safeMint: pass:normal[xref:token/ERC721.adoc#ERC721Mintable-safeMint-address-uint256-bytes-[`ERC721Mintable.safeMint`]]
:xref-ERC721Mintable-safeMint: xref:token/ERC721.adoc#ERC721Mintable-safeMint-address-uint256-bytes-
:ERC721Pausable: pass:normal[xref:token/ERC721.adoc#ERC721Pausable[`ERC721Pausable`]]
:xref-ERC721Pausable: xref:token/ERC721.adoc#ERC721Pausable
:ERC721Pausable-approve: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-approve-address-uint256-[`ERC721Pausable.approve`]]
:xref-ERC721Pausable-approve: xref:token/ERC721.adoc#ERC721Pausable-approve-address-uint256-
:ERC721Pausable-setApprovalForAll: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-setApprovalForAll-address-bool-[`ERC721Pausable.setApprovalForAll`]]
:xref-ERC721Pausable-setApprovalForAll: xref:token/ERC721.adoc#ERC721Pausable-setApprovalForAll-address-bool-
:ERC721Pausable-_transferFrom: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-_transferFrom-address-address-uint256-[`ERC721Pausable._transferFrom`]]
:xref-ERC721Pausable-_transferFrom: xref:token/ERC721.adoc#ERC721Pausable-_transferFrom-address-address-uint256-
:IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]]
:xref-IERC721: xref:token/ERC721.adoc#IERC721
:IERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#IERC721-balanceOf-address-[`IERC721.balanceOf`]]
:xref-IERC721-balanceOf: xref:token/ERC721.adoc#IERC721-balanceOf-address-
:IERC721-ownerOf: pass:normal[xref:token/ERC721.adoc#IERC721-ownerOf-uint256-[`IERC721.ownerOf`]]
:xref-IERC721-ownerOf: xref:token/ERC721.adoc#IERC721-ownerOf-uint256-
:IERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-[`IERC721.safeTransferFrom`]]
:xref-IERC721-safeTransferFrom: xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-
:IERC721-transferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-transferFrom-address-address-uint256-[`IERC721.transferFrom`]]
:xref-IERC721-transferFrom: xref:token/ERC721.adoc#IERC721-transferFrom-address-address-uint256-
:IERC721-approve: pass:normal[xref:token/ERC721.adoc#IERC721-approve-address-uint256-[`IERC721.approve`]]
:xref-IERC721-approve: xref:token/ERC721.adoc#IERC721-approve-address-uint256-
:IERC721-getApproved: pass:normal[xref:token/ERC721.adoc#IERC721-getApproved-uint256-[`IERC721.getApproved`]]
:xref-IERC721-getApproved: xref:token/ERC721.adoc#IERC721-getApproved-uint256-
:IERC721-setApprovalForAll: pass:normal[xref:token/ERC721.adoc#IERC721-setApprovalForAll-address-bool-[`IERC721.setApprovalForAll`]]
:xref-IERC721-setApprovalForAll: xref:token/ERC721.adoc#IERC721-setApprovalForAll-address-bool-
:IERC721-isApprovedForAll: pass:normal[xref:token/ERC721.adoc#IERC721-isApprovedForAll-address-address-[`IERC721.isApprovedForAll`]]
:xref-IERC721-isApprovedForAll: xref:token/ERC721.adoc#IERC721-isApprovedForAll-address-address-
:IERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-bytes-[`IERC721.safeTransferFrom`]]
:xref-IERC721-safeTransferFrom: xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-bytes-
:IERC721-Transfer: pass:normal[xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-[`IERC721.Transfer`]]
:xref-IERC721-Transfer: xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-
:IERC721-Approval: pass:normal[xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256-[`IERC721.Approval`]]
:xref-IERC721-Approval: xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256-
:IERC721-ApprovalForAll: pass:normal[xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool-[`IERC721.ApprovalForAll`]]
:xref-IERC721-ApprovalForAll: xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool-
:IERC721Enumerable: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable[`IERC721Enumerable`]]
:xref-IERC721Enumerable: xref:token/ERC721.adoc#IERC721Enumerable
:IERC721Enumerable-totalSupply: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable-totalSupply--[`IERC721Enumerable.totalSupply`]]
:xref-IERC721Enumerable-totalSupply: xref:token/ERC721.adoc#IERC721Enumerable-totalSupply--
:IERC721Enumerable-tokenOfOwnerByIndex: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable-tokenOfOwnerByIndex-address-uint256-[`IERC721Enumerable.tokenOfOwnerByIndex`]]
:xref-IERC721Enumerable-tokenOfOwnerByIndex: xref:token/ERC721.adoc#IERC721Enumerable-tokenOfOwnerByIndex-address-uint256-
:IERC721Enumerable-tokenByIndex: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable-tokenByIndex-uint256-[`IERC721Enumerable.tokenByIndex`]]
:xref-IERC721Enumerable-tokenByIndex: xref:token/ERC721.adoc#IERC721Enumerable-tokenByIndex-uint256-
:IERC721Full: pass:normal[xref:token/ERC721.adoc#IERC721Full[`IERC721Full`]]
:xref-IERC721Full: xref:token/ERC721.adoc#IERC721Full
:IERC721Metadata: pass:normal[xref:token/ERC721.adoc#IERC721Metadata[`IERC721Metadata`]]
:xref-IERC721Metadata: xref:token/ERC721.adoc#IERC721Metadata
:IERC721Metadata-name: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-name--[`IERC721Metadata.name`]]
:xref-IERC721Metadata-name: xref:token/ERC721.adoc#IERC721Metadata-name--
:IERC721Metadata-symbol: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-symbol--[`IERC721Metadata.symbol`]]
:xref-IERC721Metadata-symbol: xref:token/ERC721.adoc#IERC721Metadata-symbol--
:IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]]
:xref-IERC721Metadata-tokenURI: xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-
:IERC721Receiver: pass:normal[xref:token/ERC721.adoc#IERC721Receiver[`IERC721Receiver`]]
:xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver
:IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
:xref-IERC721Receiver-onERC721Received: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-
:ERC20: pass:normal[xref:token/ERC20.adoc#ERC20[`ERC20`]]
:xref-ERC20: xref:token/ERC20.adoc#ERC20
:ERC20-totalSupply: pass:normal[xref:token/ERC20.adoc#ERC20-totalSupply--[`ERC20.totalSupply`]]
:xref-ERC20-totalSupply: xref:token/ERC20.adoc#ERC20-totalSupply--
:ERC20-balanceOf: pass:normal[xref:token/ERC20.adoc#ERC20-balanceOf-address-[`ERC20.balanceOf`]]
:xref-ERC20-balanceOf: xref:token/ERC20.adoc#ERC20-balanceOf-address-
:ERC20-transfer: pass:normal[xref:token/ERC20.adoc#ERC20-transfer-address-uint256-[`ERC20.transfer`]]
:xref-ERC20-transfer: xref:token/ERC20.adoc#ERC20-transfer-address-uint256-
:ERC20-allowance: pass:normal[xref:token/ERC20.adoc#ERC20-allowance-address-address-[`ERC20.allowance`]]
:xref-ERC20-allowance: xref:token/ERC20.adoc#ERC20-allowance-address-address-
:ERC20-approve: pass:normal[xref:token/ERC20.adoc#ERC20-approve-address-uint256-[`ERC20.approve`]]
:xref-ERC20-approve: xref:token/ERC20.adoc#ERC20-approve-address-uint256-
:ERC20-transferFrom: pass:normal[xref:token/ERC20.adoc#ERC20-transferFrom-address-address-uint256-[`ERC20.transferFrom`]]
:xref-ERC20-transferFrom: xref:token/ERC20.adoc#ERC20-transferFrom-address-address-uint256-
:ERC20-increaseAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-increaseAllowance-address-uint256-[`ERC20.increaseAllowance`]]
:xref-ERC20-increaseAllowance: xref:token/ERC20.adoc#ERC20-increaseAllowance-address-uint256-
:ERC20-decreaseAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-decreaseAllowance-address-uint256-[`ERC20.decreaseAllowance`]]
:xref-ERC20-decreaseAllowance: xref:token/ERC20.adoc#ERC20-decreaseAllowance-address-uint256-
:ERC20-_transfer: pass:normal[xref:token/ERC20.adoc#ERC20-_transfer-address-address-uint256-[`ERC20._transfer`]]
:xref-ERC20-_transfer: xref:token/ERC20.adoc#ERC20-_transfer-address-address-uint256-
:ERC20-_mint: pass:normal[xref:token/ERC20.adoc#ERC20-_mint-address-uint256-[`ERC20._mint`]]
:xref-ERC20-_mint: xref:token/ERC20.adoc#ERC20-_mint-address-uint256-
:ERC20-_burn: pass:normal[xref:token/ERC20.adoc#ERC20-_burn-address-uint256-[`ERC20._burn`]]
:xref-ERC20-_burn: xref:token/ERC20.adoc#ERC20-_burn-address-uint256-
:ERC20-_approve: pass:normal[xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256-[`ERC20._approve`]]
:xref-ERC20-_approve: xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256-
:ERC20-_burnFrom: pass:normal[xref:token/ERC20.adoc#ERC20-_burnFrom-address-uint256-[`ERC20._burnFrom`]]
:xref-ERC20-_burnFrom: xref:token/ERC20.adoc#ERC20-_burnFrom-address-uint256-
:ERC20Burnable: pass:normal[xref:token/ERC20.adoc#ERC20Burnable[`ERC20Burnable`]]
:xref-ERC20Burnable: xref:token/ERC20.adoc#ERC20Burnable
:ERC20Burnable-burn: pass:normal[xref:token/ERC20.adoc#ERC20Burnable-burn-uint256-[`ERC20Burnable.burn`]]
:xref-ERC20Burnable-burn: xref:token/ERC20.adoc#ERC20Burnable-burn-uint256-
:ERC20Burnable-burnFrom: pass:normal[xref:token/ERC20.adoc#ERC20Burnable-burnFrom-address-uint256-[`ERC20Burnable.burnFrom`]]
:xref-ERC20Burnable-burnFrom: xref:token/ERC20.adoc#ERC20Burnable-burnFrom-address-uint256-
:ERC20Capped: pass:normal[xref:token/ERC20.adoc#ERC20Capped[`ERC20Capped`]]
:xref-ERC20Capped: xref:token/ERC20.adoc#ERC20Capped
:ERC20Capped-constructor: pass:normal[xref:token/ERC20.adoc#ERC20Capped-constructor-uint256-[`ERC20Capped.constructor`]]
:xref-ERC20Capped-constructor: xref:token/ERC20.adoc#ERC20Capped-constructor-uint256-
:ERC20Capped-cap: pass:normal[xref:token/ERC20.adoc#ERC20Capped-cap--[`ERC20Capped.cap`]]
:xref-ERC20Capped-cap: xref:token/ERC20.adoc#ERC20Capped-cap--
:ERC20Capped-_mint: pass:normal[xref:token/ERC20.adoc#ERC20Capped-_mint-address-uint256-[`ERC20Capped._mint`]]
:xref-ERC20Capped-_mint: xref:token/ERC20.adoc#ERC20Capped-_mint-address-uint256-
:ERC20Detailed: pass:normal[xref:token/ERC20.adoc#ERC20Detailed[`ERC20Detailed`]]
:xref-ERC20Detailed: xref:token/ERC20.adoc#ERC20Detailed
:ERC20Detailed-constructor: pass:normal[xref:token/ERC20.adoc#ERC20Detailed-constructor-string-string-uint8-[`ERC20Detailed.constructor`]]
:xref-ERC20Detailed-constructor: xref:token/ERC20.adoc#ERC20Detailed-constructor-string-string-uint8-
:ERC20Detailed-name: pass:normal[xref:token/ERC20.adoc#ERC20Detailed-name--[`ERC20Detailed.name`]]
:xref-ERC20Detailed-name: xref:token/ERC20.adoc#ERC20Detailed-name--
:ERC20Detailed-symbol: pass:normal[xref:token/ERC20.adoc#ERC20Detailed-symbol--[`ERC20Detailed.symbol`]]
:xref-ERC20Detailed-symbol: xref:token/ERC20.adoc#ERC20Detailed-symbol--
:ERC20Detailed-decimals: pass:normal[xref:token/ERC20.adoc#ERC20Detailed-decimals--[`ERC20Detailed.decimals`]]
:xref-ERC20Detailed-decimals: xref:token/ERC20.adoc#ERC20Detailed-decimals--
:ERC20Mintable: pass:normal[xref:token/ERC20.adoc#ERC20Mintable[`ERC20Mintable`]]
:xref-ERC20Mintable: xref:token/ERC20.adoc#ERC20Mintable
:ERC20Mintable-mint: pass:normal[xref:token/ERC20.adoc#ERC20Mintable-mint-address-uint256-[`ERC20Mintable.mint`]]
:xref-ERC20Mintable-mint: xref:token/ERC20.adoc#ERC20Mintable-mint-address-uint256-
:ERC20Pausable: pass:normal[xref:token/ERC20.adoc#ERC20Pausable[`ERC20Pausable`]]
:xref-ERC20Pausable: xref:token/ERC20.adoc#ERC20Pausable
:ERC20Pausable-transfer: pass:normal[xref:token/ERC20.adoc#ERC20Pausable-transfer-address-uint256-[`ERC20Pausable.transfer`]]
:xref-ERC20Pausable-transfer: xref:token/ERC20.adoc#ERC20Pausable-transfer-address-uint256-
:ERC20Pausable-transferFrom: pass:normal[xref:token/ERC20.adoc#ERC20Pausable-transferFrom-address-address-uint256-[`ERC20Pausable.transferFrom`]]
:xref-ERC20Pausable-transferFrom: xref:token/ERC20.adoc#ERC20Pausable-transferFrom-address-address-uint256-
:ERC20Pausable-approve: pass:normal[xref:token/ERC20.adoc#ERC20Pausable-approve-address-uint256-[`ERC20Pausable.approve`]]
:xref-ERC20Pausable-approve: xref:token/ERC20.adoc#ERC20Pausable-approve-address-uint256-
:ERC20Pausable-increaseAllowance: pass:normal[xref:token/ERC20.adoc#ERC20Pausable-increaseAllowance-address-uint256-[`ERC20Pausable.increaseAllowance`]]
:xref-ERC20Pausable-increaseAllowance: xref:token/ERC20.adoc#ERC20Pausable-increaseAllowance-address-uint256-
:ERC20Pausable-decreaseAllowance: pass:normal[xref:token/ERC20.adoc#ERC20Pausable-decreaseAllowance-address-uint256-[`ERC20Pausable.decreaseAllowance`]]
:xref-ERC20Pausable-decreaseAllowance: xref:token/ERC20.adoc#ERC20Pausable-decreaseAllowance-address-uint256-
:IERC20: pass:normal[xref:token/ERC20.adoc#IERC20[`IERC20`]]
:xref-IERC20: xref:token/ERC20.adoc#IERC20
:IERC20-totalSupply: pass:normal[xref:token/ERC20.adoc#IERC20-totalSupply--[`IERC20.totalSupply`]]
:xref-IERC20-totalSupply: xref:token/ERC20.adoc#IERC20-totalSupply--
:IERC20-balanceOf: pass:normal[xref:token/ERC20.adoc#IERC20-balanceOf-address-[`IERC20.balanceOf`]]
:xref-IERC20-balanceOf: xref:token/ERC20.adoc#IERC20-balanceOf-address-
:IERC20-transfer: pass:normal[xref:token/ERC20.adoc#IERC20-transfer-address-uint256-[`IERC20.transfer`]]
:xref-IERC20-transfer: xref:token/ERC20.adoc#IERC20-transfer-address-uint256-
:IERC20-allowance: pass:normal[xref:token/ERC20.adoc#IERC20-allowance-address-address-[`IERC20.allowance`]]
:xref-IERC20-allowance: xref:token/ERC20.adoc#IERC20-allowance-address-address-
:IERC20-approve: pass:normal[xref:token/ERC20.adoc#IERC20-approve-address-uint256-[`IERC20.approve`]]
:xref-IERC20-approve: xref:token/ERC20.adoc#IERC20-approve-address-uint256-
:IERC20-transferFrom: pass:normal[xref:token/ERC20.adoc#IERC20-transferFrom-address-address-uint256-[`IERC20.transferFrom`]]
:xref-IERC20-transferFrom: xref:token/ERC20.adoc#IERC20-transferFrom-address-address-uint256-
:IERC20-Transfer: pass:normal[xref:token/ERC20.adoc#IERC20-Transfer-address-address-uint256-[`IERC20.Transfer`]]
:xref-IERC20-Transfer: xref:token/ERC20.adoc#IERC20-Transfer-address-address-uint256-
:IERC20-Approval: pass:normal[xref:token/ERC20.adoc#IERC20-Approval-address-address-uint256-[`IERC20.Approval`]]
:xref-IERC20-Approval: xref:token/ERC20.adoc#IERC20-Approval-address-address-uint256-
:SafeERC20: pass:normal[xref:token/ERC20.adoc#SafeERC20[`SafeERC20`]]
:xref-SafeERC20: xref:token/ERC20.adoc#SafeERC20
:SafeERC20-safeTransfer: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256-[`SafeERC20.safeTransfer`]]
:xref-SafeERC20-safeTransfer: xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256-
:SafeERC20-safeTransferFrom: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransferFrom-contract-IERC20-address-address-uint256-[`SafeERC20.safeTransferFrom`]]
:xref-SafeERC20-safeTransferFrom: xref:token/ERC20.adoc#SafeERC20-safeTransferFrom-contract-IERC20-address-address-uint256-
:SafeERC20-safeApprove: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeApprove-contract-IERC20-address-uint256-[`SafeERC20.safeApprove`]]
:xref-SafeERC20-safeApprove: xref:token/ERC20.adoc#SafeERC20-safeApprove-contract-IERC20-address-uint256-
:SafeERC20-safeIncreaseAllowance: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeIncreaseAllowance-contract-IERC20-address-uint256-[`SafeERC20.safeIncreaseAllowance`]]
:xref-SafeERC20-safeIncreaseAllowance: xref:token/ERC20.adoc#SafeERC20-safeIncreaseAllowance-contract-IERC20-address-uint256-
:SafeERC20-safeDecreaseAllowance: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeDecreaseAllowance-contract-IERC20-address-uint256-[`SafeERC20.safeDecreaseAllowance`]]
:xref-SafeERC20-safeDecreaseAllowance: xref:token/ERC20.adoc#SafeERC20-safeDecreaseAllowance-contract-IERC20-address-uint256-
:TokenTimelock: pass:normal[xref:token/ERC20.adoc#TokenTimelock[`TokenTimelock`]]
:xref-TokenTimelock: xref:token/ERC20.adoc#TokenTimelock
:TokenTimelock-constructor: pass:normal[xref:token/ERC20.adoc#TokenTimelock-constructor-contract-IERC20-address-uint256-[`TokenTimelock.constructor`]]
:xref-TokenTimelock-constructor: xref:token/ERC20.adoc#TokenTimelock-constructor-contract-IERC20-address-uint256-
:TokenTimelock-token: pass:normal[xref:token/ERC20.adoc#TokenTimelock-token--[`TokenTimelock.token`]]
:xref-TokenTimelock-token: xref:token/ERC20.adoc#TokenTimelock-token--
:TokenTimelock-beneficiary: pass:normal[xref:token/ERC20.adoc#TokenTimelock-beneficiary--[`TokenTimelock.beneficiary`]]
:xref-TokenTimelock-beneficiary: xref:token/ERC20.adoc#TokenTimelock-beneficiary--
:TokenTimelock-releaseTime: pass:normal[xref:token/ERC20.adoc#TokenTimelock-releaseTime--[`TokenTimelock.releaseTime`]]
:xref-TokenTimelock-releaseTime: xref:token/ERC20.adoc#TokenTimelock-releaseTime--
:TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]]
:xref-TokenTimelock-release: xref:token/ERC20.adoc#TokenTimelock-release--
:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
:xref-ERC777: xref:token/ERC777.adoc#ERC777
:ERC777-ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777.ERC1820_REGISTRY`]]
:xref-ERC777-ERC1820_REGISTRY: xref:token/ERC777.adoc#ERC777-ERC1820_REGISTRY-contract-IERC1820Registry
:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
:xref-ERC777-constructor: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
:xref-ERC777-name: xref:token/ERC777.adoc#ERC777-name--
:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
:xref-ERC777-symbol: xref:token/ERC777.adoc#ERC777-symbol--
:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
:xref-ERC777-decimals: xref:token/ERC777.adoc#ERC777-decimals--
:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
:xref-ERC777-granularity: xref:token/ERC777.adoc#ERC777-granularity--
:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
:xref-ERC777-totalSupply: xref:token/ERC777.adoc#ERC777-totalSupply--
:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
:xref-ERC777-balanceOf: xref:token/ERC777.adoc#ERC777-balanceOf-address-
:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
:xref-ERC777-send: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
:xref-ERC777-transfer: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
:xref-ERC777-burn: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
:xref-ERC777-isOperatorFor: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
:xref-ERC777-authorizeOperator: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
:xref-ERC777-revokeOperator: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
:xref-ERC777-defaultOperators: xref:token/ERC777.adoc#ERC777-defaultOperators--
:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
:xref-ERC777-operatorSend: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
:xref-ERC777-operatorBurn: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
:xref-ERC777-allowance: xref:token/ERC777.adoc#ERC777-allowance-address-address-
:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
:xref-ERC777-approve: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
:xref-ERC777-transferFrom: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-address-uint256-bytes-bytes-[`ERC777._mint`]]
:xref-ERC777-_mint: xref:token/ERC777.adoc#ERC777-_mint-address-address-uint256-bytes-bytes-
:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
:xref-ERC777-_send: xref:token/ERC777.adoc#ERC777-_send-address-address-address-uint256-bytes-bytes-bool-
:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-address-uint256-bytes-bytes-[`ERC777._burn`]]
:xref-ERC777-_burn: xref:token/ERC777.adoc#ERC777-_burn-address-address-uint256-bytes-bytes-
:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
:xref-ERC777-_approve: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
:ERC777-_callTokensToSend: pass:normal[xref:token/ERC777.adoc#ERC777-_callTokensToSend-address-address-address-uint256-bytes-bytes-[`ERC777._callTokensToSend`]]
:xref-ERC777-_callTokensToSend: xref:token/ERC777.adoc#ERC777-_callTokensToSend-address-address-address-uint256-bytes-bytes-
:ERC777-_callTokensReceived: pass:normal[xref:token/ERC777.adoc#ERC777-_callTokensReceived-address-address-address-uint256-bytes-bytes-bool-[`ERC777._callTokensReceived`]]
:xref-ERC777-_callTokensReceived: xref:token/ERC777.adoc#ERC777-_callTokensReceived-address-address-address-uint256-bytes-bytes-bool-
:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
:xref-IERC777: xref:token/ERC777.adoc#IERC777
:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
:xref-IERC777-name: xref:token/ERC777.adoc#IERC777-name--
:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
:xref-IERC777-symbol: xref:token/ERC777.adoc#IERC777-symbol--
:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
:xref-IERC777-granularity: xref:token/ERC777.adoc#IERC777-granularity--
:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
:xref-IERC777-totalSupply: xref:token/ERC777.adoc#IERC777-totalSupply--
:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
:xref-IERC777-balanceOf: xref:token/ERC777.adoc#IERC777-balanceOf-address-
:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
:xref-IERC777-send: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
:xref-IERC777-burn: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
:xref-IERC777-isOperatorFor: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
:xref-IERC777-authorizeOperator: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
:xref-IERC777-revokeOperator: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
:xref-IERC777-defaultOperators: xref:token/ERC777.adoc#IERC777-defaultOperators--
:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
:xref-IERC777-operatorSend: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
:xref-IERC777-operatorBurn: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
:xref-IERC777-Sent: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
:xref-IERC777-Minted: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
:xref-IERC777-Burned: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
:xref-IERC777-AuthorizedOperator: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
:xref-IERC777-RevokedOperator: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
:xref-IERC777Recipient-tokensReceived: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
:xref-IERC777Sender-tokensToSend: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
= ERC 20

This set of interfaces, contracts, and utilities are all related to the https://eips.ethereum.org/EIPS/eip-20[ERC20 Token Standard].

TIP: For an overview of ERC20 tokens and a walkthrough on how to create a token contract read our xref:ROOT:tokens.adoc#ERC20[ERC20 guide].

There a few core contracts that implement the behavior specified in the EIP:

* {IERC20}: the interface all ERC20 implementations should conform to
* {ERC20}: the base implementation of the ERC20 interface
* {ERC20Detailed}: includes the <<ERC20Detailed-name,`name`>>,
   <<ERC20Detailed-symbol,`symbol`>> and <<ERC20Detailed-decimals,`decimals`>>
   optional standard extension to the base interface

Additionally there are multiple custom extensions, including:

* designation of addresses that can create token supply ({ERC20Mintable}), with an optional maximum cap ({ERC20Capped})
* destruction of own tokens ({ERC20Burnable})
* designation of addresses that can pause token operations for all users ({ERC20Pausable}).

Finally, there are some utilities to interact with ERC20 contracts in various ways.

* {SafeERC20} is a wrapper around the interface that eliminates the need to handle boolean return values.
* {TokenTimelock} can hold tokens for a beneficiary until a specified time.

NOTE: This page is incomplete. We're working to improve it for the next release. Stay tuned!

== Core

:IERC20: pass:normal[xref:#IERC20[`IERC20`]]
:totalSupply: pass:normal[xref:#IERC20-totalSupply--[`totalSupply`]]
:balanceOf: pass:normal[xref:#IERC20-balanceOf-address-[`balanceOf`]]
:transfer: pass:normal[xref:#IERC20-transfer-address-uint256-[`transfer`]]
:allowance: pass:normal[xref:#IERC20-allowance-address-address-[`allowance`]]
:approve: pass:normal[xref:#IERC20-approve-address-uint256-[`approve`]]
:transferFrom: pass:normal[xref:#IERC20-transferFrom-address-address-uint256-[`transferFrom`]]
:Transfer: pass:normal[xref:#IERC20-Transfer-address-address-uint256-[`Transfer`]]
:Approval: pass:normal[xref:#IERC20-Approval-address-address-uint256-[`Approval`]]

[.contract]
[[IERC20]]
=== `IERC20`

Interface of the ERC20 standard as defined in the EIP. Does not include
the optional functions; to access them see {ERC20Detailed}.


[.contract-index]
.Functions
--
* {xref-IERC20-totalSupply}[`totalSupply()`]
* {xref-IERC20-balanceOf}[`balanceOf(account)`]
* {xref-IERC20-transfer}[`transfer(recipient, amount)`]
* {xref-IERC20-allowance}[`allowance(owner, spender)`]
* {xref-IERC20-approve}[`approve(spender, amount)`]
* {xref-IERC20-transferFrom}[`transferFrom(sender, recipient, amount)`]

--

[.contract-index]
.Events
--
* {xref-IERC20-Transfer}[`Transfer(from, to, value)`]
* {xref-IERC20-Approval}[`Approval(owner, spender, value)`]

--


[.contract-item]
[[IERC20-totalSupply--]]
==== `pass:normal[totalSupply() → [.var-type\]#uint256#]` [.item-kind]#external#

Returns the amount of tokens in existence.

[.contract-item]
[[IERC20-balanceOf-address-]]
==== `pass:normal[balanceOf([.var-type\]#address# [.var-name\]#account#) → [.var-type\]#uint256#]` [.item-kind]#external#

Returns the amount of tokens owned by `account`.

[.contract-item]
[[IERC20-transfer-address-uint256-]]
==== `pass:normal[transfer([.var-type\]#address# [.var-name\]#recipient#, [.var-type\]#uint256# [.var-name\]#amount#) → [.var-type\]#bool#]` [.item-kind]#external#

Moves `amount` tokens from the caller's account to `recipient`.

Returns a boolean value indicating whether the operation succeeded.

Emits a {Transfer} event.

[.contract-item]
[[IERC20-allowance-address-address-]]
==== `pass:normal[allowance([.var-type\]#address# [.var-name\]#owner#, [.var-type\]#address# [.var-name\]#spender#) → [.var-type\]#uint256#]` [.item-kind]#external#

Returns the remaining number of tokens that `spender` will be
allowed to spend on behalf of `owner` through {transferFrom}. This is
zero by default.

This value changes when {approve} or {transferFrom} are called.

[.contract-item]
[[IERC20-approve-address-uint256-]]
==== `pass:normal[approve([.var-type\]#address# [.var-name\]#spender#, [.var-type\]#uint256# [.var-name\]#amount#) → [.var-type\]#bool#]` [.item-kind]#external#

Sets `amount` as the allowance of `spender` over the caller's tokens.

Returns a boolean value indicating whether the operation succeeded.

IMPORTANT: Beware that changing an allowance with this method brings the risk
that someone may use both the old and the new allowance by unfortunate
transaction ordering. One possible solution to mitigate this race
condition is to first reduce the spender's allowance to 0 and set the
desired value afterwards:
https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729

Emits an {Approval} event.

[.contract-item]
[[IERC20-transferFrom-address-address-uint256-]]
==== `pass:normal[transferFrom([.var-type\]#address# [.var-name\]#sender#, [.var-type\]#address# [.var-name\]#recipient#, [.var-type\]#uint256# [.var-name\]#amount#) → [.var-type\]#bool#]` [.item-kind]#external#

Moves `amount` tokens from `sender` to `recipient` using the
allowance mechanism. `amount` is then deducted from the caller's
allowance.

Returns a boolean value indicating whether the operation succeeded.

Emits a {Transfer} event.


[.contract-item]
[[IERC20-Transfer-address-address-uint256-]]
==== `pass:normal[Transfer([.var-type\]#address# [.var-name\]#from#, [.var-type\]#address# [.var-name\]#to#, [.var-type\]#uint256# [.var-name\]#value#)]` [.item-kind]#event#

Emitted when `value` tokens are moved from one account (`from`) to
another (`to`).

Note that `value` may be zero.

[.contract-item]
[[IERC20-Approval-address-address-uint256-]]
==== `pass:normal[Approval([.var-type\]#address# [.var-name\]#owner#, [.var-type\]#address# [.var-name\]#spender#, [.var-type\]#uint256# [.var-name\]#value#)]` [.item-kind]#event#

Emitted when the allowance of a `spender` for an `owner` is set by
a call to {approve}. `value` is the new allowance.



:ERC20: pass:normal[xref:#ERC20[`ERC20`]]
:totalSupply: pass:normal[xref:#ERC20-totalSupply--[`totalSupply`]]
:balanceOf: pass:normal[xref:#ERC20-balanceOf-address-[`balanceOf`]]
:transfer: pass:normal[xref:#ERC20-transfer-address-uint256-[`transfer`]]
:allowance: pass:normal[xref:#ERC20-allowance-address-address-[`allowance`]]
:approve: pass:normal[xref:#ERC20-approve-address-uint256-[`approve`]]
:transferFrom: pass:normal[xref:#ERC20-transferFrom-address-address-uint256-[`transferFrom`]]
:increaseAllowance: pass:normal[xref:#ERC20-increaseAllowance-address-uint256-[`increaseAllowance`]]
:decreaseAllowance: pass:normal[xref:#ERC20-decreaseAllowance-address-uint256-[`decreaseAllowance`]]
:_transfer: pass:normal[xref:#ERC20-_transfer-address-address-uint256-[`_transfer`]]
:_mint: pass:normal[xref:#ERC20-_mint-address-uint256-[`_mint`]]
:_burn: pass:normal[xref:#ERC20-_burn-address-uint256-[`_burn`]]
:_approve: pass:normal[xref:#ERC20-_approve-address-address-uint256-[`_approve`]]
:_burnFrom: pass:normal[xref:#ERC20-_burnFrom-address-uint256-[`_burnFrom`]]

[.contract]
[[ERC20]]
=== `ERC20`

Implementation of the {IERC20} interface.

This implementation is agnostic to the way tokens are created. This means
that a supply mechanism has to be added in a derived contract using {_mint}.
For a generic mechanism see {ERC20Mintable}.

TIP: For a detailed writeup see our guide
https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
to implement supply mechanisms].

We have followed general OpenZeppelin guidelines: functions revert instead
of returning `false` on failure. This behavior is nonetheless conventional
and does not conflict with the expectations of ERC20 applications.

Additionally, an {Approval} event is emitted on calls to {transferFrom}.
This allows applications to reconstruct the allowance for all accounts just
by listening to said events. Other implementations of the EIP may not emit
these events, as it isn't required by the specification.

Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
functions have been added to mitigate the well-known issues around setting
allowances. See {IERC20-approve}.


[.contract-index]
.Functions
--
* {xref-ERC20-totalSupply}[`totalSupply()`]
* {xref-ERC20-balanceOf}[`balanceOf(account)`]
* {xref-ERC20-transfer}[`transfer(recipient, amount)`]
* {xref-ERC20-allowance}[`allowance(owner, spender)`]
* {xref-ERC20-approve}[`approve(spender, amount)`]
* {xref-ERC20-transferFrom}[`transferFrom(sender, recipient, amount)`]
* {xref-ERC20-increaseAllowance}[`increaseAllowance(spender, addedValue)`]
* {xref-ERC20-decreaseAllowance}[`decreaseAllowance(spender, subtractedValue)`]
* {xref-ERC20-_transfer}[`_transfer(sender, recipient, amount)`]
* {xref-ERC20-_mint}[`_mint(account, amount)`]
* {xref-ERC20-_burn}[`_burn(account, amount)`]
* {xref-ERC20-_approve}[`_approve(owner, spender, amount)`]
* {xref-ERC20-_burnFrom}[`_burnFrom(account, amount)`]

[.contract-subindex-inherited]
.IERC20

[.contract-subindex-inherited]
.Context
* {xref-Context-constructor}[`constructor()`]
* {xref-Context-_msgSender}[`_msgSender()`]
* {xref-Context-_msgData}[`_msgData()`]

--

[.contract-index]
.Events
--

[.contract-subindex-inherited]
.IERC20
* {xref-IERC20-Transfer}[`Transfer(from, to, value)`]
* {xref-IERC20-Approval}[`Approval(owner, spender, value)`]

[.contract-subindex-inherited]
.Context

--


[.contract-item]
[[ERC20-totalSupply--]]
==== `pass:normal[totalSupply() → [.var-type\]#uint256#]` [.item-kind]#public#

See {IERC20-totalSupply}.

[.contract-item]
[[ERC20-balanceOf-address-]]
==== `pass:normal[balanceOf([.var-type\]#address# [.var-name\]#account#) → [.var-type\]#uint256#]` [.item-kind]#public#

See {IERC20-balanceOf}.

[.contract-item]
[[ERC20-transfer-address-uint256-]]
==== `pass:normal[transfer([.var-type\]#address# [.var-name\]#recipient#, [.var-type\]#uint256# [.var-name\]#amount#) → [.var-type\]#bool#]` [.item-kind]#public#

See {IERC20-transfer}.

Requirements:

- `recipient` cannot be the zero address.
- the caller must have a balance of at least `amount`.

[.contract-item]
[[ERC20-allowance-address-address-]]
==== `pass:normal[allowance([.var-type\]#address# [.var-name\]#owner#, [.var-type\]#address# [.var-name\]#spender#) → [.var-type\]#uint256#]` [.item-kind]#public#

See {IERC20-allowance}.

[.contract-item]
[[ERC20-approve-address-uint256-]]
==== `pass:normal[approve([.var-type\]#address# [.var-name\]#spender#, [.var-type\]#uint256# [.var-name\]#amount#) → [.var-type\]#bool#]` [.item-kind]#public#

See {IERC20-approve}.

Requirements:

- `spender` cannot be the zero address.

[.contract-item]
[[ERC20-transferFrom-address-address-uint256-]]
==== `pass:normal[transferFrom([.var-type\]#address# [.var-name\]#sender#, [.var-type\]#address# [.var-name\]#recipient#, [.var-type\]#uint256# [.var-name\]#amount#) → [.var-type\]#bool#]` [.item-kind]#public#

See {IERC20-transferFrom}.

Emits an {Approval} event indicating the updated allowance. This is not
required by the EIP. See the note at the beginning of {ERC20};

Requirements:
- `sender` and `recipient` cannot be the zero address.
- `sender` must have a balance of at least `amount`.
- the caller must have allowance for `sender`'s tokens of at least
`amount`.

[.contract-item]
[[ERC20-increaseAllowance-address-uint256-]]
==== `pass:normal[increaseAllowance([.var-type\]#address# [.var-name\]#spender#, [.var-type\]#uint256# [.var-name\]#addedValue#) → [.var-type\]#bool#]` [.item-kind]#public#

Atomically increases the allowance granted to `spender` by the caller.

This is an alternative to {approve} that can be used as a mitigation for
problems described in {IERC20-approve}.

Emits an {Approval} event indicating the updated allowance.

Requirements:

- `spender` cannot be the zero address.

[.contract-item]
[[ERC20-decreaseAllowance-address-uint256-]]
==== `pass:normal[decreaseAllowance([.var-type\]#address# [.var-name\]#spender#, [.var-type\]#uint256# [.var-name\]#subtractedValue#) → [.var-type\]#bool#]` [.item-kind]#public#

Atomically decreases the allowance granted to `spender` by the caller.

This is an alternative to {approve} that can be used as a mitigation for
problems described in {IERC20-approve}.

Emits an {Approval} event indicating the updated allowance.

Requirements:

- `spender` cannot be the zero address.
- `spender` must have allowance for the caller of at least
`subtractedValue`.

[.contract-item]
[[ERC20-_transfer-address-address-uint256-]]
==== `pass:normal[_transfer([.var-type\]#address# [.var-name\]#sender#, [.var-type\]#address# [.var-name\]#recipient#, [.var-type\]#uint256# [.var-name\]#amount#)]` [.item-kind]#internal#

Moves tokens `amount` from `sender` to `recipient`.

This is internal function is equivalent to {transfer}, and can be used to
e.g. implement automatic token fees, slashing mechanisms, etc.

Emits a {Transfer} event.

Requirements:

- `sender` cannot be the zero address.
- `recipient` cannot be the zero address.
- `sender` must have a balance of at least `amount`.

[.contract-item]
[[ERC20-_mint-address-uint256-]]
==== `pass:normal[_mint([.var-type\]#address# [.var-name\]#account#, [.var-type\]#uint256# [.var-name\]#amount#)]` [.item-kind]#internal#

Creates `amount` tokens and assigns them to `account`, increasing
the total supply.

Emits a {Transfer} event with `from` set to the zero address.

Requirements

- `to` cannot be the zero address.

[.contract-item]
[[ERC20-_burn-address-uint256-]]
==== `pass:normal[_burn([.var-type\]#address# [.var-name\]#account#, [.var-type\]#uint256# [.var-name\]#amount#)]` [.item-kind]#internal#

Destroys `amount` tokens from `account`, reducing the
total supply.

Emits a {Transfer} event with `to` set to the zero address.

Requirements

- `account` cannot be the zero address.
- `account` must have at least `amount` tokens.

[.contract-item]
[[ERC20-_approve-address-address-uint256-]]
==== `pass:normal[_approve([.var-type\]#address# [.var-name\]#owner#, [.var-type\]#address# [.var-name\]#spender#, [.var-type\]#uint256# [.var-name\]#amount#)]` [.item-kind]#internal#

Sets `amount` as the allowance of `spender` over the `owner`s tokens.

This is internal function is equivalent to `approve`, and can be used to
e.g. set automatic allowances for certain subsystems, etc.

Emits an {Approval} event.

Requirements:

- `owner` cannot be the zero address.
- `spender` cannot be the zero address.

[.contract-item]
[[ERC20-_burnFrom-address-uint256-]]
==== `pass:normal[_burnFrom([.var-type\]#address# [.var-name\]#account#, [.var-type\]#uint256# [.var-name\]#amount#)]` [.item-kind]#internal#

Destroys `amount` tokens from `account`.`amount` is then deducted
from the caller's allowance.

See {_burn} and {_approve}.




:ERC20Detailed: pass:normal[xref:#ERC20Detailed[`ERC20Detailed`]]
:constructor: pass:normal[xref:#ERC20Detailed-constructor-string-string-uint8-[`constructor`]]
:name: pass:normal[xref:#ERC20Detailed-name--[`name`]]
:symbol: pass:normal[xref:#ERC20Detailed-symbol--[`symbol`]]
:decimals: pass:normal[xref:#ERC20Detailed-decimals--[`decimals`]]

[.contract]
[[ERC20Detailed]]
=== `ERC20Detailed`

Optional functions from the ERC20 standard.


[.contract-index]
.Functions
--
* {xref-ERC20Detailed-constructor}[`constructor(name, symbol, decimals)`]
* {xref-ERC20Detailed-name}[`name()`]
* {xref-ERC20Detailed-symbol}[`symbol()`]
* {xref-ERC20Detailed-decimals}[`decimals()`]

[.contract-subindex-inherited]
.IERC20
* {xref-IERC20-totalSupply}[`totalSupply()`]
* {xref-IERC20-balanceOf}[`balanceOf(account)`]
* {xref-IERC20-transfer}[`transfer(recipient, amount)`]
* {xref-IERC20-allowance}[`allowance(owner, spender)`]
* {xref-IERC20-approve}[`approve(spender, amount)`]
* {xref-IERC20-transferFrom}[`transferFrom(sender, recipient, amount)`]

--

[.contract-index]
.Events
--

[.contract-subindex-inherited]
.IERC20
* {xref-IERC20-Transfer}[`Transfer(from, to, value)`]
* {xref-IERC20-Approval}[`Approval(owner, spender, value)`]

--


[.contract-item]
[[ERC20Detailed-constructor-string-string-uint8-]]
==== `pass:normal[constructor([.var-type\]#string# [.var-name\]#name#, [.var-type\]#string# [.var-name\]#symbol#, [.var-type\]#uint8# [.var-name\]#decimals#)]` [.item-kind]#public#

Sets the values for `name`, `symbol`, and `decimals`. All three of
these values are immutable: they can only be set once during
construction.

[.contract-item]
[[ERC20Detailed-name--]]
==== `pass:normal[name() → [.var-type\]#string#]` [.item-kind]#public#

Returns the name of the token.

[.contract-item]
[[ERC20Detailed-symbol--]]
==== `pass:normal[symbol() → [.var-type\]#string#]` [.item-kind]#public#

Returns the symbol of the token, usually a shorter version of the
name.

[.contract-item]
[[ERC20Detailed-decimals--]]
==== `pass:normal[decimals() → [.var-type\]#uint8#]` [.item-kind]#public#

Returns the number of decimals used to get its user representation.
For example, if `decimals` equals `2`, a balance of `505` tokens should
be displayed to a user as `5,05` (`505 / 10 ** 2`).

Tokens usually opt for a value of 18, imitating the relationship between
Ether and Wei.

NOTE: This information is only used for _display_ purposes: it in
no way affects any of the arithmetic of the contract, including
{IERC20-balanceOf} and {IERC20-transfer}.




== Extensions

:ERC20Mintable: pass:normal[xref:#ERC20Mintable[`ERC20Mintable`]]
:mint: pass:normal[xref:#ERC20Mintable-mint-address-uint256-[`mint`]]

[.contract]
[[ERC20Mintable]]
=== `ERC20Mintable`

Extension of {ERC20} that adds a set of accounts with the {MinterRole},
which have permission to mint (create) new tokens as they see fit.

At construction, the deployer of the contract is the only minter.

[.contract-index]
.Modifiers
--

[.contract-subindex-inherited]
.MinterRole
* {xref-MinterRole-onlyMinter}[`onlyMinter()`]

[.contract-subindex-inherited]
.ERC20

[.contract-subindex-inherited]
.IERC20

[.contract-subindex-inherited]
.Context

--

[.contract-index]
.Functions
--
* {xref-ERC20Mintable-mint}[`mint(account, amount)`]

[.contract-subindex-inherited]
.MinterRole
* {xref-MinterRole-constructor}[`constructor()`]
* {xref-MinterRole-isMinter}[`isMinter(account)`]
* {xref-MinterRole-addMinter}[`addMinter(account)`]
* {xref-MinterRole-renounceMinter}[`renounceMinter()`]
* {xref-MinterRole-_addMinter}[`_addMinter(account)`]
* {xref-MinterRole-_removeMinter}[`_removeMinter(account)`]

[.contract-subindex-inherited]
.ERC20
* {xref-ERC20-totalSupply}[`totalSupply()`]
* {xref-ERC20-balanceOf}[`balanceOf(account)`]
* {xref-ERC20-transfer}[`transfer(recipient, amount)`]
* {xref-ERC20-allowance}[`allowance(owner, spender)`]
* {xref-ERC20-approve}[`approve(spender, amount)`]
* {xref-ERC20-transferFrom}[`transferFrom(sender, recipient, amount)`]
* {xref-ERC20-increaseAllowance}[`increaseAllowance(spender, addedValue)`]
* {xref-ERC20-decreaseAllowance}[`decreaseAllowance(spender, subtractedValue)`]
* {xref-ERC20-_transfer}[`_transfer(sender, recipient, amount)`]
* {xref-ERC20-_mint}[`_mint(account, amount)`]
* {xref-ERC20-_burn}[`_burn(account, amount)`]
* {xref-ERC20-_approve}[`_approve(owner, spender, amount)`]
* {xref-ERC20-_burnFrom}[`_burnFrom(account, amount)`]

[.contract-subindex-inherited]
.IERC20

[.contract-subindex-inherited]
.Context
* {xref-Context-_msgSender}[`_msgSender()`]
* {xref-Context-_msgData}[`_msgData()`]

--

[.contract-index]
.Events
--

[.contract-subindex-inherited]
.MinterRole
* {xref-MinterRole-MinterAdded}[`MinterAdded(account)`]
* {xref-MinterRole-MinterRemoved}[`MinterRemoved(account)`]

[.contract-subindex-inherited]
.ERC20

[.contract-subindex-inherited]
.IERC20
* {xref-IERC20-Transfer}[`Transfer(from, to, value)`]
* {xref-IERC20-Approval}[`Approval(owner, spender, value)`]

[.contract-subindex-inherited]
.Context

--


[.contract-item]
[[ERC20Mintable-mint-address-uint256-]]
==== `pass:normal[mint([.var-type\]#address# [.var-name\]#account#, [.var-type\]#uint256# [.var-name\]#amount#) → [.var-type\]#bool#]` [.item-kind]#public#

See {ERC20-_mint}.

Requirements:

- the caller must have the {MinterRole}.




:ERC20Burnable: pass:normal[xref:#ERC20Burnable[`ERC20Burnable`]]
:burn: pass:normal[xref:#ERC20Burnable-burn-uint256-[`burn`]]
:burnFrom: pass:normal[xref:#ERC20Burnable-burnFrom-address-uint256-[`burnFrom`]]

[.contract]
[[ERC20Burnable]]
=== `ERC20Burnable`

Extension of {ERC20} that allows token holders to destroy both their own
tokens and those that they have an allowance for, in a way that can be
recognized off-chain (via event analysis).


[.contract-index]
.Functions
--
* {xref-ERC20Burnable-burn}[`burn(amount)`]
* {xref-ERC20Burnable-burnFrom}[`burnFrom(account, amount)`]

[.contract-subindex-inherited]
.ERC20
* {xref-ERC20-totalSupply}[`totalSupply()`]
* {xref-ERC20-balanceOf}[`balanceOf(account)`]
* {xref-ERC20-transfer}[`transfer(recipient, amount)`]
* {xref-ERC20-allowance}[`allowance(owner, spender)`]
* {xref-ERC20-approve}[`approve(spender, amount)`]
* {xref-ERC20-transferFrom}[`transferFrom(sender, recipient, amount)`]
* {xref-ERC20-increaseAllowance}[`increaseAllowance(spender, addedValue)`]
* {xref-ERC20-decreaseAllowance}[`decreaseAllowance(spender, subtractedValue)`]
* {xref-ERC20-_transfer}[`_transfer(sender, recipient, amount)`]
* {xref-ERC20-_mint}[`_mint(account, amount)`]
* {xref-ERC20-_burn}[`_burn(account, amount)`]
* {xref-ERC20-_approve}[`_approve(owner, spender, amount)`]
* {xref-ERC20-_burnFrom}[`_burnFrom(account, amount)`]

[.contract-subindex-inherited]
.IERC20

[.contract-subindex-inherited]
.Context
* {xref-Context-constructor}[`constructor()`]
* {xref-Context-_msgSender}[`_msgSender()`]
* {xref-Context-_msgData}[`_msgData()`]

--

[.contract-index]
.Events
--

[.contract-subindex-inherited]
.ERC20

[.contract-subindex-inherited]
.IERC20
* {xref-IERC20-Transfer}[`Transfer(from, to, value)`]
* {xref-IERC20-Approval}[`Approval(owner, spender, value)`]

[.contract-subindex-inherited]
.Context

--


[.contract-item]
[[ERC20Burnable-burn-uint256-]]
==== `pass:normal[burn([.var-type\]#uint256# [.var-name\]#amount#)]` [.item-kind]#public#

Destroys `amount` tokens from the caller.

See {ERC20-_burn}.

[.contract-item]
[[ERC20Burnable-burnFrom-address-uint256-]]
==== `pass:normal[burnFrom([.var-type\]#address# [.var-name\]#account#, [.var-type\]#uint256# [.var-name\]#amount#)]` [.item-kind]#public#

See {ERC20-_burnFrom}.




:ERC20Pausable: pass:normal[xref:#ERC20Pausable[`ERC20Pausable`]]
:transfer: pass:normal[xref:#ERC20Pausable-transfer-address-uint256-[`transfer`]]
:transferFrom: pass:normal[xref:#ERC20Pausable-transferFrom-address-address-uint256-[`transferFrom`]]
:approve: pass:normal[xref:#ERC20Pausable-approve-address-uint256-[`approve`]]
:increaseAllowance: pass:normal[xref:#ERC20Pausable-increaseAllowance-address-uint256-[`increaseAllowance`]]
:decreaseAllowance: pass:normal[xref:#ERC20Pausable-decreaseAllowance-address-uint256-[`decreaseAllowance`]]

[.contract]
[[ERC20Pausable]]
=== `ERC20Pausable`

ERC20 with pausable transfers and allowances.

Useful if you want to stop trades until the end of a crowdsale, or have
an emergency switch for freezing all token transfers in the event of a large
bug.

[.contract-index]
.Modifiers
--

[.contract-subindex-inherited]
.Pausable
* {xref-Pausable-whenNotPaused}[`whenNotPaused()`]
* {xref-Pausable-whenPaused}[`whenPaused()`]

[.contract-subindex-inherited]
.PauserRole
* {xref-PauserRole-onlyPauser}[`onlyPauser()`]

[.contract-subindex-inherited]
.ERC20

[.contract-subindex-inherited]
.IERC20

[.contract-subindex-inherited]
.Context

--

[.contract-index]
.Functions
--
* {xref-ERC20Pausable-transfer}[`transfer(to, value)`]
* {xref-ERC20Pausable-transferFrom}[`transferFrom(from, to, value)`]
* {xref-ERC20Pausable-approve}[`approve(spender, value)`]
* {xref-ERC20Pausable-increaseAllowance}[`increaseAllowance(spender, addedValue)`]
* {xref-ERC20Pausable-decreaseAllowance}[`decreaseAllowance(spender, subtractedValue)`]

[.contract-subindex-inherited]
.Pausable
* {xref-Pausable-constructor}[`constructor()`]
* {xref-Pausable-paused}[`paused()`]
* {xref-Pausable-pause}[`pause()`]
* {xref-Pausable-unpause}[`unpause()`]

[.contract-subindex-inherited]
.PauserRole
* {xref-PauserRole-isPauser}[`isPauser(account)`]
* {xref-PauserRole-addPauser}[`addPauser(account)`]
* {xref-PauserRole-renouncePauser}[`renouncePauser()`]
* {xref-PauserRole-_addPauser}[`_addPauser(account)`]
* {xref-PauserRole-_removePauser}[`_removePauser(account)`]

[.contract-subindex-inherited]
.ERC20
* {xref-ERC20-totalSupply}[`totalSupply()`]
* {xref-ERC20-balanceOf}[`balanceOf(account)`]
* {xref-ERC20-allowance}[`allowance(owner, spender)`]
* {xref-ERC20-_transfer}[`_transfer(sender, recipient, amount)`]
* {xref-ERC20-_mint}[`_mint(account, amount)`]
* {xref-ERC20-_burn}[`_burn(account, amount)`]
* {xref-ERC20-_approve}[`_approve(owner, spender, amount)`]
* {xref-ERC20-_burnFrom}[`_burnFrom(account, amount)`]

[.contract-subindex-inherited]
.IERC20

[.contract-subindex-inherited]
.Context
* {xref-Context-_msgSender}[`_msgSender()`]
* {xref-Context-_msgData}[`_msgData()`]

--

[.contract-index]
.Events
--

[.contract-subindex-inherited]
.Pausable
* {xref-Pausable-Paused}[`Paused(account)`]
* {xref-Pausable-Unpaused}[`Unpaused(account)`]

[.contract-subindex-inherited]
.PauserRole
* {xref-PauserRole-PauserAdded}[`PauserAdded(account)`]
* {xref-PauserRole-PauserRemoved}[`PauserRemoved(account)`]

[.contract-subindex-inherited]
.ERC20

[.contract-subindex-inherited]
.IERC20
* {xref-IERC20-Transfer}[`Transfer(from, to, value)`]
* {xref-IERC20-Approval}[`Approval(owner, spender, value)`]

[.contract-subindex-inherited]
.Context

--


[.contract-item]
[[ERC20Pausable-transfer-address-uint256-]]
==== `pass:normal[transfer([.var-type\]#address# [.var-name\]#to#, [.var-type\]#uint256# [.var-name\]#value#) → [.var-type\]#bool#]` [.item-kind]#public#



[.contract-item]
[[ERC20Pausable-transferFrom-address-address-uint256-]]
==== `pass:normal[transferFrom([.var-type\]#address# [.var-name\]#from#, [.var-type\]#address# [.var-name\]#to#, [.var-type\]#uint256# [.var-name\]#value#) → [.var-type\]#bool#]` [.item-kind]#public#



[.contract-item]
[[ERC20Pausable-approve-address-uint256-]]
==== `pass:normal[approve([.var-type\]#address# [.var-name\]#spender#, [.var-type\]#uint256# [.var-name\]#value#) → [.var-type\]#bool#]` [.item-kind]#public#



[.contract-item]
[[ERC20Pausable-increaseAllowance-address-uint256-]]
==== `pass:normal[increaseAllowance([.var-type\]#address# [.var-name\]#spender#, [.var-type\]#uint256# [.var-name\]#addedValue#) → [.var-type\]#bool#]` [.item-kind]#public#



[.contract-item]
[[ERC20Pausable-decreaseAllowance-address-uint256-]]
==== `pass:normal[decreaseAllowance([.var-type\]#address# [.var-name\]#spender#, [.var-type\]#uint256# [.var-name\]#subtractedValue#) → [.var-type\]#bool#]` [.item-kind]#public#






:ERC20Capped: pass:normal[xref:#ERC20Capped[`ERC20Capped`]]
:constructor: pass:normal[xref:#ERC20Capped-constructor-uint256-[`constructor`]]
:cap: pass:normal[xref:#ERC20Capped-cap--[`cap`]]
:_mint: pass:normal[xref:#ERC20Capped-_mint-address-uint256-[`_mint`]]

[.contract]
[[ERC20Capped]]
=== `ERC20Capped`

Extension of {ERC20Mintable} that adds a cap to the supply of tokens.

[.contract-index]
.Modifiers
--

[.contract-subindex-inherited]
.ERC20Mintable

[.contract-subindex-inherited]
.MinterRole
* {xref-MinterRole-onlyMinter}[`onlyMinter()`]

[.contract-subindex-inherited]
.ERC20

[.contract-subindex-inherited]
.IERC20

[.contract-subindex-inherited]
.Context

--

[.contract-index]
.Functions
--
* {xref-ERC20Capped-constructor}[`constructor(cap)`]
* {xref-ERC20Capped-cap}[`cap()`]
* {xref-ERC20Capped-_mint}[`_mint(account, value)`]

[.contract-subindex-inherited]
.ERC20Mintable
* {xref-ERC20Mintable-mint}[`mint(account, amount)`]

[.contract-subindex-inherited]
.MinterRole
* {xref-MinterRole-isMinter}[`isMinter(account)`]
* {xref-MinterRole-addMinter}[`addMinter(account)`]
* {xref-MinterRole-renounceMinter}[`renounceMinter()`]
* {xref-MinterRole-_addMinter}[`_addMinter(account)`]
* {xref-MinterRole-_removeMinter}[`_removeMinter(account)`]

[.contract-subindex-inherited]
.ERC20
* {xref-ERC20-totalSupply}[`totalSupply()`]
* {xref-ERC20-balanceOf}[`balanceOf(account)`]
* {xref-ERC20-transfer}[`transfer(recipient, amount)`]
* {xref-ERC20-allowance}[`allowance(owner, spender)`]
* {xref-ERC20-approve}[`approve(spender, amount)`]
* {xref-ERC20-transferFrom}[`transferFrom(sender, recipient, amount)`]
* {xref-ERC20-increaseAllowance}[`increaseAllowance(spender, addedValue)`]
* {xref-ERC20-decreaseAllowance}[`decreaseAllowance(spender, subtractedValue)`]
* {xref-ERC20-_transfer}[`_transfer(sender, recipient, amount)`]
* {xref-ERC20-_burn}[`_burn(account, amount)`]
* {xref-ERC20-_approve}[`_approve(owner, spender, amount)`]
* {xref-ERC20-_burnFrom}[`_burnFrom(account, amount)`]

[.contract-subindex-inherited]
.IERC20

[.contract-subindex-inherited]
.Context
* {xref-Context-_msgSender}[`_msgSender()`]
* {xref-Context-_msgData}[`_msgData()`]

--

[.contract-index]
.Events
--

[.contract-subindex-inherited]
.ERC20Mintable

[.contract-subindex-inherited]
.MinterRole
* {xref-MinterRole-MinterAdded}[`MinterAdded(account)`]
* {xref-MinterRole-MinterRemoved}[`MinterRemoved(account)`]

[.contract-subindex-inherited]
.ERC20

[.contract-subindex-inherited]
.IERC20
* {xref-IERC20-Transfer}[`Transfer(from, to, value)`]
* {xref-IERC20-Approval}[`Approval(owner, spender, value)`]

[.contract-subindex-inherited]
.Context

--


[.contract-item]
[[ERC20Capped-constructor-uint256-]]
==== `pass:normal[constructor([.var-type\]#uint256# [.var-name\]#cap#)]` [.item-kind]#public#

Sets the value of the `cap`. This value is immutable, it can only be
set once during construction.

[.contract-item]
[[ERC20Capped-cap--]]
==== `pass:normal[cap() → [.var-type\]#uint256#]` [.item-kind]#public#

Returns the cap on the token's total supply.

[.contract-item]
[[ERC20Capped-_mint-address-uint256-]]
==== `pass:normal[_mint([.var-type\]#address# [.var-name\]#account#, [.var-type\]#uint256# [.var-name\]#value#)]` [.item-kind]#internal#

See {ERC20Mintable-mint}.

Requirements:

- `value` must not cause the total supply to go over the cap.




== Utilities

:SafeERC20: pass:normal[xref:#SafeERC20[`SafeERC20`]]
:safeTransfer: pass:normal[xref:#SafeERC20-safeTransfer-contract-IERC20-address-uint256-[`safeTransfer`]]
:safeTransferFrom: pass:normal[xref:#SafeERC20-safeTransferFrom-contract-IERC20-address-address-uint256-[`safeTransferFrom`]]
:safeApprove: pass:normal[xref:#SafeERC20-safeApprove-contract-IERC20-address-uint256-[`safeApprove`]]
:safeIncreaseAllowance: pass:normal[xref:#SafeERC20-safeIncreaseAllowance-contract-IERC20-address-uint256-[`safeIncreaseAllowance`]]
:safeDecreaseAllowance: pass:normal[xref:#SafeERC20-safeDecreaseAllowance-contract-IERC20-address-uint256-[`safeDecreaseAllowance`]]

[.contract]
[[SafeERC20]]
=== `SafeERC20`

Wrappers around ERC20 operations that throw on failure (when the token
contract returns false). Tokens that return no value (and instead revert or
throw on failure) are also supported, non-reverting calls are assumed to be
successful.
To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
which allows you to call the safe operations as `token.safeTransfer(...)`, etc.


[.contract-index]
.Functions
--
* {xref-SafeERC20-safeTransfer}[`safeTransfer(token, to, value)`]
* {xref-SafeERC20-safeTransferFrom}[`safeTransferFrom(token, from, to, value)`]
* {xref-SafeERC20-safeApprove}[`safeApprove(token, spender, value)`]
* {xref-SafeERC20-safeIncreaseAllowance}[`safeIncreaseAllowance(token, spender, value)`]
* {xref-SafeERC20-safeDecreaseAllowance}[`safeDecreaseAllowance(token, spender, value)`]

--



[.contract-item]
[[SafeERC20-safeTransfer-contract-IERC20-address-uint256-]]
==== `pass:normal[safeTransfer([.var-type\]#contract IERC20# [.var-name\]#token#, [.var-type\]#address# [.var-name\]#to#, [.var-type\]#uint256# [.var-name\]#value#)]` [.item-kind]#internal#



[.contract-item]
[[SafeERC20-safeTransferFrom-contract-IERC20-address-address-uint256-]]
==== `pass:normal[safeTransferFrom([.var-type\]#contract IERC20# [.var-name\]#token#, [.var-type\]#address# [.var-name\]#from#, [.var-type\]#address# [.var-name\]#to#, [.var-type\]#uint256# [.var-name\]#value#)]` [.item-kind]#internal#



[.contract-item]
[[SafeERC20-safeApprove-contract-IERC20-address-uint256-]]
==== `pass:normal[safeApprove([.var-type\]#contract IERC20# [.var-name\]#token#, [.var-type\]#address# [.var-name\]#spender#, [.var-type\]#uint256# [.var-name\]#value#)]` [.item-kind]#internal#



[.contract-item]
[[SafeERC20-safeIncreaseAllowance-contract-IERC20-address-uint256-]]
==== `pass:normal[safeIncreaseAllowance([.var-type\]#contract IERC20# [.var-name\]#token#, [.var-type\]#address# [.var-name\]#spender#, [.var-type\]#uint256# [.var-name\]#value#)]` [.item-kind]#internal#



[.contract-item]
[[SafeERC20-safeDecreaseAllowance-contract-IERC20-address-uint256-]]
==== `pass:normal[safeDecreaseAllowance([.var-type\]#contract IERC20# [.var-name\]#token#, [.var-type\]#address# [.var-name\]#spender#, [.var-type\]#uint256# [.var-name\]#value#)]` [.item-kind]#internal#






:TokenTimelock: pass:normal[xref:#TokenTimelock[`TokenTimelock`]]
:constructor: pass:normal[xref:#TokenTimelock-constructor-contract-IERC20-address-uint256-[`constructor`]]
:token: pass:normal[xref:#TokenTimelock-token--[`token`]]
:beneficiary: pass:normal[xref:#TokenTimelock-beneficiary--[`beneficiary`]]
:releaseTime: pass:normal[xref:#TokenTimelock-releaseTime--[`releaseTime`]]
:release: pass:normal[xref:#TokenTimelock-release--[`release`]]

[.contract]
[[TokenTimelock]]
=== `TokenTimelock`

A token holder contract that will allow a beneficiary to extract the
tokens after a given release time.

Useful for simple vesting schedules like "advisors get all of their tokens
after 1 year".

For a more complete vesting schedule, see {TokenVesting}.


[.contract-index]
.Functions
--
* {xref-TokenTimelock-constructor}[`constructor(token, beneficiary, releaseTime)`]
* {xref-TokenTimelock-token}[`token()`]
* {xref-TokenTimelock-beneficiary}[`beneficiary()`]
* {xref-TokenTimelock-releaseTime}[`releaseTime()`]
* {xref-TokenTimelock-release}[`release()`]

--



[.contract-item]
[[TokenTimelock-constructor-contract-IERC20-address-uint256-]]
==== `pass:normal[constructor([.var-type\]#contract IERC20# [.var-name\]#token#, [.var-type\]#address# [.var-name\]#beneficiary#, [.var-type\]#uint256# [.var-name\]#releaseTime#)]` [.item-kind]#public#



[.contract-item]
[[TokenTimelock-token--]]
==== `pass:normal[token() → [.var-type\]#contract IERC20#]` [.item-kind]#public#



[.contract-item]
[[TokenTimelock-beneficiary--]]
==== `pass:normal[beneficiary() → [.var-type\]#address#]` [.item-kind]#public#



[.contract-item]
[[TokenTimelock-releaseTime--]]
==== `pass:normal[releaseTime() → [.var-type\]#uint256#]` [.item-kind]#public#



[.contract-item]
[[TokenTimelock-release--]]
==== `pass:normal[release()]` [.item-kind]#public#





