Overview ERC20
PRICE
n/a

ON-CHAIN MARKET CAP n/a

Total Supply:
843,303,980.00 USDT

Holders:
1
Profile Summary
Blockchain:
Sepolia (11155111)


Decimals:
6
Contract Source Code Verified (Partial Match)
Contract Name:
USDT

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No

Created At:
Wed, 23 Oct 2024 11:23:00 GMT
USDT.sol
contracts
test
USDT.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "initialHolder",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "vestingWalletAddress",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "ECDSAInvalidSignature",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "length",
        "type": "uint256"
      }
    ],
    "name": "ECDSAInvalidSignatureLength",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "s",
        "type": "bytes32"
      }
    ],
    "name": "ECDSAInvalidSignatureS",
    "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": "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": [
      {
        "internalType": "uint256",
        "name": "deadline",
        "type": "uint256"
      }
    ],
    "name": "ERC2612ExpiredSignature",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "signer",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "ERC2612InvalidSigner",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "IdenticalValue",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "currentNonce",
        "type": "uint256"
      }
    ],
    "name": "InvalidAccountNonce",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidShortString",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NotAllowed",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "OwnableInvalidOwner",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "OwnableUnauthorizedAccount",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "str",
        "type": "string"
      }
    ],
    "name": "StringTooLong",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ZeroAddress",
    "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": "EIP712DomainChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferStarted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "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": "oldAddress",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "newAddress",
        "type": "address"
      }
    ],
    "name": "VestingWalletUpdated",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "DOMAIN_SEPARATOR",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "acceptOwnership",
    "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": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "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": [
      {
        "internalType": "address",
        "name": "newVestingWallet",
        "type": "address"
      }
    ],
    "name": "changeVestingWallet",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "decimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "eip712Domain",
    "outputs": [
      {
        "internalType": "bytes1",
        "name": "fields",
        "type": "bytes1"
      },
      {
        "internalType": "string",
        "name": "name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "version",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "chainId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "verifyingContract",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "salt",
        "type": "bytes32"
      },
      {
        "internalType": "uint256[]",
        "name": "extensions",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "emissionDetails",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "lastMinted",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "nextMintTime",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amountToMint",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "nonces",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pendingOwner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "deadline",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "v",
        "type": "uint8"
      },
      {
        "internalType": "bytes32",
        "name": "r",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "s",
        "type": "bytes32"
      }
    ],
    "name": "permit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "tokenEmission",
    "outputs": [],
    "stateMutability": "nonpayable",
    "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": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "vestingWallet",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  }
]


