{
  "schema": "numina.nusd.contract-candidate.v2",
  "contractName": "NuminaUSD",
  "sourceName": "contracts/NuminaUSD.sol",
  "compiler": "0.8.37+commit.f401782d.Emscripten.clang",
  "compilerSettings": {
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "evmVersion": "london",
    "metadata": {
      "bytecodeHash": "ipfs"
    },
    "outputSelection": {
      "*": {
        "*": [
          "abi",
          "evm.bytecode.object",
          "evm.deployedBytecode.object",
          "evm.deployedBytecode.immutableReferences",
          "metadata"
        ],
        "": [
          "ast"
        ]
      }
    }
  },
  "sourceSha256": "3a118007e78ee6e455c6c51528a55b8eeb63e2ec5c294e7c71757804df0871bf",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "supplyCapBaseUnits",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "initialSupplyBaseUnits",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "initialRecipient",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "issuer",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "minter",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "pauser",
          "type": "address"
        },
        {
          "internalType": "uint48",
          "name": "adminDelaySeconds",
          "type": "uint48"
        },
        {
          "internalType": "bytes32",
          "name": "approvedIssuerPolicyHash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AccessControlBadConfirmation",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint48",
          "name": "schedule",
          "type": "uint48"
        }
      ],
      "name": "AccessControlEnforcedDefaultAdminDelay",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AccessControlEnforcedDefaultAdminRules",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "defaultAdmin",
          "type": "address"
        }
      ],
      "name": "AccessControlInvalidDefaultAdmin",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "neededRole",
          "type": "bytes32"
        }
      ],
      "name": "AccessControlUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "increasedSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "cap",
          "type": "uint256"
        }
      ],
      "name": "ERC20ExceededCap",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allowance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientAllowance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "approver",
          "type": "address"
        }
      ],
      "name": "ERC20InvalidApprover",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "cap",
          "type": "uint256"
        }
      ],
      "name": "ERC20InvalidCap",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "ERC20InvalidReceiver",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "ERC20InvalidSender",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "ERC20InvalidSpender",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "EnforcedPause",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ExpectedPause",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidConfiguration",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidIssuance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "reserveReference",
          "type": "bytes32"
        }
      ],
      "name": "IssuanceExpired",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "reserveReference",
          "type": "bytes32"
        }
      ],
      "name": "IssuanceNotAuthorized",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "reserveReference",
          "type": "bytes32"
        }
      ],
      "name": "IssuanceNotExpired",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "reserveReference",
          "type": "bytes32"
        }
      ],
      "name": "IssuanceReferenceAlreadyUsed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotAuthorizedToCancel",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "PrivilegedRoleConflict",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "bits",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "SafeCastOverflowedUintDowncast",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "requested",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "available",
          "type": "uint256"
        }
      ],
      "name": "SupplyReservationExceedsCap",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "UnsupportedRole",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "DefaultAdminDelayChangeCanceled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint48",
          "name": "newDelay",
          "type": "uint48"
        },
        {
          "indexed": false,
          "internalType": "uint48",
          "name": "effectSchedule",
          "type": "uint48"
        }
      ],
      "name": "DefaultAdminDelayChangeScheduled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "DefaultAdminTransferCanceled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint48",
          "name": "acceptSchedule",
          "type": "uint48"
        }
      ],
      "name": "DefaultAdminTransferScheduled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "reserveReference",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "IssuanceAuthorizationExpired",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "reserveReference",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint48",
          "name": "expiresAt",
          "type": "uint48"
        }
      ],
      "name": "IssuanceAuthorized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "reserveReference",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "IssuanceCancelled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "reserveReference",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "IssuanceMinted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ISSUER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_AUTHORIZATION_LIFETIME",
      "outputs": [
        {
          "internalType": "uint48",
          "name": "",
          "type": "uint48"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MINTER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PAUSER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "acceptDefaultAdminTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "reserveReference",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint48",
          "name": "expiresAt",
          "type": "uint48"
        }
      ],
      "name": "authorizeIssuance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "authorizedSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "beginDefaultAdminTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "burnFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cancelDefaultAdminTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "reserveReference",
          "type": "bytes32"
        }
      ],
      "name": "cancelIssuance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint48",
          "name": "newDelay",
          "type": "uint48"
        }
      ],
      "name": "changeDefaultAdminDelay",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultAdmin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultAdminDelay",
      "outputs": [
        {
          "internalType": "uint48",
          "name": "",
          "type": "uint48"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultAdminDelayIncreaseWait",
      "outputs": [
        {
          "internalType": "uint48",
          "name": "",
          "type": "uint48"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "reserveReference",
          "type": "bytes32"
        }
      ],
      "name": "expireIssuance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "reserveReference",
          "type": "bytes32"
        }
      ],
      "name": "issuances",
      "outputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint48",
          "name": "expiresAt",
          "type": "uint48"
        },
        {
          "internalType": "enum NuminaUSD.IssuanceStatus",
          "name": "status",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "issuerPolicyHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "reserveReference",
          "type": "bytes32"
        }
      ],
      "name": "mintAuthorized",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingDefaultAdmin",
      "outputs": [
        {
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        },
        {
          "internalType": "uint48",
          "name": "schedule",
          "type": "uint48"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingDefaultAdminDelay",
      "outputs": [
        {
          "internalType": "uint48",
          "name": "newDelay",
          "type": "uint48"
        },
        {
          "internalType": "uint48",
          "name": "schedule",
          "type": "uint48"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rollbackDefaultAdminDelay",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60c060405234801561001057600080fd5b50604051612a70380380612a7083398101604081905261002f9161078d565b81868a6040518060400160405280600a815260200169139d5b5a5b98481554d160b21b81525060405180604001604052806004815260200163139554d160e21b815250816003908161008191906108db565b50600461008e82826108db565b505050806000036100ba5760405163392e1e2760e01b8152600060048201526024015b60405180910390fd5b6080526001600160a01b0381166100e757604051636116401160e11b8152600060048201526024016100b1565b600780546001600160d01b0316600160d01b65ffffffffffff8516021790556101116000826101c6565b5050506001600160a01b038716158061012957508888115b80610132575080155b156101505760405163c52a9bd360e01b815260040160405180910390fd5b60a081905261016d600080516020612a10833981519152866101c6565b50610186600080516020612a50833981519152856101c6565b5061019f600080516020612a30833981519152846101c6565b5087156101b0576101b087896103f4565b6101b861042e565b5050505050505050506109ba565b600082158015906101e55750600080516020612a108339815191528314155b80156101ff5750600080516020612a508339815191528314155b80156102195750600080516020612a308339815191528314155b1561023a57604051630295705360e11b8152600481018490526024016100b1565b6001600160a01b0382166102615760405163c52a9bd360e01b815260040160405180910390fd5b82158015906102a757506001600160a01b03821660009081527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8602052604090205460ff165b806103025750600080516020612a10833981519152831415801561030257506001600160a01b03821660009081527f702fe919a6a7971e34c596917a48306a624527a41d0aa0fcf43050b6a3053248602052604090205460ff165b8061035d5750600080516020612a50833981519152831415801561035d57506001600160a01b03821660009081527f3195c024b2ddd6d9b8f6c836aa52f67fe69376c8903d009b80229b3ce4425f51602052604090205460ff165b806103b85750600080516020612a3083398151915283141580156103b857506001600160a01b03821660009081527fe09f975e15f8f53f24cbbc282b13c40b84df485fcdb8d3997fa103dc5a4ef841602052604090205460ff165b156103e15760405163a75dd90d60e01b81526001600160a01b03831660048201526024016100b1565b6103eb8383610488565b90505b92915050565b6001600160a01b03821661041e5760405163ec442f0560e01b8152600060048201526024016100b1565b61042a600083836104f0565b5050565b610436610500565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861046b3390565b6040516001600160a01b03909116815260200160405180910390a1565b6000826104e65760006104a36008546001600160a01b031690565b6001600160a01b0316146104ca57604051631fe1e13d60e11b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0384161790555b6103eb8383610526565b6104fb8383836105d4565b505050565b60055460ff16156105245760405163d93c066560e01b815260040160405180910390fd5b565b60008281526006602090815260408083206001600160a01b038516845290915281205460ff166105cc5760008381526006602090815260408083206001600160a01b03861684529091529020805460ff191660011790556105843390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016103ee565b5060006103ee565b6105dc610500565b6104fb8383836105ed838383610647565b6001600160a01b0383166104fb57600061060660805190565b9050600061061360025490565b9050818111156106405760405163279e7e1560e21b815260048101829052602481018390526044016100b1565b5050505050565b6001600160a01b0383166106725780600260008282546106679190610999565b909155506106e49050565b6001600160a01b038316600090815260208190526040902054818110156106c55760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100b1565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166107005760028054829003905561071f565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161076491815260200190565b60405180910390a3505050565b80516001600160a01b038116811461078857600080fd5b919050565b60008060008060008060008060006101208a8c0312156107ac57600080fd5b895160208b015190995097506107c460408b01610771565b96506107d260608b01610771565b95506107e060808b01610771565b94506107ee60a08b01610771565b93506107fc60c08b01610771565b925060e08a015165ffffffffffff8116811461081757600080fd5b809250506101008a015190509295985092959850929598565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061085a57607f821691505b60208210810361087a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156104fb57828211156104fb57806000526020600020601f840160051c60208510156108ae575060005b90810190601f840160051c0360005b818110156108d3576000838201556001016108bd565b505050505050565b81516001600160401b038111156108f4576108f4610830565b610908816109028454610846565b84610880565b6020601f82116001811461093c57600083156109245750848201515b600019600385901b1c1916600184901b178455610640565b600084815260208120601f198516915b8281101561096c578785015182556020948501946001909201910161094c565b508482101561098a5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b808201808211156103ee57634e487b7160e01b600052601160045260246000fd5b60805160a0516120236109ed600039600061046f015260008181610364015281816109530152611a7c01526120236000f3fe608060405234801561001057600080fd5b50600436106102745760003560e01c806370a0823111610151578063a1eda53c116100c3578063cf6eefb711610087578063cf6eefb7146105b4578063d5391393146105e2578063d547741f146105f7578063d602b9fd1461060a578063dd62ed3e14610612578063e63ab1e91461064b57600080fd5b8063a1eda53c14610562578063a217fddf14610589578063a9059cbb14610591578063cc8463c8146105a4578063cefc1429146105ac57600080fd5b80638456cb59116101155780638456cb591461050857806384ef8ffc146105105780638da5cb5b146105355780638f199ac91461053d57806391d148541461054757806395d89b411461055a57600080fd5b806370a082311461049157806378cfacd2146104ba57806379cc6790146104cd578063827bc09d146104e057806382aefa24146104f357600080fd5b8063355274ea116101ea5780635c975abb116101ae5780635c975abb146104135780636209d33a1461041e578063634e93da146104315780636492d4b214610444578063649a5ec7146104575780636bcbfc3c1461046a57600080fd5b8063355274ea1461036257806336568abe146103885780633a7a82f01461039b5780633f4ba83a146103f857806342966c681461040057600080fd5b806318160ddd1161023c57806318160ddd146102ef578063189aff3a1461030157806323b872dd1461030a578063248a9ca31461031d5780632f2ff15d14610340578063313ce5671461035357600080fd5b806301ffc9a714610279578063022d63fb146102a157806306fdde03146102bd578063095ea7b3146102d25780630aa6220b146102e5575b600080fd5b61028c610287366004611c77565b610660565b60405190151581526020015b60405180910390f35b620697805b60405165ffffffffffff9091168152602001610298565b6102c561068b565b6040516102989190611ca1565b61028c6102e0366004611d0b565b61071d565b6102ed610735565b005b6002545b604051908152602001610298565b6102f360095481565b61028c610318366004611d35565b61074b565b6102f361032b366004611d72565b60009081526006602052604090206001015490565b6102ed61034e366004611d8b565b61076f565b60405160068152602001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102f3565b6102ed610396366004611d8b565b61079b565b6103e86103a9366004611d72565b600a602052600090815260409020805460018201546002909201546001600160a01b03909116919065ffffffffffff811690600160301b900460ff1684565b6040516102989493929190611dcd565b6102ed610847565b6102ed61040e366004611d72565b61085a565b60055460ff1661028c565b6102ed61042c366004611e35565b610864565b6102ed61043f366004611e7b565b610ad9565b6102ed610452366004611d72565b610aed565b6102ed610465366004611e96565b610c29565b6102f37f000000000000000000000000000000000000000000000000000000000000000081565b6102f361049f366004611e7b565b6001600160a01b031660009081526020819052604090205490565b6102ed6104c8366004611d72565b610c3d565b6102ed6104db366004611d0b565b610d31565b6102ed6104ee366004611d72565b610d46565b6102f3600080516020611f8e83398151915281565b6102ed610e70565b6008546001600160a01b03165b6040516001600160a01b039091168152602001610298565b61051d610e90565b6102a662093a8081565b61028c610555366004611d8b565b610ea9565b6102c5610ed4565b61056a610ee3565b6040805165ffffffffffff938416815292909116602083015201610298565b6102f3600081565b61028c61059f366004611d0b565b610f37565b6102a6610f45565b6102ed610fa4565b6105bc610fe4565b604080516001600160a01b03909316835265ffffffffffff909116602083015201610298565b6102f3600080516020611fce83398151915281565b6102ed610605366004611d8b565b611005565b6102ed61102d565b6102f3610620366004611eb1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102f3600080516020611fae83398151915281565b60006001600160e01b031982166318a4c3c360e11b1480610685575061068582611040565b92915050565b60606003805461069a90611edb565b80601f01602080910402602001604051908101604052809291908181526020018280546106c690611edb565b80156107135780601f106106e857610100808354040283529160200191610713565b820191906000526020600020905b8154815290600101906020018083116106f657829003601f168201915b5050505050905090565b60003361072b818585611075565b5060019392505050565b600061074081611087565b610748611091565b50565b60003361075985828561109e565b61076485858561111d565b506001949350505050565b8161078d57604051631fe1e13d60e11b815260040160405180910390fd5b610797828261117c565b5050565b811580156107b657506008546001600160a01b038281169116145b1561083d576000806107c6610fe4565b90925090506001600160a01b0382161515806107e8575065ffffffffffff8116155b806107fb57504265ffffffffffff821610155b15610828576040516319ca5ebb60e01b815265ffffffffffff821660048201526024015b60405180910390fd5b50506007805465ffffffffffff60a01b191690555b61079782826111a1565b600061085281611087565b6107486111d4565b6107483382611226565b600080516020611f8e83398151915261087c81611087565b61088461125c565b84158061089857506001600160a01b038416155b806108a1575082155b806108b45750428265ffffffffffff1611155b806108d257506108c762093a8042611f2b565b8265ffffffffffff16115b156108f057604051632163830560e01b815260040160405180910390fd5b600080868152600a6020526040902060020154600160301b900460ff16600481111561091e5761091e611db7565b1461093f57604051632ec9e9c160e01b81526004810186905260240161081f565b600060095461094d60025490565b610977907f0000000000000000000000000000000000000000000000000000000000000000611f3e565b6109819190611f3e565b9050808411156109ae576040516322d3627560e11b8152600481018590526024810182905260440161081f565b83600960008282546109c09190611f2b565b9091555050604080516080810182526001600160a01b03871681526020810186905265ffffffffffff85169181019190915260608101600190526000878152600a6020908152604091829020835181546001600160a01b039091166001600160a01b03199091161781559083015160018201559082015160028201805465ffffffffffff90921665ffffffffffff1983168117825560608501519266ffffffffffffff191617600160301b836004811115610a7d57610a7d611db7565b0217905550506040805186815265ffffffffffff861660208201526001600160a01b038816925088917f9c1ea0308984312de207d6275e96ba79a28157a40553d64ba3300be4e26a74f7910160405180910390a3505050505050565b6000610ae481611087565b61079782611280565b600080516020611fce833981519152610b0581611087565b610b0d61125c565b6000828152600a6020526040902060016002820154600160301b900460ff166004811115610b3d57610b3d611db7565b14610b5e5760405163fc043fbb60e01b81526004810184905260240161081f565b600281015465ffffffffffff164210610b8d576040516346b3be6b60e01b81526004810184905260240161081f565b60028101805460ff60301b19166602000000000000179055600181015460098054600090610bbc908490611f3e565b909155505080546001820154610bdb916001600160a01b0316906112ec565b805460018201546040519081526001600160a01b039091169084907f543630d9db91734da7c7603b66aad214254f753eb88541f62a2ab99084f37bc8906020015b60405180910390a3505050565b6000610c3481611087565b61079782611322565b6000818152600a6020526040902060016002820154600160301b900460ff166004811115610c6d57610c6d611db7565b14610c8e5760405163fc043fbb60e01b81526004810183905260240161081f565b600281015465ffffffffffff16421015610cbe5760405163eaa1e48b60e01b81526004810183905260240161081f565b60028101805460ff60301b19166604000000000000179055600181015460098054600090610ced908490611f3e565b9091555050600181015460405190815282907fec78717fce0c0420227778a84427740f5d3fa71ad5d847c3f75a83c17104b57e906020015b60405180910390a25050565b610d3c82338361109e565b6107978282611226565b610d5e600080516020611f8e83398151915233610ea9565b158015610d805750610d7e600080516020611fae83398151915233610ea9565b155b8015610d945750610d92600033610ea9565b155b15610db45760405163227d6f8b60e01b815233600482015260240161081f565b6000818152600a6020526040902060016002820154600160301b900460ff166004811115610de457610de4611db7565b14610e055760405163fc043fbb60e01b81526004810183905260240161081f565b60028101805460ff60301b19166603000000000000179055600181015460098054600090610e34908490611f3e565b9091555050600181015460405190815282907f90cc6362306f3f31be5afb28b65b25da25e77586e4ca3ac69c3857c1eee0c4c290602001610d25565b600080516020611fae833981519152610e8881611087565b610748611392565b6000610ea46008546001600160a01b031690565b905090565b60009182526006602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461069a90611edb565b600854600090600160d01b900465ffffffffffff168015158015610f0f57504265ffffffffffff821610155b610f1b57600080610f2f565b600854600160a01b900465ffffffffffff16815b915091509091565b60003361072b81858561111d565b600854600090600160d01b900465ffffffffffff168015158015610f7057504265ffffffffffff8216105b610f8b57600754600160d01b900465ffffffffffff16610f9e565b600854600160a01b900465ffffffffffff165b91505090565b6000610fae610fe4565b509050336001600160a01b03821614610fdc57604051636116401160e11b815233600482015260240161081f565b6107486113cf565b6007546001600160a01b03811691600160a01b90910465ffffffffffff1690565b8161102357604051631fe1e13d60e11b815260040160405180910390fd5b6107978282611468565b600061103881611087565b61074861148d565b60006001600160e01b03198216637965db0b60e01b148061068557506301ffc9a760e01b6001600160e01b0319831614610685565b6110828383836001611498565b505050565b610748813361156d565b61109c6000806115a6565b565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811015611117578181101561110857604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161081f565b61111784848484036000611498565b50505050565b6001600160a01b03831661114757604051634b637e8f60e11b81526000600482015260240161081f565b6001600160a01b0382166111715760405163ec442f0560e01b81526000600482015260240161081f565b611082838383611666565b60008281526006602052604090206001015461119781611087565b6111178383611671565b6001600160a01b03811633146111ca5760405163334bd91960e11b815260040160405180910390fd5b6110828282611800565b6111dc61183d565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b03821661125057604051634b637e8f60e11b81526000600482015260240161081f565b61079782600083611666565b60055460ff161561109c5760405163d93c066560e01b815260040160405180910390fd5b600061128a610f45565b61129342611860565b61129d9190611f51565b90506112a98282611897565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed690602001610d25565b6001600160a01b0382166113165760405163ec442f0560e01b81526000600482015260240161081f565b61079760008383611666565b600061132d82611916565b61133642611860565b6113409190611f51565b905061134c82826115a6565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b61139a61125c565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112093390565b6000806113da610fe4565b915091506113ef8165ffffffffffff16151590565b158061140357504265ffffffffffff821610155b1561142b576040516319ca5ebb60e01b815265ffffffffffff8216600482015260240161081f565b61144760006114426008546001600160a01b031690565b611800565b50611453600083611671565b5050600780546001600160d01b031916905550565b60008281526006602052604090206001015461148381611087565b6111178383611800565b61109c600080611897565b6001600160a01b0384166114c25760405163e602df0560e01b81526000600482015260240161081f565b6001600160a01b0383166114ec57604051634a1406b160e11b81526000600482015260240161081f565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561111757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161155f91815260200190565b60405180910390a350505050565b6115778282610ea9565b6107975760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161081f565b600854600160d01b900465ffffffffffff168015611629574265ffffffffffff821610156115ff57600854600780546001600160d01b0316600160a01b90920465ffffffffffff16600160d01b02919091179055611629565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec590600090a15b50600880546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b61108283838361195e565b600082158015906116905750600080516020611f8e8339815191528314155b80156116aa5750600080516020611fce8339815191528314155b80156116c45750600080516020611fae8339815191528314155b156116e557604051630295705360e11b81526004810184905260240161081f565b6001600160a01b03821661170c5760405163c52a9bd360e01b815260040160405180910390fd5b82158015906117215750611721600083610ea9565b806117585750600080516020611f8e83398151915283141580156117585750611758600080516020611f8e83398151915283610ea9565b8061178f5750600080516020611fce833981519152831415801561178f575061178f600080516020611fce83398151915283610ea9565b806117c65750600080516020611fae83398151915283141580156117c657506117c6600080516020611fae83398151915283610ea9565b156117ef5760405163a75dd90d60e01b81526001600160a01b038316600482015260240161081f565b6117f98383611971565b9392505050565b60008215801561181d57506008546001600160a01b038381169116145b1561183357600880546001600160a01b03191690555b6117f983836119d9565b60055460ff1661109c57604051638dfc202b60e01b815260040160405180910390fd5b600065ffffffffffff821115611893576040516306dfcc6560e41b8152603060048201526024810183905260440161081f565b5090565b60006118a1610fe4565b6007805465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b0388161717905591506118e390508165ffffffffffff16151590565b15611082576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510990600090a1505050565b600080611921610f45565b90508065ffffffffffff168365ffffffffffff1611611949576119448382611f6f565b6117f9565b6117f965ffffffffffff841662069780611a4e565b61196661125c565b611082838383611a5e565b6000826119cf57600061198c6008546001600160a01b031690565b6001600160a01b0316146119b357604051631fe1e13d60e11b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0384161790555b6117f98383611ace565b60006119e58383610ea9565b15611a465760008381526006602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610685565b506000610685565b60008282188284100282186117f9565b611a69838383611b5a565b6001600160a01b038316611082576002547f00000000000000000000000000000000000000000000000000000000000000009081811115611ac75760405163279e7e1560e21b8152600481018290526024810183905260440161081f565b5050505050565b6000611ada8383610ea9565b611a465760008381526006602090815260408083206001600160a01b03861684529091529020805460ff19166001179055611b123390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610685565b6001600160a01b038316611b85578060026000828254611b7a9190611f2b565b90915550611bf79050565b6001600160a01b03831660009081526020819052604090205481811015611bd85760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161081f565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216611c1357600280548290039055611c32565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c1c91815260200190565b600060208284031215611c8957600080fd5b81356001600160e01b0319811681146117f957600080fd5b602081526000825180602084015260005b81811015611ccf5760208186018101516040868401015201611cb2565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114611d0657600080fd5b919050565b60008060408385031215611d1e57600080fd5b611d2783611cef565b946020939093013593505050565b600080600060608486031215611d4a57600080fd5b611d5384611cef565b9250611d6160208501611cef565b929592945050506040919091013590565b600060208284031215611d8457600080fd5b5035919050565b60008060408385031215611d9e57600080fd5b82359150611dae60208401611cef565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b03851681526020810184905265ffffffffffff831660408201526080810160058310611e1057634e487b7160e01b600052602160045260246000fd5b82606083015295945050505050565b803565ffffffffffff81168114611d0657600080fd5b60008060008060808587031215611e4b57600080fd5b84359350611e5b60208601611cef565b925060408501359150611e7060608601611e1f565b905092959194509250565b600060208284031215611e8d57600080fd5b6117f982611cef565b600060208284031215611ea857600080fd5b6117f982611e1f565b60008060408385031215611ec457600080fd5b611ecd83611cef565b9150611dae60208401611cef565b600181811c90821680611eef57607f821691505b602082108103611f0f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561068557610685611f15565b8181038181111561068557610685611f15565b65ffffffffffff818116838216019081111561068557610685611f15565b65ffffffffffff828116828216039081111561068557610685611f1556fe114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa12265d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a264697066735822122097f6b5587d941d751645c3611df29b70a1f7e15a98ddf51296426df4fa0a607364736f6c63430008250033114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa12265d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102745760003560e01c806370a0823111610151578063a1eda53c116100c3578063cf6eefb711610087578063cf6eefb7146105b4578063d5391393146105e2578063d547741f146105f7578063d602b9fd1461060a578063dd62ed3e14610612578063e63ab1e91461064b57600080fd5b8063a1eda53c14610562578063a217fddf14610589578063a9059cbb14610591578063cc8463c8146105a4578063cefc1429146105ac57600080fd5b80638456cb59116101155780638456cb591461050857806384ef8ffc146105105780638da5cb5b146105355780638f199ac91461053d57806391d148541461054757806395d89b411461055a57600080fd5b806370a082311461049157806378cfacd2146104ba57806379cc6790146104cd578063827bc09d146104e057806382aefa24146104f357600080fd5b8063355274ea116101ea5780635c975abb116101ae5780635c975abb146104135780636209d33a1461041e578063634e93da146104315780636492d4b214610444578063649a5ec7146104575780636bcbfc3c1461046a57600080fd5b8063355274ea1461036257806336568abe146103885780633a7a82f01461039b5780633f4ba83a146103f857806342966c681461040057600080fd5b806318160ddd1161023c57806318160ddd146102ef578063189aff3a1461030157806323b872dd1461030a578063248a9ca31461031d5780632f2ff15d14610340578063313ce5671461035357600080fd5b806301ffc9a714610279578063022d63fb146102a157806306fdde03146102bd578063095ea7b3146102d25780630aa6220b146102e5575b600080fd5b61028c610287366004611c77565b610660565b60405190151581526020015b60405180910390f35b620697805b60405165ffffffffffff9091168152602001610298565b6102c561068b565b6040516102989190611ca1565b61028c6102e0366004611d0b565b61071d565b6102ed610735565b005b6002545b604051908152602001610298565b6102f360095481565b61028c610318366004611d35565b61074b565b6102f361032b366004611d72565b60009081526006602052604090206001015490565b6102ed61034e366004611d8b565b61076f565b60405160068152602001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102f3565b6102ed610396366004611d8b565b61079b565b6103e86103a9366004611d72565b600a602052600090815260409020805460018201546002909201546001600160a01b03909116919065ffffffffffff811690600160301b900460ff1684565b6040516102989493929190611dcd565b6102ed610847565b6102ed61040e366004611d72565b61085a565b60055460ff1661028c565b6102ed61042c366004611e35565b610864565b6102ed61043f366004611e7b565b610ad9565b6102ed610452366004611d72565b610aed565b6102ed610465366004611e96565b610c29565b6102f37f000000000000000000000000000000000000000000000000000000000000000081565b6102f361049f366004611e7b565b6001600160a01b031660009081526020819052604090205490565b6102ed6104c8366004611d72565b610c3d565b6102ed6104db366004611d0b565b610d31565b6102ed6104ee366004611d72565b610d46565b6102f3600080516020611f8e83398151915281565b6102ed610e70565b6008546001600160a01b03165b6040516001600160a01b039091168152602001610298565b61051d610e90565b6102a662093a8081565b61028c610555366004611d8b565b610ea9565b6102c5610ed4565b61056a610ee3565b6040805165ffffffffffff938416815292909116602083015201610298565b6102f3600081565b61028c61059f366004611d0b565b610f37565b6102a6610f45565b6102ed610fa4565b6105bc610fe4565b604080516001600160a01b03909316835265ffffffffffff909116602083015201610298565b6102f3600080516020611fce83398151915281565b6102ed610605366004611d8b565b611005565b6102ed61102d565b6102f3610620366004611eb1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102f3600080516020611fae83398151915281565b60006001600160e01b031982166318a4c3c360e11b1480610685575061068582611040565b92915050565b60606003805461069a90611edb565b80601f01602080910402602001604051908101604052809291908181526020018280546106c690611edb565b80156107135780601f106106e857610100808354040283529160200191610713565b820191906000526020600020905b8154815290600101906020018083116106f657829003601f168201915b5050505050905090565b60003361072b818585611075565b5060019392505050565b600061074081611087565b610748611091565b50565b60003361075985828561109e565b61076485858561111d565b506001949350505050565b8161078d57604051631fe1e13d60e11b815260040160405180910390fd5b610797828261117c565b5050565b811580156107b657506008546001600160a01b038281169116145b1561083d576000806107c6610fe4565b90925090506001600160a01b0382161515806107e8575065ffffffffffff8116155b806107fb57504265ffffffffffff821610155b15610828576040516319ca5ebb60e01b815265ffffffffffff821660048201526024015b60405180910390fd5b50506007805465ffffffffffff60a01b191690555b61079782826111a1565b600061085281611087565b6107486111d4565b6107483382611226565b600080516020611f8e83398151915261087c81611087565b61088461125c565b84158061089857506001600160a01b038416155b806108a1575082155b806108b45750428265ffffffffffff1611155b806108d257506108c762093a8042611f2b565b8265ffffffffffff16115b156108f057604051632163830560e01b815260040160405180910390fd5b600080868152600a6020526040902060020154600160301b900460ff16600481111561091e5761091e611db7565b1461093f57604051632ec9e9c160e01b81526004810186905260240161081f565b600060095461094d60025490565b610977907f0000000000000000000000000000000000000000000000000000000000000000611f3e565b6109819190611f3e565b9050808411156109ae576040516322d3627560e11b8152600481018590526024810182905260440161081f565b83600960008282546109c09190611f2b565b9091555050604080516080810182526001600160a01b03871681526020810186905265ffffffffffff85169181019190915260608101600190526000878152600a6020908152604091829020835181546001600160a01b039091166001600160a01b03199091161781559083015160018201559082015160028201805465ffffffffffff90921665ffffffffffff1983168117825560608501519266ffffffffffffff191617600160301b836004811115610a7d57610a7d611db7565b0217905550506040805186815265ffffffffffff861660208201526001600160a01b038816925088917f9c1ea0308984312de207d6275e96ba79a28157a40553d64ba3300be4e26a74f7910160405180910390a3505050505050565b6000610ae481611087565b61079782611280565b600080516020611fce833981519152610b0581611087565b610b0d61125c565b6000828152600a6020526040902060016002820154600160301b900460ff166004811115610b3d57610b3d611db7565b14610b5e5760405163fc043fbb60e01b81526004810184905260240161081f565b600281015465ffffffffffff164210610b8d576040516346b3be6b60e01b81526004810184905260240161081f565b60028101805460ff60301b19166602000000000000179055600181015460098054600090610bbc908490611f3e565b909155505080546001820154610bdb916001600160a01b0316906112ec565b805460018201546040519081526001600160a01b039091169084907f543630d9db91734da7c7603b66aad214254f753eb88541f62a2ab99084f37bc8906020015b60405180910390a3505050565b6000610c3481611087565b61079782611322565b6000818152600a6020526040902060016002820154600160301b900460ff166004811115610c6d57610c6d611db7565b14610c8e5760405163fc043fbb60e01b81526004810183905260240161081f565b600281015465ffffffffffff16421015610cbe5760405163eaa1e48b60e01b81526004810183905260240161081f565b60028101805460ff60301b19166604000000000000179055600181015460098054600090610ced908490611f3e565b9091555050600181015460405190815282907fec78717fce0c0420227778a84427740f5d3fa71ad5d847c3f75a83c17104b57e906020015b60405180910390a25050565b610d3c82338361109e565b6107978282611226565b610d5e600080516020611f8e83398151915233610ea9565b158015610d805750610d7e600080516020611fae83398151915233610ea9565b155b8015610d945750610d92600033610ea9565b155b15610db45760405163227d6f8b60e01b815233600482015260240161081f565b6000818152600a6020526040902060016002820154600160301b900460ff166004811115610de457610de4611db7565b14610e055760405163fc043fbb60e01b81526004810183905260240161081f565b60028101805460ff60301b19166603000000000000179055600181015460098054600090610e34908490611f3e565b9091555050600181015460405190815282907f90cc6362306f3f31be5afb28b65b25da25e77586e4ca3ac69c3857c1eee0c4c290602001610d25565b600080516020611fae833981519152610e8881611087565b610748611392565b6000610ea46008546001600160a01b031690565b905090565b60009182526006602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461069a90611edb565b600854600090600160d01b900465ffffffffffff168015158015610f0f57504265ffffffffffff821610155b610f1b57600080610f2f565b600854600160a01b900465ffffffffffff16815b915091509091565b60003361072b81858561111d565b600854600090600160d01b900465ffffffffffff168015158015610f7057504265ffffffffffff8216105b610f8b57600754600160d01b900465ffffffffffff16610f9e565b600854600160a01b900465ffffffffffff165b91505090565b6000610fae610fe4565b509050336001600160a01b03821614610fdc57604051636116401160e11b815233600482015260240161081f565b6107486113cf565b6007546001600160a01b03811691600160a01b90910465ffffffffffff1690565b8161102357604051631fe1e13d60e11b815260040160405180910390fd5b6107978282611468565b600061103881611087565b61074861148d565b60006001600160e01b03198216637965db0b60e01b148061068557506301ffc9a760e01b6001600160e01b0319831614610685565b6110828383836001611498565b505050565b610748813361156d565b61109c6000806115a6565b565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811015611117578181101561110857604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161081f565b61111784848484036000611498565b50505050565b6001600160a01b03831661114757604051634b637e8f60e11b81526000600482015260240161081f565b6001600160a01b0382166111715760405163ec442f0560e01b81526000600482015260240161081f565b611082838383611666565b60008281526006602052604090206001015461119781611087565b6111178383611671565b6001600160a01b03811633146111ca5760405163334bd91960e11b815260040160405180910390fd5b6110828282611800565b6111dc61183d565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b03821661125057604051634b637e8f60e11b81526000600482015260240161081f565b61079782600083611666565b60055460ff161561109c5760405163d93c066560e01b815260040160405180910390fd5b600061128a610f45565b61129342611860565b61129d9190611f51565b90506112a98282611897565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed690602001610d25565b6001600160a01b0382166113165760405163ec442f0560e01b81526000600482015260240161081f565b61079760008383611666565b600061132d82611916565b61133642611860565b6113409190611f51565b905061134c82826115a6565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b61139a61125c565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112093390565b6000806113da610fe4565b915091506113ef8165ffffffffffff16151590565b158061140357504265ffffffffffff821610155b1561142b576040516319ca5ebb60e01b815265ffffffffffff8216600482015260240161081f565b61144760006114426008546001600160a01b031690565b611800565b50611453600083611671565b5050600780546001600160d01b031916905550565b60008281526006602052604090206001015461148381611087565b6111178383611800565b61109c600080611897565b6001600160a01b0384166114c25760405163e602df0560e01b81526000600482015260240161081f565b6001600160a01b0383166114ec57604051634a1406b160e11b81526000600482015260240161081f565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561111757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161155f91815260200190565b60405180910390a350505050565b6115778282610ea9565b6107975760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161081f565b600854600160d01b900465ffffffffffff168015611629574265ffffffffffff821610156115ff57600854600780546001600160d01b0316600160a01b90920465ffffffffffff16600160d01b02919091179055611629565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec590600090a15b50600880546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b61108283838361195e565b600082158015906116905750600080516020611f8e8339815191528314155b80156116aa5750600080516020611fce8339815191528314155b80156116c45750600080516020611fae8339815191528314155b156116e557604051630295705360e11b81526004810184905260240161081f565b6001600160a01b03821661170c5760405163c52a9bd360e01b815260040160405180910390fd5b82158015906117215750611721600083610ea9565b806117585750600080516020611f8e83398151915283141580156117585750611758600080516020611f8e83398151915283610ea9565b8061178f5750600080516020611fce833981519152831415801561178f575061178f600080516020611fce83398151915283610ea9565b806117c65750600080516020611fae83398151915283141580156117c657506117c6600080516020611fae83398151915283610ea9565b156117ef5760405163a75dd90d60e01b81526001600160a01b038316600482015260240161081f565b6117f98383611971565b9392505050565b60008215801561181d57506008546001600160a01b038381169116145b1561183357600880546001600160a01b03191690555b6117f983836119d9565b60055460ff1661109c57604051638dfc202b60e01b815260040160405180910390fd5b600065ffffffffffff821115611893576040516306dfcc6560e41b8152603060048201526024810183905260440161081f565b5090565b60006118a1610fe4565b6007805465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b0388161717905591506118e390508165ffffffffffff16151590565b15611082576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510990600090a1505050565b600080611921610f45565b90508065ffffffffffff168365ffffffffffff1611611949576119448382611f6f565b6117f9565b6117f965ffffffffffff841662069780611a4e565b61196661125c565b611082838383611a5e565b6000826119cf57600061198c6008546001600160a01b031690565b6001600160a01b0316146119b357604051631fe1e13d60e11b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0384161790555b6117f98383611ace565b60006119e58383610ea9565b15611a465760008381526006602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610685565b506000610685565b60008282188284100282186117f9565b611a69838383611b5a565b6001600160a01b038316611082576002547f00000000000000000000000000000000000000000000000000000000000000009081811115611ac75760405163279e7e1560e21b8152600481018290526024810183905260440161081f565b5050505050565b6000611ada8383610ea9565b611a465760008381526006602090815260408083206001600160a01b03861684529091529020805460ff19166001179055611b123390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610685565b6001600160a01b038316611b85578060026000828254611b7a9190611f2b565b90915550611bf79050565b6001600160a01b03831660009081526020819052604090205481811015611bd85760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161081f565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216611c1357600280548290039055611c32565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c1c91815260200190565b600060208284031215611c8957600080fd5b81356001600160e01b0319811681146117f957600080fd5b602081526000825180602084015260005b81811015611ccf5760208186018101516040868401015201611cb2565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114611d0657600080fd5b919050565b60008060408385031215611d1e57600080fd5b611d2783611cef565b946020939093013593505050565b600080600060608486031215611d4a57600080fd5b611d5384611cef565b9250611d6160208501611cef565b929592945050506040919091013590565b600060208284031215611d8457600080fd5b5035919050565b60008060408385031215611d9e57600080fd5b82359150611dae60208401611cef565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b03851681526020810184905265ffffffffffff831660408201526080810160058310611e1057634e487b7160e01b600052602160045260246000fd5b82606083015295945050505050565b803565ffffffffffff81168114611d0657600080fd5b60008060008060808587031215611e4b57600080fd5b84359350611e5b60208601611cef565b925060408501359150611e7060608601611e1f565b905092959194509250565b600060208284031215611e8d57600080fd5b6117f982611cef565b600060208284031215611ea857600080fd5b6117f982611e1f565b60008060408385031215611ec457600080fd5b611ecd83611cef565b9150611dae60208401611cef565b600181811c90821680611eef57607f821691505b602082108103611f0f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561068557610685611f15565b8181038181111561068557610685611f15565b65ffffffffffff818116838216019081111561068557610685611f15565b65ffffffffffff828116828216039081111561068557610685611f1556fe114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa12265d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a264697066735822122097f6b5587d941d751645c3611df29b70a1f7e15a98ddf51296426df4fa0a607364736f6c63430008250033",
  "deployedBytecodeNote": "Template; constructor immutables are populated only by deployment.",
  "runtimeImmutables": [
    {
      "sourceName": "contracts/NuminaUSD.sol",
      "contractName": "NuminaUSD",
      "variableName": "issuerPolicyHash",
      "references": [
        {
          "length": 32,
          "start": 1135
        }
      ]
    },
    {
      "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/ERC20Capped.sol",
      "contractName": "ERC20Capped",
      "variableName": "_cap",
      "references": [
        {
          "length": 32,
          "start": 868
        },
        {
          "length": 32,
          "start": 2387
        },
        {
          "length": 32,
          "start": 6780
        }
      ]
    }
  ],
  "metadata": {
    "compiler": {
      "version": "0.8.37+commit.f401782d"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "supplyCapBaseUnits",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialSupplyBaseUnits",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "initialRecipient",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "admin",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "issuer",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "minter",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "pauser",
              "type": "address"
            },
            {
              "internalType": "uint48",
              "name": "adminDelaySeconds",
              "type": "uint48"
            },
            {
              "internalType": "bytes32",
              "name": "approvedIssuerPolicyHash",
              "type": "bytes32"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "AccessControlBadConfirmation",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint48",
              "name": "schedule",
              "type": "uint48"
            }
          ],
          "name": "AccessControlEnforcedDefaultAdminDelay",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "AccessControlEnforcedDefaultAdminRules",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "defaultAdmin",
              "type": "address"
            }
          ],
          "name": "AccessControlInvalidDefaultAdmin",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "neededRole",
              "type": "bytes32"
            }
          ],
          "name": "AccessControlUnauthorizedAccount",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "increasedSupply",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cap",
              "type": "uint256"
            }
          ],
          "name": "ERC20ExceededCap",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "allowance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "needed",
              "type": "uint256"
            }
          ],
          "name": "ERC20InsufficientAllowance",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "balance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "needed",
              "type": "uint256"
            }
          ],
          "name": "ERC20InsufficientBalance",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "approver",
              "type": "address"
            }
          ],
          "name": "ERC20InvalidApprover",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "cap",
              "type": "uint256"
            }
          ],
          "name": "ERC20InvalidCap",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            }
          ],
          "name": "ERC20InvalidReceiver",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            }
          ],
          "name": "ERC20InvalidSender",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "ERC20InvalidSpender",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "EnforcedPause",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "ExpectedPause",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "InvalidConfiguration",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "InvalidIssuance",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "reserveReference",
              "type": "bytes32"
            }
          ],
          "name": "IssuanceExpired",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "reserveReference",
              "type": "bytes32"
            }
          ],
          "name": "IssuanceNotAuthorized",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "reserveReference",
              "type": "bytes32"
            }
          ],
          "name": "IssuanceNotExpired",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "reserveReference",
              "type": "bytes32"
            }
          ],
          "name": "IssuanceReferenceAlreadyUsed",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "NotAuthorizedToCancel",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "PrivilegedRoleConflict",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint8",
              "name": "bits",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "SafeCastOverflowedUintDowncast",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "requested",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "available",
              "type": "uint256"
            }
          ],
          "name": "SupplyReservationExceedsCap",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            }
          ],
          "name": "UnsupportedRole",
          "type": "error"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [],
          "name": "DefaultAdminDelayChangeCanceled",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint48",
              "name": "newDelay",
              "type": "uint48"
            },
            {
              "indexed": false,
              "internalType": "uint48",
              "name": "effectSchedule",
              "type": "uint48"
            }
          ],
          "name": "DefaultAdminDelayChangeScheduled",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [],
          "name": "DefaultAdminTransferCanceled",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "newAdmin",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint48",
              "name": "acceptSchedule",
              "type": "uint48"
            }
          ],
          "name": "DefaultAdminTransferScheduled",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "reserveReference",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "IssuanceAuthorizationExpired",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "reserveReference",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint48",
              "name": "expiresAt",
              "type": "uint48"
            }
          ],
          "name": "IssuanceAuthorized",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "reserveReference",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "IssuanceCancelled",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "reserveReference",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "IssuanceMinted",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "Paused",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "previousAdminRole",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "newAdminRole",
              "type": "bytes32"
            }
          ],
          "name": "RoleAdminChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            }
          ],
          "name": "RoleGranted",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            }
          ],
          "name": "RoleRevoked",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "Unpaused",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DEFAULT_ADMIN_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "ISSUER_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MAX_AUTHORIZATION_LIFETIME",
          "outputs": [
            {
              "internalType": "uint48",
              "name": "",
              "type": "uint48"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MINTER_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PAUSER_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "acceptDefaultAdminTransfer",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "reserveReference",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint48",
              "name": "expiresAt",
              "type": "uint48"
            }
          ],
          "name": "authorizeIssuance",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "authorizedSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAdmin",
              "type": "address"
            }
          ],
          "name": "beginDefaultAdminTransfer",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "burn",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "burnFrom",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "cancelDefaultAdminTransfer",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "reserveReference",
              "type": "bytes32"
            }
          ],
          "name": "cancelIssuance",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "cap",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint48",
              "name": "newDelay",
              "type": "uint48"
            }
          ],
          "name": "changeDefaultAdminDelay",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "defaultAdmin",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "defaultAdminDelay",
          "outputs": [
            {
              "internalType": "uint48",
              "name": "",
              "type": "uint48"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "defaultAdminDelayIncreaseWait",
          "outputs": [
            {
              "internalType": "uint48",
              "name": "",
              "type": "uint48"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "reserveReference",
              "type": "bytes32"
            }
          ],
          "name": "expireIssuance",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            }
          ],
          "name": "getRoleAdmin",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "grantRole",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "hasRole",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "reserveReference",
              "type": "bytes32"
            }
          ],
          "name": "issuances",
          "outputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint48",
              "name": "expiresAt",
              "type": "uint48"
            },
            {
              "internalType": "enum NuminaUSD.IssuanceStatus",
              "name": "status",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "issuerPolicyHash",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "reserveReference",
              "type": "bytes32"
            }
          ],
          "name": "mintAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pause",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "paused",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pendingDefaultAdmin",
          "outputs": [
            {
              "internalType": "address",
              "name": "newAdmin",
              "type": "address"
            },
            {
              "internalType": "uint48",
              "name": "schedule",
              "type": "uint48"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pendingDefaultAdminDelay",
          "outputs": [
            {
              "internalType": "uint48",
              "name": "newDelay",
              "type": "uint48"
            },
            {
              "internalType": "uint48",
              "name": "schedule",
              "type": "uint48"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "renounceRole",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "revokeRole",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "rollbackDefaultAdminDelay",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "interfaceId",
              "type": "bytes4"
            }
          ],
          "name": "supportsInterface",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "unpause",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "devdoc": {
        "details": "Custom code has not received an independent security audit. A reserve reference is only an issuer assertion linking to off-chain evidence; this contract cannot verify that evidence.",
        "errors": {
          "AccessControlBadConfirmation()": [
            {
              "details": "The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."
            }
          ],
          "AccessControlEnforcedDefaultAdminDelay(uint48)": [
            {
              "details": "The delay for transferring the default admin delay is enforced and the operation must wait until `schedule`. NOTE: `schedule` can be 0 indicating there's no transfer scheduled."
            }
          ],
          "AccessControlEnforcedDefaultAdminRules()": [
            {
              "details": "At least one of the following rules was violated: - The `DEFAULT_ADMIN_ROLE` must only be managed by itself. - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time. - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps."
            }
          ],
          "AccessControlInvalidDefaultAdmin(address)": [
            {
              "details": "The new default admin is not a valid default admin."
            }
          ],
          "AccessControlUnauthorizedAccount(address,bytes32)": [
            {
              "details": "The `account` is missing a role."
            }
          ],
          "ERC20ExceededCap(uint256,uint256)": [
            {
              "details": "Total supply cap has been exceeded."
            }
          ],
          "ERC20InsufficientAllowance(address,uint256,uint256)": [
            {
              "details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.",
              "params": {
                "allowance": "Amount of tokens a `spender` is allowed to operate with.",
                "needed": "Minimum amount required to perform a transfer.",
                "spender": "Address that may be allowed to operate on tokens without being their owner."
              }
            }
          ],
          "ERC20InsufficientBalance(address,uint256,uint256)": [
            {
              "details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.",
              "params": {
                "balance": "Current balance for the interacting account.",
                "needed": "Minimum amount required to perform a transfer.",
                "sender": "Address whose tokens are being transferred."
              }
            }
          ],
          "ERC20InvalidApprover(address)": [
            {
              "details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.",
              "params": {
                "approver": "Address initiating an approval operation."
              }
            }
          ],
          "ERC20InvalidCap(uint256)": [
            {
              "details": "The supplied cap is not a valid cap."
            }
          ],
          "ERC20InvalidReceiver(address)": [
            {
              "details": "Indicates a failure with the token `receiver`. Used in transfers.",
              "params": {
                "receiver": "Address to which tokens are being transferred."
              }
            }
          ],
          "ERC20InvalidSender(address)": [
            {
              "details": "Indicates a failure with the token `sender`. Used in transfers.",
              "params": {
                "sender": "Address whose tokens are being transferred."
              }
            }
          ],
          "ERC20InvalidSpender(address)": [
            {
              "details": "Indicates a failure with the `spender` to be approved. Used in approvals.",
              "params": {
                "spender": "Address that may be allowed to operate on tokens without being their owner."
              }
            }
          ],
          "EnforcedPause()": [
            {
              "details": "The operation failed because the contract is paused."
            }
          ],
          "ExpectedPause()": [
            {
              "details": "The operation failed because the contract is not paused."
            }
          ],
          "SafeCastOverflowedUintDowncast(uint8,uint256)": [
            {
              "details": "Value doesn't fit in a uint of `bits` size."
            }
          ]
        },
        "events": {
          "Approval(address,address,uint256)": {
            "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
          },
          "DefaultAdminDelayChangeCanceled()": {
            "details": "Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass."
          },
          "DefaultAdminDelayChangeScheduled(uint48,uint48)": {
            "details": "Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next delay to be applied between default admin transfer after `effectSchedule` has passed."
          },
          "DefaultAdminTransferCanceled()": {
            "details": "Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule."
          },
          "DefaultAdminTransferScheduled(address,uint48)": {
            "details": "Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule` passes."
          },
          "Paused(address)": {
            "details": "Emitted when the pause is triggered by `account`."
          },
          "RoleAdminChanged(bytes32,bytes32,bytes32)": {
            "details": "Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this."
          },
          "RoleGranted(bytes32,address,address)": {
            "details": "Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}."
          },
          "RoleRevoked(bytes32,address,address)": {
            "details": "Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)"
          },
          "Transfer(address,address,uint256)": {
            "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
          },
          "Unpaused(address)": {
            "details": "Emitted when the pause is lifted by `account`."
          }
        },
        "kind": "dev",
        "methods": {
          "acceptDefaultAdminTransfer()": {
            "details": "Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. After calling the function: - `DEFAULT_ADMIN_ROLE` should be granted to the caller. - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder. - {pendingDefaultAdmin} should be reset to zero values. Requirements: - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`. - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed."
          },
          "allowance(address,address)": {
            "details": "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."
          },
          "approve(address,uint256)": {
            "details": "See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."
          },
          "authorizeIssuance(bytes32,address,uint256,uint48)": {
            "details": "Never include personal data or a bank account number in the public reference."
          },
          "balanceOf(address)": {
            "details": "Returns the value of tokens owned by `account`."
          },
          "beginDefaultAdminTransfer(address)": {
            "details": "Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance after the current timestamp plus a {defaultAdminDelay}. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminTransferScheduled} event."
          },
          "burn(uint256)": {
            "details": "Destroys a `value` amount of tokens from the caller. See {ERC20-_burn}."
          },
          "burnFrom(address,uint256)": {
            "details": "Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for `account`'s tokens of at least `value`."
          },
          "cancelDefaultAdminTransfer()": {
            "details": "Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminTransferCanceled} event."
          },
          "cap()": {
            "details": "Returns the cap on the token's total supply."
          },
          "changeDefaultAdminDelay(uint48)": {
            "details": "Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting into effect after the current timestamp plus a {defaultAdminDelay}. This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay} set before calling. The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin} complete transfer (including acceptance). The schedule is designed for two scenarios: - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by {defaultAdminDelayIncreaseWait}. - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`. A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminDelayChangeScheduled} event and may emit a {DefaultAdminDelayChangeCanceled} event."
          },
          "decimals()": {
            "details": "This denomination does not establish a USD price or redemption right."
          },
          "defaultAdmin()": {
            "details": "Returns the address of the current `DEFAULT_ADMIN_ROLE` holder."
          },
          "defaultAdminDelay()": {
            "details": "Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started. This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set the acceptance schedule. NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this function returns the new delay. See {changeDefaultAdminDelay}."
          },
          "defaultAdminDelayIncreaseWait()": {
            "details": "Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay}) to take effect. Default to 5 days. When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds) that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can be overridden for a custom {defaultAdminDelay} increase scheduling. IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise, there's a risk of setting a high new delay that goes into effect almost immediately without the possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds)."
          },
          "getRoleAdmin(bytes32)": {
            "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
          },
          "grantRole(bytes32,address)": {
            "details": "See {AccessControl-grantRole}. Reverts for `DEFAULT_ADMIN_ROLE`."
          },
          "hasRole(bytes32,address)": {
            "details": "Returns `true` if `account` has been granted `role`."
          },
          "name()": {
            "details": "Returns the name of the token."
          },
          "owner()": {
            "details": "Gets the address of the owner."
          },
          "paused()": {
            "details": "Returns true if the contract is paused, and false otherwise."
          },
          "pendingDefaultAdmin()": {
            "details": "Returns a tuple of a `newAdmin` and an accept schedule. After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role by calling {acceptDefaultAdminTransfer}, completing the role transfer. A zero value only in `acceptSchedule` indicates no pending admin transfer. NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced."
          },
          "pendingDefaultAdminDelay()": {
            "details": "Returns a tuple of `newDelay` and an effect schedule. After the `schedule` passes, the `newDelay` will get into effect immediately for every new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}. A zero value only in `effectSchedule` indicates no pending delay change. NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay} will be zero after the effect schedule."
          },
          "renounceRole(bytes32,address)": {
            "details": "See {AccessControl-renounceRole}. For the `DEFAULT_ADMIN_ROLE`, it only allows renouncing in two steps by first calling {beginDefaultAdminTransfer} to the `address(0)`, so it's required that the {pendingDefaultAdmin} schedule has also passed when calling this function. After its execution, it will not be possible to call `onlyRole(DEFAULT_ADMIN_ROLE)` functions. NOTE: Renouncing `DEFAULT_ADMIN_ROLE` will leave the contract without a {defaultAdmin}, thereby disabling any functionality that is only available for it, and the possibility of reassigning a non-administrated role."
          },
          "revokeRole(bytes32,address)": {
            "details": "See {AccessControl-revokeRole}. Reverts for `DEFAULT_ADMIN_ROLE`."
          },
          "rollbackDefaultAdminDelay()": {
            "details": "Cancels a scheduled {defaultAdminDelay} change. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminDelayChangeCanceled} event."
          },
          "supportsInterface(bytes4)": {
            "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
          },
          "symbol()": {
            "details": "Returns the symbol of the token, usually a shorter version of the name."
          },
          "totalSupply()": {
            "details": "Returns the value of tokens in existence."
          },
          "transfer(address,uint256)": {
            "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."
          },
          "transferFrom(address,address,uint256)": {
            "details": "See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."
          }
        },
        "title": "Numina USD — an unissued contract candidate, not evidence of USD reserves.",
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {
          "authorizeIssuance(bytes32,address,uint256,uint48)": {
            "notice": "An issuer authorizes a bounded issuance after its independent off-chain checks."
          },
          "cancelIssuance(bytes32)": {
            "notice": "Cancels an unexecuted issuance, even during an emergency pause. References remain spent."
          },
          "decimals()": {
            "notice": "Amounts are integer micro-units: 1 NUSD = 1,000,000 base units."
          },
          "expireIssuance(bytes32)": {
            "notice": "Anyone may release a reservation after expiry. It cannot then be reused or minted."
          },
          "issuerPolicyHash()": {
            "notice": "Hash of the approved issuer/terms document. Not an attestation of legal status or backing."
          },
          "mintAuthorized(bytes32)": {
            "notice": "A distinct minter executes the exact recipient/amount approved by the issuer, once."
          },
          "unpause()": {
            "notice": "Governance must review outstanding authorizations before resuming after an incident."
          }
        },
        "notice": "Explicit constructor issuance up to the cap. Starts paused after issuance. No oracle, fiat redemption, bridge, or upgrade proxy.",
        "version": 1
      }
    },
    "settings": {
      "compilationTarget": {
        "contracts/NuminaUSD.sol": "NuminaUSD"
      },
      "evmVersion": "london",
      "libraries": {},
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "remappings": []
    },
    "sources": {
      "@openzeppelin/contracts/access/AccessControl.sol": {
        "keccak256": "0xf7e47e67e49ee2a94aa5c52580045b6ec2e6e402d2376c14a75a151664d7c98f",
        "license": "MIT",
        "urls": [
          "bzz-raw://db6acc2c30f52cb4b5561ffe1db8763200f080c6762db94e4cce0f3623db7080",
          "dweb:/ipfs/QmecnQ1xEh1XMXqVmKZLMkj29iD2y2HJPkZnaYnAe5njFF"
        ]
      },
      "@openzeppelin/contracts/access/IAccessControl.sol": {
        "keccak256": "0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c",
        "license": "MIT",
        "urls": [
          "bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d",
          "dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL"
        ]
      },
      "@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol": {
        "keccak256": "0x5e57537d20a1706f81517842eb09b48a564d5cfc15131537bef76d9c8c100938",
        "license": "MIT",
        "urls": [
          "bzz-raw://c08027cac4185cca5bd35924409cb91aaa43a3fd5629d80c65edbab7c4ee2671",
          "dweb:/ipfs/QmYEhwh5mQZ5NqCaqUm2qLJ1NLcRpwEz87MM7bzXrtCfvD"
        ]
      },
      "@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol": {
        "keccak256": "0x5d8c755a8bfec7cb44cff075c206d642478ebc10c780494bc540cf90f3f25771",
        "license": "MIT",
        "urls": [
          "bzz-raw://a18c2615920ab40a406d658dc7d9f0df0447eddf7c689b29720243a623fea72e",
          "dweb:/ipfs/QmXqCRrcx9A5MhBojvSEsiGhqKDnJjfVaJuF7by3YsKWwf"
        ]
      },
      "@openzeppelin/contracts/interfaces/IERC5313.sol": {
        "keccak256": "0x21529ba6918f994ec44fb97cef2b717d730268e911a4e626f3e425a4394f7bae",
        "license": "MIT",
        "urls": [
          "bzz-raw://10949be539eb61e5ea8996cc93f21be61949c16a1b717adc2b3f8f099c1e1feb",
          "dweb:/ipfs/QmagATozhFXBUVTLaiHWyqVPgew9N1x18V6hBF46AZPeLw"
        ]
      },
      "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
        "keccak256": "0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998",
        "license": "MIT",
        "urls": [
          "bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c",
          "dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL"
        ]
      },
      "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
        "keccak256": "0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29",
        "license": "MIT",
        "urls": [
          "bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195",
          "dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH"
        ]
      },
      "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "keccak256": "0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2",
        "license": "MIT",
        "urls": [
          "bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303",
          "dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"
        ]
      },
      "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol": {
        "keccak256": "0xb378169b7c0be0628064429bd7fb41f5d16983ee9af1b3cf82468e79af3fdc30",
        "license": "MIT",
        "urls": [
          "bzz-raw://eedf53fc7dbbc3333e9aab2bc7735465f901777253256f3d49ba259c10b72792",
          "dweb:/ipfs/QmZWxh93w5idi7R61tcLouHLWUqHYt997uYoTkTZUVQ4mo"
        ]
      },
      "@openzeppelin/contracts/token/ERC20/extensions/ERC20Capped.sol": {
        "keccak256": "0xf1c07010528cdb891c75866dd44cf5cd856573457127ec38a522ca748407a340",
        "license": "MIT",
        "urls": [
          "bzz-raw://266a5704d812997c9e057e50787694ca29c1a3ddd76962af1061c11ed424c7e2",
          "dweb:/ipfs/QmaVTZBgUEWFo4ePF6v7NwoRSLbYBdLQ5XbRkgGFBfPpxa"
        ]
      },
      "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol": {
        "keccak256": "0x756aee61d83960d324973de3a64920a02b480efe662b611fb05ea506d844aa55",
        "license": "MIT",
        "urls": [
          "bzz-raw://4dfb71ab2f5fcc530226a25bba4d808f4d22a7f383cae4a3be3629ec057b276c",
          "dweb:/ipfs/QmRzyetUjbr9Gx1pcXYSsE5rz4XypfEbZgmBvZKUNUJQLR"
        ]
      },
      "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
        "keccak256": "0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f",
        "license": "MIT",
        "urls": [
          "bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e",
          "dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"
        ]
      },
      "@openzeppelin/contracts/utils/Context.sol": {
        "keccak256": "0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2",
        "license": "MIT",
        "urls": [
          "bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12",
          "dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"
        ]
      },
      "@openzeppelin/contracts/utils/Panic.sol": {
        "keccak256": "0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a",
        "license": "MIT",
        "urls": [
          "bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a",
          "dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"
        ]
      },
      "@openzeppelin/contracts/utils/Pausable.sol": {
        "keccak256": "0xdb484371dfbb848cb6f5d70464e9ac9b2900e4164ead76bbce4fef0b44bcc68f",
        "license": "MIT",
        "urls": [
          "bzz-raw://f9d6f6f6600a2bec622f699081b58350873b5e63ce05464d17d674a290bb8a7c",
          "dweb:/ipfs/QmQKVzSQY1PM3Bid4QhgVVZyx6B4Jx7XgaQzLKHj38vJz8"
        ]
      },
      "@openzeppelin/contracts/utils/introspection/ERC165.sol": {
        "keccak256": "0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e",
        "license": "MIT",
        "urls": [
          "bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377",
          "dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E"
        ]
      },
      "@openzeppelin/contracts/utils/introspection/IERC165.sol": {
        "keccak256": "0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c",
        "license": "MIT",
        "urls": [
          "bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617",
          "dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"
        ]
      },
      "@openzeppelin/contracts/utils/math/Math.sol": {
        "keccak256": "0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857",
        "license": "MIT",
        "urls": [
          "bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5",
          "dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y"
        ]
      },
      "@openzeppelin/contracts/utils/math/SafeCast.sol": {
        "keccak256": "0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083",
        "license": "MIT",
        "urls": [
          "bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9",
          "dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif"
        ]
      },
      "contracts/NuminaUSD.sol": {
        "keccak256": "0x0fe5581c0994f602031c4c1c60e8bb93c5ff435dba5aa56469413bbfa8e7cdf0",
        "license": "UNLICENSED",
        "urls": [
          "bzz-raw://4c2a731f3d4b3a77ed4c0a39556bc706d51d84160ede6d12aed2b935b754e6cd",
          "dweb:/ipfs/QmXBcRPeXMmivF7JiUeyx8nVEzPJgYwWobTkMMjdNFEdzy"
        ]
      }
    },
    "version": 1
  },
  "warning": "Unaudited, unissued candidate. Compilation is not a security audit, deployment, reserve proof, or legal approval."
}