Contract Creation Code
610160604052346100735761001b61001561014d565b906104c8565b610023610078565b612a88611162823960805181611c4c015260a05181611c83015260c05181611c12015260e051816123540152610100518161237901526101205181611edd01526101405181611f1d0152612a8890f35b61007e565b60405190565b600080fd5b601f801991011690565b634e487b7160e01b600052604160045260246000fd5b906100ad90610083565b810190811060018060401b038211176100c557604052565b61008d565b906100dd6100d6610078565b92836100a3565b565b600080fd5b60018060a01b031690565b6100f8906100e4565b90565b610104816100ef565b0361010b57565b600080fd5b9050519061011d826100fb565b565b9190604083820312610148578061013c6101459260008601610110565b93602001610110565b90565b6100df565b61016b613bea80380380610160816100ca565b92833981019061011f565b9091565b60018060401b03811161018b57610187602091610083565b0190565b61008d565b906101a261019d8361016f565b6100ca565b918252565b60007f5553445400000000000000000000000000000000000000000000000000000000910152565b6101d96004610190565b906101e6602083016101a7565b565b6101f06101cf565b90565b90565b90565b61020d610208610212926101f3565b6101f6565b6100e4565b90565b61021e906101f9565b90565b60000190565b90565b90565b61024161023c61024692610227565b6101f6565b61022a565b90565b60001b90565b9061026060018060a01b0391610249565b9181191691161790565b61027e610279610283926100e4565b6101f6565b6100e4565b90565b61028f9061026a565b90565b61029b90610286565b90565b90565b906102b66102b16102bd92610292565b61029e565b825461024f565b9055565b90565b6102d86102d36102dd926102c1565b6101f6565b61022a565b90565b6102ed6301e133806102c4565b90565b634e487b7160e01b600052601160045260246000fd5b61031561031b9193929361022a565b9261022a565b820180921161032657565b6102f0565b90565b61034261033d6103479261032b565b6101f6565b61022a565b90565b610354600561032e565b90565b61036661036c9193929361022a565b9261022a565b9161037883820261022a565b92818404149015171561038757565b6102f0565b90565b6103a361039e6103a89261038c565b6101f6565b61022a565b90565b6103b5606461038f565b90565b634e487b7160e01b600052601260045260246000fd5b6103da6103e09161022a565b9161022a565b9081156103eb570490565b6103b8565b6103fa60606100ca565b90565b906104079061022a565b9052565b610415905161022a565b90565b9061042560001991610249565b9181191691161790565b61044361043e6104489261022a565b6101f6565b61022a565b90565b90565b9061046361045e61046a9261042f565b61044b565b8254610418565b9055565b906104b4604060026104ba946104936000820161048d6000880161040b565b9061044e565b6104ac600182016104a66020880161040b565b9061044e565b01920161040b565b9061044e565b565b906104c69161046e565b565b906104ec6104d46101e8565b6104dc6101e8565b6104e46101e8565b908492610641565b806105086105026104fd6000610215565b6100ef565b916100ef565b1480156105d2575b6105af576105316105389261052b6602fefb022a630061022d565b90610a47565b600a6102a1565b6105ad426105a66105514261054b6102e0565b90610306565b61059d61057e610570610562610ad9565b61056a61034a565b90610357565b6105786103ab565b906103ce565b9161059461058a6103f0565b95600087016103fd565b602085016103fd565b604083016103fd565b600b6104bc565b565b6105b7610078565b63d92e233d60e01b8152806105ce60048201610221565b0390fd5b50816105ef6105e96105e46000610215565b6100ef565b916100ef565b14610510565b60007f3100000000000000000000000000000000000000000000000000000000000000910152565b6106276001610190565b90610634602083016105f5565b565b61063e61061d565b90565b90610656939291610650610636565b90610658565b565b9061066594939291610683565b565b90565b90565b60200190565b5190565b61068090610286565b90565b90926106e694610696916106cb9461071a565b6106aa816106a46007610667565b90610b4e565b610120526106c2836106bc6008610667565b90610b4e565b6101405261066a565b6106dd6106d782610673565b9161066d565b2060e05261066a565b6106f86106f282610673565b9161066d565b20610100524660a052610709610c57565b60805261071530610677565b60c052565b906107259291610727565b565b906107329291610734565b565b9061073f929161097d565b565b5190565b634e487b7160e01b600052602260045260246000fd5b906001600283049216801561077b575b602083101461077657565b610745565b91607f169161076b565b600052602060002090565b601f602091010490565b1b90565b919060086107ba9102916107b46000198461079a565b9261079a565b9181191691161790565b91906107da6107d56107e29361042f565b61044b565b90835461079e565b9055565b600090565b6107fd916107f76107e6565b916107c4565b565b5b81811061080b575050565b8061081960006001936107eb565b01610800565b9190601f811161082f575b505050565b61083b61086093610785565b90602061084784610790565b83019310610868575b61085990610790565b01906107ff565b38808061082a565b915061085981929050610850565b1c90565b9061088b9060001990600802610876565b191690565b8161089a9161087a565b906002021790565b906108ac81610741565b9060018060401b03821161096c576108ce826108c8855461075b565b8561081f565b602090601f8311600114610903579180916108f2936000926108f7575b5050610890565b90555b565b909150015138806108eb565b601f1983169161091285610785565b9260005b8181106109545750916002939185600196941061093a575b505050020190556108f5565b61094a910151601f84169061087a565b905538808061092e565b91936020600181928787015181550195019201610916565b61008d565b9061097b916108a2565b565b6109949061098d61099b9461099d565b6005610971565b6006610971565b565b6109a6906109a8565b565b6109b1906109b3565b565b6109bc906109be565b565b6109c7906109ec565b565b6109d2906100ef565b9052565b91906109ea906000602085019401906109c9565b565b80610a08610a026109fd6000610215565b6100ef565b916100ef565b14610a1857610a1690610d2d565b565b610a43610a256000610215565b610a2d610078565b918291631e4fbdf760e01b8352600483016109d6565b0390fd5b80610a63610a5d610a586000610215565b6100ef565b916100ef565b14610a8057610a7e91610a766000610215565b919091610dc1565b565b610aab610a8d6000610215565b610a95610078565b91829163ec442f0560e01b8352600483016109d6565b0390fd5b60001c90565b90565b610ac4610ac991610aaf565b610ab5565b90565b610ad69054610ab8565b90565b610ae16107e6565b50610aec6004610acc565b90565b600090565b90565b610b0b610b06610b1092610af4565b6101f6565b61022a565b90565b90565b90565b610b2d610b28610b3292610b13565b610249565b610b16565b90565b610b3f60ff610b19565b90565b610b4b90610b16565b90565b90610b57610aef565b50610b69610b648361066a565b610673565b610b7c610b766020610af7565b9161022a565b10600014610b915750610b8e9061104a565b90565b6000610ba0610ba69392610f3e565b01610971565b610bb6610bb1610b35565b610b42565b90565b600090565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90565b610bec9051610b16565b90565b610bf890610b16565b9052565b610c059061022a565b9052565b90959492610c5594610c44610c4e92610c3a608096610c3060a088019c6000890190610bef565b6020870190610bef565b6040850190610bef565b6060830190610bfc565b01906109c9565b565b610c5f610bb9565b50610c68610bbe565b610cb2610c7560e0610be2565b91610ca3610c84610100610be2565b46610c8e30610677565b91610c97610078565b96879560208701610c09565b602082018103825203826100a3565b610cc4610cbe82610673565b9161066d565b2090565b91906008610ce8910291610ce260018060a01b038461079a565b9261079a565b9181191691161790565b9190610d08610d03610d1093610292565b61029e565b908354610cc8565b9055565b600090565b610d2b91610d25610d14565b91610cf2565b565b610d4290610d3d60006001610d19565b611100565b565b90610d4e90610292565b600052602052604060002090565b604090610d86610d8d9496959396610d7c606084019860008501906109c9565b6020830190610bfc565b0190610bfc565b565b90610d9a910361022a565b90565b90610da8910161022a565b90565b9190610dbf90600060208501940190610bfc565b565b91909180610de0610dda610dd56000610215565b6100ef565b916100ef565b14600014610ec557610e05610dfe83610df96004610acc565b610306565b600461044e565b5b82610e22610e1c610e176000610215565b6100ef565b916100ef565b14600014610e9857610e47610e4083610e3b6004610acc565b610d8f565b600461044e565b5b919091610e93610e81610e7b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93610292565b93610292565b93610e8a610078565b91829182610dab565b0390a3565b610ec082610eba610eab60028790610d44565b91610eb583610acc565b610d9d565b9061044e565b610e48565b610ed9610ed460028390610d44565b610acc565b80610eec610ee68561022a565b9161022a565b10610f1557610eff610f10918490610d8f565b610f0b60028490610d44565b61044e565b610e06565b90610f3a909192610f24610078565b93849363391434e360e21b855260048501610d5c565b0390fd5b90565b90565b610f58610f53610f5d92610f41565b6101f6565b61022a565b90565b60209181520190565b60005b838110610f7d575050906000910152565b806020918301518185015201610f6c565b610fad610fb6602093610fbb93610fa481610741565b93848093610f60565b95869101610f69565b610083565b0190565b610fd59160208201916000818403910152610f8e565b90565b610ff2610fed610fe783610673565b9261066d565b610be2565b9060208110611000575b5090565b611013906000199060200360080261079a565b1638610ffc565b61102661102b91610aaf565b61042f565b90565b61104261103d6110479261022a565b610249565b610b16565b90565b611052610aef565b5061105c8161066a565b9061106682610673565b611079611073601f610f44565b9161022a565b116110ae57506110a6816110a061109a6110956110ab95610fd8565b61101a565b91610673565b1761102e565b610b42565b90565b6110d0906110ba610078565b91829163305a27a960e01b835260048301610fbf565b0390fd5b60018060a01b031690565b6110eb6110f091610aaf565b6110d4565b90565b6110fd90546110df565b90565b61110a60006110f3565b6111158260006102a1565b906111496111437f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610292565b91610292565b91611152610078565b8061115c81610221565b0390a356fe60806040526004361015610013575b610c12565b61001e60003561019d565b806306fdde0314610198578063095ea7b3146101935780630a5ab11d1461018e57806318160ddd1461018957806323b872dd14610184578063313ce5671461017f5780633644e5151461017a57806342966c681461017557806370a0823114610170578063715018a61461016b578063749124631461016657806379ba50971461016157806379cc67901461015c5780637ecebe001461015757806384b0196e146101525780638da5cb5b1461014d5780638dc34b9a1461014857806395d89b4114610143578063a9059cbb1461013e578063d505accf14610139578063dd62ed3e14610134578063e30c39781461012f578063f2fde38b1461012a5763fdbbd81c0361000e57610bda565b610b20565b610aeb565b610ab5565b610a4d565b61095e565b610929565b6108f6565b6108c1565b610885565b610720565b6106ec565b6106b9565b610686565b610653565b61061e565b6105cc565b610572565b610517565b6104b8565b610448565b6103f0565b610344565b610249565b60e01c90565b60405190565b600080fd5b600080fd5b60009103126101be57565b6101ae565b5190565b60209181520190565b60005b8381106101e4575050906000910152565b8060209183015181850152016101d3565b601f801991011690565b61021e61022760209361022c93610215816101c3565b938480936101c7565b958691016101d0565b6101f5565b0190565b61024691602082019160008184039101526101ff565b90565b34610279576102593660046101b3565b610275610264610dab565b61026c6101a3565b91829182610230565b0390f35b6101a9565b73ffffffffffffffffffffffffffffffffffffffff1690565b6102a09061027e565b90565b6102ac81610297565b036102b357565b600080fd5b905035906102c5826102a3565b565b90565b6102d3816102c7565b036102da57565b600080fd5b905035906102ec826102ca565b565b9190604083820312610317578061030b61031492600086016102b8565b936020016102df565b90565b6101ae565b151590565b61032a9061031c565b9052565b919061034290600060208501940190610321565b565b346103755761037161036061035a3660046102ee565b90610dc6565b6103686101a3565b9182918261032e565b0390f35b6101a9565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6103a79060086103ac930261037a565b61037e565b90565b906103ba9154610397565b90565b6103ca600a6000906103af565b90565b6103d690610297565b9052565b91906103ee906000602085019401906103cd565b565b34610420576104003660046101b3565b61041c61040b6103bd565b6104136101a3565b918291826103da565b0390f35b6101a9565b61042e906102c7565b9052565b919061044690600060208501940190610425565b565b34610478576104583660046101b3565b610474610463610ded565b61046b6101a3565b91829182610432565b0390f35b6101a9565b90916060828403126104b3576104b061049984600085016102b8565b936104a781602086016102b8565b936040016102df565b90565b6101ae565b346104e9576104e56104d46104ce36600461047d565b91610e03565b6104dc6101a3565b9182918261032e565b0390f35b6101a9565b60ff1690565b6104fd906104ee565b9052565b9190610515906000602085019401906104f4565b565b34610547576105273660046101b3565b610543610532610e59565b61053a6101a3565b91829182610501565b0390f35b6101a9565b90565b6105589061054c565b9052565b91906105709060006020850194019061054f565b565b346105a2576105823660046101b3565b61059e61058d610e74565b6105956101a3565b9182918261055c565b0390f35b6101a9565b906020828203126105c1576105be916000016102df565b90565b6101ae565b60000190565b346105fa576105e46105df3660046105a7565b610e88565b6105ec6101a3565b806105f6816105c6565b0390f35b6101a9565b9060208282031261061957610616916000016102b8565b90565b6101ae565b3461064e5761064a6106396106343660046105ff565b610ee7565b6106416101a3565b91829182610432565b0390f35b6101a9565b34610681576106633660046101b3565b61066b610f57565b6106736101a3565b8061067d816105c6565b0390f35b6101a9565b346106b4576106963660046101b3565b61069e611260565b6106a66101a3565b806106b0816105c6565b0390f35b6101a9565b346106e7576106c93660046101b3565b6106d1611375565b6106d96101a3565b806106e3816105c6565b0390f35b6101a9565b3461071b576107056106ff3660046102ee565b906113e6565b61070d6101a3565b80610717816105c6565b0390f35b6101a9565b346107505761074c61073b6107363660046105ff565b611405565b6107436101a3565b91829182610432565b0390f35b6101a9565b7fff000000000000000000000000000000000000000000000000000000000000001690565b61078390610755565b9052565b5190565b60209181520190565b60200190565b6107a3906102c7565b9052565b906107b48160209361079a565b0190565b60200190565b906107db6107d56107ce84610787565b809361078b565b92610794565b9060005b8181106107ec5750505090565b9091926108056107ff60019286516107a7565b946107b8565b91019190916107df565b939591946108616108566108759561084861086b956108829c9a61083b60e08c019260008d019061077a565b8a820360208c01526101ff565b9088820360408a01526101ff565b976060870190610425565b60808501906103cd565b60a083019061054f565b60c08184039101526107be565b90565b346108bc576108953660046101b3565b6108b86108a06114f1565b936108af9795979391936101a3565b9788978861080f565b0390f35b6101a9565b346108f1576108d13660046101b3565b6108ed6108dc61157d565b6108e46101a3565b918291826103da565b0390f35b6101a9565b346109245761090e6109093660046105ff565b611719565b6109166101a3565b80610920816105c6565b0390f35b6101a9565b34610959576109393660046101b3565b610955610944611724565b61094c6101a3565b91829182610230565b0390f35b6101a9565b3461098f5761098b61097a6109743660046102ee565b9061173a565b6109826101a3565b9182918261032e565b0390f35b6101a9565b61099d816104ee565b036109a457565b600080fd5b905035906109b682610994565b565b6109c18161054c565b036109c857565b600080fd5b905035906109da826109b8565b565b60e081830312610a48576109f382600083016102b8565b92610a0183602084016102b8565b92610a0f81604085016102df565b92610a1d82606083016102df565b92610a45610a2e84608085016109a9565b93610a3c8160a086016109cd565b9360c0016109cd565b90565b6101ae565b34610a8257610a6c610a603660046109dc565b959490949391936117e6565b610a746101a3565b80610a7e816105c6565b0390f35b6101a9565b9190604083820312610ab05780610aa4610aad92600086016102b8565b936020016102b8565b90565b6101ae565b34610ae657610ae2610ad1610acb366004610a87565b90611932565b610ad96101a3565b91829182610432565b0390f35b6101a9565b34610b1b57610afb3660046101b3565b610b17610b0661195a565b610b0e6101a3565b918291826103da565b0390f35b6101a9565b34610b4e57610b38610b333660046105ff565b6119e2565b610b406101a3565b80610b4a816105c6565b0390f35b6101a9565b60001c90565b90565b610b68610b6d91610b53565b610b59565b90565b610b7a9054610b5c565b90565b600b610b8b60008201610b70565b91610ba46002610b9d60018501610b70565b9301610b70565b90565b604090610bd1610bd89496959396610bc760608401986000850190610425565b6020830190610425565b0190610425565b565b34610c0d57610bea3660046101b3565b610c09610bf5610b7d565b610c009391936101a3565b93849384610ba7565b0390f35b6101a9565b600080fd5b606090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b9060016002830492168015610c6b575b6020831014610c6657565b610c1c565b91607f1691610c5b565b60209181520190565b600052602060002090565b9060009291805490610ca4610c9d83610c4b565b8094610c75565b91600181169081600014610cfd5750600114610cc0575b505050565b610ccd9192939450610c7e565b916000925b818410610ce55750500190388080610cbb565b60018160209295939554848601520191019290610cd2565b92949550505060ff1916825215156020020190388080610cbb565b90610d2291610c89565b90565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90610d5e906101f5565b810190811067ffffffffffffffff821117610d7857604052565b610d25565b90610d9d610d9692610d8d6101a3565b93848092610d18565b0383610d54565b565b610da890610d7d565b90565b610db3610c17565b50610dbe6005610d9f565b90565b600090565b610de391610dd2610dc1565b50610ddb6119ed565b9190916119fa565b600190565b600090565b610df5610de8565b50610e006004610b70565b90565b91610e2d92610e10610dc1565b50610e25610e1c6119ed565b82908491611a4b565b919091611b17565b600190565b600090565b90565b90565b610e51610e4c610e5692610e37565b610e3a565b6104ee565b90565b610e61610e32565b50610e6c6006610e3d565b90565b600090565b610e7c610e6f565b50610e85611bf8565b90565b610e9990610e946119ed565b611cb3565b565b610eaf610eaa610eb49261027e565b610e3a565b61027e565b90565b610ec090610e9b565b90565b610ecc90610eb7565b90565b90610ed990610ec3565b600052602052604060002090565b610efe610f0391610ef6610de8565b506002610ecf565b610b70565b90565b610f0e611d35565b610f16610f43565b565b90565b610f2f610f2a610f3492610f18565b610e3a565b61027e565b90565b610f4090610f1b565b90565b610f55610f506000610f37565b611e15565b565b610f5f610f06565b565b90610f6b906102c7565b9052565b90610f82610f7b6101a3565b9283610d54565b565b610f8e6060610f6f565b90565b90610fe2610fd96002610fa2610f84565b94610fbb610fb260008301610b70565b60008801610f61565b610fd3610fca60018301610b70565b60208801610f61565b01610b70565b60408401610f61565b565b610fed90610f91565b90565b610ffa90516102c7565b90565b61100961100e91610b53565b61037e565b90565b61101b9054610ffd565b90565b90565b61103561103061103a9261101e565b610e3a565b6102c7565b90565b61104a6301e13380611021565b90565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b61108b611091919392936102c7565b926102c7565b820180921161109c57565b61104d565b90565b6110b86110b36110bd926110a1565b610e3a565b6102c7565b90565b6110ca60056110a4565b90565b6110dc6110e2919392936102c7565b926102c7565b916110ee8382026102c7565b9281840414901517156110fd57565b61104d565b90565b61111961111461111e92611102565b610e3a565b6102c7565b90565b61112b6064611105565b90565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b61116961116f916102c7565b916102c7565b90811561117a570490565b61112e565b6111896060610f6f565b90565b60001b90565b906111bd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9161118c565b9181191691161790565b6111db6111d66111e0926102c7565b610e3a565b6102c7565b90565b90565b906111fb6111f6611202926111c7565b6111e3565b8254611192565b9055565b9061124c604060026112529461122b6000820161122560008801610ff0565b906111e6565b6112446001820161123e60208801610ff0565b906111e6565b019201610ff0565b906111e6565b565b9061125e91611206565b565b61126a600b610fe4565b4261128861128261127d60208501610ff0565b6102c7565b916102c7565b1061133957611337906112b061129e600a611011565b6112aa60408401610ff0565b90611e2c565b6113306112db6112cd60206112c6818601610ff0565b9401610ff0565b6112d561103d565b9061107c565b6113276113086112fa6112ec610ded565b6112f46110c0565b906110cd565b611302611121565b9061115d565b9161131e61131461117f565b9560008701610f61565b60208501610f61565b60408301610f61565b600b611254565b565b6113416101a3565b7f3d693ada00000000000000000000000000000000000000000000000000000000815280611371600482016105c6565b0390fd5b61137d6119ed565b61138561195a565b61139761139183610297565b91610297565b036113a7576113a590611e15565b565b6113e2906113b36101a3565b9182917f118cdaa7000000000000000000000000000000000000000000000000000000008352600483016103da565b0390fd5b90611403916113fe816113f76119ed565b8491611a4b565b611cb3565b565b61141790611411610de8565b50611ead565b90565b600090565b600090565b606090565b61143290610eb7565b90565b61144961144461144e92610f18565b61118c565b61054c565b90565b61146561146061146a92610f18565b610e3a565b6102c7565b90565b67ffffffffffffffff81116114855760208091020190565b610d25565b9061149c6114978361146d565b610f6f565b918252565b369037565b906114cb6114b38361148a565b926020806114c1869361146d565b92019103906114a1565b565b7f0f0000000000000000000000000000000000000000000000000000000000000090565b6114f961141a565b50611502610c17565b5061150b610c17565b50611514610de8565b5061151d61141f565b50611526610e6f565b5061152f611424565b50611538611ecf565b90611541611f0f565b90469061154d30611429565b906115586000611435565b9061156b6115666000611451565b6114a6565b906115746114cd565b96959493929190565b61158561141f565b506115906000611011565b90565b6115a49061159f611d35565b611616565b565b9160206115c89294936115c1604082019660008301906103cd565b01906103cd565b565b906115e973ffffffffffffffffffffffffffffffffffffffff9161118c565b9181191691161790565b90565b9061160b61160661161292610ec3565b6115f3565b82546115ca565b9055565b8061163261162c6116276000610f37565b610297565b91610297565b146116dd57611641600a611011565b908161165561164f83610297565b91610297565b146116a15761169f91817fbf33f78989fc8fb85c196844387d85a99f16411204b7bdc60cd0097521d8f8789161169561168c6101a3565b928392836115a6565b0390a1600a6115f6565b565b6116a96101a3565b7f2620eb3a000000000000000000000000000000000000000000000000000000008152806116d9600482016105c6565b0390fd5b6116e56101a3565b7fd92e233d00000000000000000000000000000000000000000000000000000000815280611715600482016105c6565b0390fd5b61172290611593565b565b61172c610c17565b506117376006610d9f565b90565b61175791611746610dc1565b5061174f6119ed565b919091611b17565b600190565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c990565b91946117c96117d3929897956117bf60a0966117b56117da9a6117ab60c08a019e60008b019061054f565b60208901906103cd565b60408701906103cd565b6060850190610425565b6080830190610425565b0190610425565b565b60200190565b5190565b9695919392949094426118016117fb836102c7565b916102c7565b116118db579061186a61187394939261185261181b61175c565b6118438c80948c9161182d8d91611f5e565b91926118376101a3565b97889660208801611780565b60208201810382520382610d54565b61186461185e826117e2565b916117dc565b20611f91565b92909192611fae565b8061188661188087610297565b91610297565b0361189b575061189992939190916119fa565b565b84906118d76118a86101a3565b9283927f4b800e46000000000000000000000000000000000000000000000000000000008452600484016115a6565b0390fd5b611916906118e76101a3565b9182917f6279130200000000000000000000000000000000000000000000000000000000835260048301610432565b0390fd5b9061192490610ec3565b600052602052604060002090565b6119579161194d61195292611945610de8565b50600361191a565b610ecf565b610b70565b90565b61196261141f565b5061196d6001611011565b90565b6119819061197c611d35565b611983565b565b61198e8160016115f6565b61199661157d565b906119ca6119c47f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093610ec3565b91610ec3565b916119d36101a3565b806119dd816105c6565b0390a3565b6119eb90611970565b565b6119f561141f565b503390565b91611a089291600192611fd5565b565b604090611a34611a3b9496959396611a2a606084019860008501906103cd565b6020830190610425565b0190610425565b565b90611a4891036102c7565b90565b929192611a59818390611932565b9081611a8d611a877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102c7565b916102c7565b03611a9a575b5050509050565b81611aad611aa7876102c7565b916102c7565b10611ad457611acb9394611ac2919392611a3d565b90600092611fd5565b80388080611a93565b50611b1384929192611ae46101a3565b9384937ffb8f41b200000000000000000000000000000000000000000000000000000000855260048501611a0a565b0390fd5b9182611b34611b2e611b296000610f37565b610297565b91610297565b14611bb05781611b55611b4f611b4a6000610f37565b610297565b91610297565b14611b6857611b6692919091612136565b565b611bac611b756000610f37565b611b7d6101a3565b9182917fec442f05000000000000000000000000000000000000000000000000000000008352600483016103da565b0390fd5b611bf4611bbd6000610f37565b611bc56101a3565b9182917f96c6fd1e000000000000000000000000000000000000000000000000000000008352600483016103da565b0390fd5b611c00610e6f565b50611c0a30611429565b611c3c611c367f0000000000000000000000000000000000000000000000000000000000000000610297565b91610297565b1480611c79575b600014611c6e577f000000000000000000000000000000000000000000000000000000000000000090565b611c7661233e565b90565b5046611cad611ca77f00000000000000000000000000000000000000000000000000000000000000006102c7565b916102c7565b14611c43565b9081611cd0611cca611cc56000610f37565b610297565b91610297565b14611ced57611ceb9190611ce46000610f37565b9091612136565b565b611d31611cfa6000610f37565b611d026101a3565b9182917f96c6fd1e000000000000000000000000000000000000000000000000000000008352600483016103da565b0390fd5b611d3d61157d565b611d56611d50611d4b6119ed565b610297565b91610297565b03611d5d57565b611d9f611d686119ed565b611d706101a3565b9182917f118cdaa7000000000000000000000000000000000000000000000000000000008352600483016103da565b0390fd5b1b90565b91906008611dd5910291611dcf73ffffffffffffffffffffffffffffffffffffffff84611da3565b92611da3565b9181191691161790565b9190611df5611df0611dfd93610ec3565b6115f3565b908354611da7565b9055565b611e1391611e0d61141f565b91611ddf565b565b611e2a90611e2560006001611e01565b6123dc565b565b80611e48611e42611e3d6000610f37565b610297565b91610297565b14611e6557611e6391611e5b6000610f37565b919091612136565b565b611ea9611e726000610f37565b611e7a6101a3565b9182917fec442f05000000000000000000000000000000000000000000000000000000008352600483016103da565b0390fd5b611ec4611ec991611ebc610de8565b506009610ecf565b610b70565b90565b90565b611ed7610c17565b50611f0c7f0000000000000000000000000000000000000000000000000000000000000000611f066007611ecc565b9061254a565b90565b611f17610c17565b50611f4c7f0000000000000000000000000000000000000000000000000000000000000000611f466008611ecc565b9061254a565b90565b6001611f5b91016102c7565b90565b611f7290611f6a610de8565b506009610ecf565b611f8e611f7e82610b70565b91611f8883611f4f565b906111e6565b90565b611fab90611f9d610e6f565b50611fa6611bf8565b612599565b90565b92611fc992611fd294611fbf61141f565b5092909192612662565b909291926127b0565b90565b909281611ff3611fed611fe86000610f37565b610297565b91610297565b146120e0578361201461200e6120096000610f37565b610297565b91610297565b14612098576120388361203361202c6003869061191a565b8790610ecf565b6111e6565b612042575b505050565b91909161208d61207b6120757f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593610ec3565b93610ec3565b936120846101a3565b91829182610432565b0390a338808061203d565b6120dc6120a56000610f37565b6120ad6101a3565b9182917f94280d62000000000000000000000000000000000000000000000000000000008352600483016103da565b0390fd5b6121246120ed6000610f37565b6120f56101a3565b9182917fe602df05000000000000000000000000000000000000000000000000000000008352600483016103da565b0390fd5b9061213391016102c7565b90565b9190918061215561214f61214a6000610f37565b610297565b91610297565b1460001461223a5761217a6121738361216e6004610b70565b61107c565b60046111e6565b5b8261219761219161218c6000610f37565b610297565b91610297565b1460001461220d576121bc6121b5836121b06004610b70565b611a3d565b60046111e6565b5b9190916122086121f66121f07fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93610ec3565b93610ec3565b936121ff6101a3565b91829182610432565b0390a3565b6122358261222f61222060028790610ecf565b9161222a83610b70565b612128565b906111e6565b6121bd565b61224e61224960028390610ecf565b610b70565b8061226161225b856102c7565b916102c7565b1061228a57612274612285918490611a3d565b61228060028490610ecf565b6111e6565b61217b565b906122c89091926122996101a3565b9384937fe450d38c00000000000000000000000000000000000000000000000000000000855260048501611a0a565b0390fd5b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90565b9095949261233c9461232b6123359261232160809661231760a088019c600089019061054f565b602087019061054f565b604085019061054f565b6060830190610425565b01906103cd565b565b612346610e6f565b5061234f6122cc565b6123c67f0000000000000000000000000000000000000000000000000000000000000000916123b77f0000000000000000000000000000000000000000000000000000000000000000466123a230611429565b916123ab6101a3565b968795602087016122f0565b60208201810382520382610d54565b6123d86123d2826117e2565b916117dc565b2090565b6123e66000611011565b6123f18260006115f6565b9061242561241f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610ec3565b91610ec3565b9161242e6101a3565b80612438816105c6565b0390a3565b6124469061054c565b90565b90565b61246061245b61246592612449565b61118c565b61054c565b90565b61247260ff61244c565b90565b600052602060002090565b906000929180549061249b61249483610c4b565b8094610c75565b916001811690816000146124f457506001146124b7575b505050565b6124c49192939450612475565b916000925b8184106124dc57505001903880806124b2565b600181602092959395548486015201910192906124c9565b92949550505060ff19168252151560200201903880806124b2565b9061251991612480565b90565b9061253c6125359261252c6101a3565b9384809261250f565b0383610d54565b565b6125479061251c565b90565b90612553610c17565b5061255d8261243d565b61257661257061256b612468565b61054c565b9161054c565b141560001461258c57506125899061296a565b90565b612596915061253e565b90565b6042916125a4610e6f565b50604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b600090565b6125eb6125f091610b53565b6111c7565b90565b90565b61260a61260561260f926125f3565b610e3a565b6102c7565b90565b61264861264f9461263e606094989795612634608086019a600087019061054f565b60208501906104f4565b604083019061054f565b019061054f565b565b6126596101a3565b3d6000823e3d90fd5b93929361266d61141f565b506126766125da565b5061267f610e6f565b50612689856125df565b6126bb6126b57f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a06125f6565b916102c7565b1161274f57906126df602094956000949392936126d66101a3565b94859485612612565b838052039060015afa1561274a576126f860005161118c565b8061271461270e6127096000610f37565b610297565b91610297565b1461272c576000916127266000611435565b91929190565b506127376000610f37565b6001916127446000611435565b91929190565b612651565b50505061275c6000610f37565b9060039291929190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6004111561279f57565b612766565b906127ae82612795565b565b806127c46127be60006127a4565b916127a4565b146000146127d0575050565b806127e46127de60016127a4565b916127a4565b14600014612828576127f46101a3565b7ff645eedf00000000000000000000000000000000000000000000000000000000815280612824600482016105c6565b0390fd5b8061283c61283660026127a4565b916127a4565b1460001461288b57612887612850836125df565b6128586101a3565b9182917ffce698f700000000000000000000000000000000000000000000000000000000835260048301610432565b0390fd5b61289e61289860036127a4565b916127a4565b146128a65750565b6128e1906128b26101a3565b9182917fd78bce0c0000000000000000000000000000000000000000000000000000000083526004830161055c565b0390fd5b90565b6128fc6128f7612901926128e5565b610e3a565b6102c7565b90565b67ffffffffffffffff81116129225761291e6020916101f5565b0190565b610d25565b9061293961293483612904565b610f6f565b918252565b369037565b9061296861295083612927565b9260208061295e8693612904565b920191039061293e565b565b612972610c17565b5061297c816129d5565b9061298f61298a60206128e8565b612943565b918252602082015290565b6129ae6129a96129b392612449565b610e3a565b6102c7565b90565b90565b6129cd6129c86129d2926129b6565b610e3a565b6102c7565b90565b6129ea6129ef916129e4610de8565b5061243d565b6125df565b6129f960ff61299a565b1680612a0e612a08601f6129b9565b916102c7565b11612a165790565b612a1e6101a3565b7fb3512b0c00000000000000000000000000000000000000000000000000000000815280612a4e600482016105c6565b0390fdfea2646970667358221220de57ed290e4d5802a0e57292ee68acfea73106f097f5df3651e4d96a0e4bf1c664736f6c6343000819003300000000000000000000000097dbe067b92eb8d0606daafb9987bffe5ae86ba900000000000000000000000097dbe067b92eb8d0606daafb9987bffe5ae86ba9