Overview ERC20
PRICE
n/a

ON-CHAIN MARKET CAP n/a

Total Supply:
420,000,000,000.00 PUMP

Holders:
946
Profile Summary
Blockchain:
C-Chain (43114)


Decimals:
18
Contract Source Code Verified (Partial Match)
Contract Name:
ERC20Token

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 1000000 runs

Created At:
Wed, 01 May 2024 09:14:33 GMT
ERC20Token.sol
ERC20Token.sol
ERC20Token.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "_name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "_symbol",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "_supply",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_stratosphereAddress",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_owner",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_tradingStartsAt",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_dexAggregator",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_dexAdapter",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_deployer",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "_isStratosphereEnabled",
        "type": "bool"
      }
    ],
    "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": [],
    "name": "ERC20Token__ExceedsMaximumHolding",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ERC20Token__MissingLiquidityPool",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ERC20Token__NonStratosphereNFTHolder",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ERC20Token__TradingNotStarted",
    "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": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "currentNonce",
        "type": "uint256"
      }
    ],
    "name": "InvalidAccountNonce",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidShortString",
    "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"
  },
  {
    "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": "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"
  },
  {
    "inputs": [],
    "name": "DOMAIN_SEPARATOR",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "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": [],
    "name": "decimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "deployer",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "dexAdapter",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "dexAggregator",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "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": "isStratosphereEnabled",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "liquidityPool",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxHoldingAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "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": [
      {
        "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": [
      {
        "internalType": "address",
        "name": "_liquidityPool",
        "type": "address"
      }
    ],
    "name": "setLiquidityPool",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "stratosphere",
    "outputs": [
      {
        "internalType": "contract IStratosphere",
        "name": "",
        "type": "address"
      }
    ],
    "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": [],
    "name": "tradingStartsAt",
    "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"
  }
]


Contract Creation Code
61024060405234801561001157600080fd5b50604051612781380380612781833981016040819052610030916107a7565b858a80604051806040016040528060018152602001603160f81b8152508d8d816003908161005e919061090e565b50600461006b828261090e565b5061007b915083905060056101b5565b6101205261008a8160066101b5565b61014052815160208084019190912060e052815190820120610100524660a05261011760e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b03811661015057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610159816101e8565b506001600160a01b03871661020052610172338961023a565b61017d886064610274565b6101a0526101c0949094526001600160a01b03928316610160529082166101805291151561022052166101e05250610ad89350505050565b60006020835110156101d1576101ca83610294565b90506101e2565b816101dc848261090e565b5060ff90505b92915050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166102645760405163ec442f0560e01b815260006004820152602401610147565b610270600083836102d2565b5050565b600061271061028383856109e3565b61028d91906109fa565b9392505050565b600080829050601f815111156102bf578260405163305a27a960e01b81526004016101479190610a1c565b80516102ca82610a4f565b179392505050565b6102dd838383610452565b6101c0516009546001600160a01b0316610378576008546001600160a01b038581169116148061031a57506008546001600160a01b038481169116145b6103725760405162461bcd60e51b815260206004820152602360248201527f50617469656e6365202d2054726164696e67204e6f742053746172746564205960448201526265742160e81b6064820152608401610147565b50505050565b804210156103995760405163063e8a1760e11b815260040160405180910390fd5b60006103a58242610a73565b6102205190915060006103b78261057c565b6103c69060ff16610e10610a86565b90508061ffff168311156103dd5750505050505050565b8180156103eb5750610e1083105b15610434576103f986610594565b610402876105e8565b80156104125750610412866105e8565b61042f576040516324b5c70d60e21b815260040160405180910390fd5b610449565b8061ffff168310156104495761044986610594565b50505050505050565b6001600160a01b03831661047d5780600260008282546104729190610aac565b909155506104ef9050565b6001600160a01b038316600090815260208190526040902054818110156104d05760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610147565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661050b5760028054829003905561052a565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161056f91815260200190565b60405180910390a3505050565b6000811561058c57506002919050565b506001919050565b6009546001600160a01b038281169116146105e5576101a0516001600160a01b03821660009081526020819052604090205411156105e55760405163065234eb60e31b815260040160405180910390fd5b50565b6000610160516001600160a01b0316826001600160a01b031614806106215750610180516001600160a01b0316826001600160a01b0316145b80610699575061020051604051631dcf00b560e21b81526001600160a01b0384811660048301529091169063773c02d490602401602060405180830381865afa158015610672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106969190610abf565b15155b806106b157506009546001600160a01b038381169116145b156106ba575060015b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156106f05781810151838201526020016106d8565b50506000910152565b600082601f83011261070a57600080fd5b81516001600160401b0380821115610724576107246106bf565b604051601f8301601f19908116603f0116810190828211818310171561074c5761074c6106bf565b8160405283815286602085880101111561076557600080fd5b6107768460208301602089016106d5565b9695505050505050565b80516001600160a01b03811681146106ba57600080fd5b805180151581146106ba57600080fd5b6000806000806000806000806000806101408b8d0312156107c757600080fd5b8a516001600160401b03808211156107de57600080fd5b6107ea8e838f016106f9565b9b5060208d015191508082111561080057600080fd5b5061080d8d828e016106f9565b99505060408b0151975061082360608c01610780565b965061083160808c01610780565b955060a08b0151945061084660c08c01610780565b935061085460e08c01610780565b92506108636101008c01610780565b91506108726101208c01610797565b90509295989b9194979a5092959850565b600181811c9082168061089757607f821691505b6020821081036108b757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610909576000816000526020600020601f850160051c810160208610156108e65750805b601f850160051c820191505b81811015610905578281556001016108f2565b5050505b505050565b81516001600160401b03811115610927576109276106bf565b61093b816109358454610883565b846108bd565b602080601f83116001811461097057600084156109585750858301515b600019600386901b1c1916600185901b178555610905565b600085815260208120601f198616915b8281101561099f57888601518255948401946001909101908401610980565b50858210156109bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176101e2576101e26109cd565b600082610a1757634e487b7160e01b600052601260045260246000fd5b500490565b6020815260008251806020840152610a3b8160408501602087016106d5565b601f01601f19169190910160400192915050565b805160208083015191908110156108b75760001960209190910360031b1b16919050565b818103818111156101e2576101e26109cd565b61ffff818116838216028082169190828114610aa457610aa46109cd565b505092915050565b808201808211156101e2576101e26109cd565b600060208284031215610ad157600080fd5b5051919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516102005161022051611bd8610ba96000396000818161028b0152610ff901526000818161023f01526116e0015260006103ff01526000818161047f0152610ea6015260008181610365015261156b0152600081816103aa015261164701526000818161031001526115f201526000610cb201526000610c8501526000610bb601526000610b8e01526000610ae901526000610b1301526000610b3d0152611bd86000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80637c21d5e0116100ee57806395d89b4111610097578063d5f3948811610071578063d5f39488146103fa578063dd62ed3e14610421578063f2fde38b14610467578063fe4c4af41461047a57600080fd5b806395d89b41146103cc578063a9059cbb146103d4578063d505accf146103e757600080fd5b806389f9a1d3116100c857806389f9a1d3146103605780638da5cb5b1461038757806391f03efd146103a557600080fd5b80637c21d5e01461030b5780637ecebe001461033257806384b0196e1461034557600080fd5b80633644e51511610150578063665a11ca1161012a578063665a11ca146102ad57806370a08231146102cd578063715018a61461030357600080fd5b80633644e5151461023257806345d818431461023a5780634b858e561461028657600080fd5b806318160ddd1161018157806318160ddd146101fe57806323b872dd14610210578063313ce5671461022357600080fd5b806301877020146101a857806306fdde03146101bd578063095ea7b3146101db575b600080fd5b6101bb6101b6366004611825565b6104a1565b005b6101c561053d565b6040516101d291906118ab565b60405180910390f35b6101ee6101e93660046118be565b6105cf565b60405190151581526020016101d2565b6002545b6040519081526020016101d2565b6101ee61021e3660046118e8565b6105e9565b604051601281526020016101d2565b61020261060d565b6102617f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d2565b6101ee7f000000000000000000000000000000000000000000000000000000000000000081565b6009546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6102026102db366004611825565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101bb61061c565b6102617f000000000000000000000000000000000000000000000000000000000000000081565b610202610340366004611825565b610630565b61034d61065b565b6040516101d29796959493929190611924565b6102027f000000000000000000000000000000000000000000000000000000000000000081565b60085473ffffffffffffffffffffffffffffffffffffffff16610261565b6102617f000000000000000000000000000000000000000000000000000000000000000081565b6101c56106bd565b6101ee6103e23660046118be565b6106cc565b6101bb6103f53660046119e6565b6106da565b6102617f000000000000000000000000000000000000000000000000000000000000000081565b61020261042f366004611a59565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101bb610475366004611825565b61088c565b6102027f000000000000000000000000000000000000000000000000000000000000000081565b6104a96108f0565b73ffffffffffffffffffffffffffffffffffffffff81166104f6576040517f45ce07b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606003805461054c90611a8c565b80601f016020809104026020016040519081016040528092919081815260200182805461057890611a8c565b80156105c55780601f1061059a576101008083540402835291602001916105c5565b820191906000526020600020905b8154815290600101906020018083116105a857829003601f168201915b5050505050905090565b6000336105dd818585610943565b60019150505b92915050565b6000336105f7858285610955565b610602858585610a24565b506001949350505050565b6000610617610acf565b905090565b6106246108f0565b61062e6000610c07565b565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760205260408120546105e3565b60006060806000806000606061066f610c7e565b610677610cab565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b60606004805461054c90611a8c565b6000336105dd818585610a24565b8342111561071c576040517f62791302000000000000000000000000000000000000000000000000000000008152600481018590526024015b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886107768c73ffffffffffffffffffffffffffffffffffffffff16600090815260076020526040902080546001810190915590565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006107de82610cd8565b905060006107ee82878787610d20565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610875576040517f4b800e4600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301528b166024820152604401610713565b6108808a8a8a610943565b50505050505050505050565b6108946108f0565b73ffffffffffffffffffffffffffffffffffffffff81166108e4576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610713565b6108ed81610c07565b50565b60085473ffffffffffffffffffffffffffffffffffffffff16331461062e576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610713565b6109508383836001610d4e565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a1e5781811015610a0f576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610713565b610a1e84848484036000610d4e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610a74576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610713565b73ffffffffffffffffffffffffffffffffffffffff8216610ac4576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610713565b610950838383610e96565b60003073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015610b3557507f000000000000000000000000000000000000000000000000000000000000000046145b15610b5f57507f000000000000000000000000000000000000000000000000000000000000000090565b610617604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606106177f000000000000000000000000000000000000000000000000000000000000000060056110d7565b60606106177f000000000000000000000000000000000000000000000000000000000000000060066110d7565b60006105e3610ce5610acf565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b600080600080610d3288888888611182565b925092509250610d42828261127c565b50909695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416610d9e576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610713565b73ffffffffffffffffffffffffffffffffffffffff8316610dee576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610713565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602090815260408083209387168352929052208290558015610a1e578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e8891815260200190565b60405180910390a350505050565b610ea1838383611384565b6009547f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16610faf5760085473ffffffffffffffffffffffffffffffffffffffff85811691161480610f23575060085473ffffffffffffffffffffffffffffffffffffffff8481169116145b610a1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f50617469656e6365202d2054726164696e67204e6f742053746172746564205960448201527f65742100000000000000000000000000000000000000000000000000000000006064820152608401610713565b80421015610fe9576040517f0c7d142e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ff58242611b0e565b90507f000000000000000000000000000000000000000000000000000000000000000060006110238261152f565b6110329060ff16610e10611b21565b90508061ffff168311156110495750505050505050565b8180156110575750610e1083105b156110b95761106586611547565b61106e876115ee565b801561107e575061107e866115ee565b6110b4576040517f92d71c3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110ce565b8061ffff168310156110ce576110ce86611547565b50505050505050565b606060ff83146110f1576110ea83611781565b90506105e3565b8180546110fd90611a8c565b80601f016020809104026020016040519081016040528092919081815260200182805461112990611a8c565b80156111765780601f1061114b57610100808354040283529160200191611176565b820191906000526020600020905b81548152906001019060200180831161115957829003601f168201915b505050505090506105e3565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156111bd5750600091506003905082611272565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611211573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661126857506000925060019150829050611272565b9250600091508190505b9450945094915050565b600082600381111561129057611290611b47565b03611299575050565b60018260038111156112ad576112ad611b47565b036112e4576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028260038111156112f8576112f8611b47565b03611332576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610713565b600382600381111561134657611346611b47565b03611380576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610713565b5050565b73ffffffffffffffffffffffffffffffffffffffff83166113bc5780600260008282546113b19190611b76565b9091555061146e9050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015611442576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610713565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216611497576002805482900390556114c3565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161152291815260200190565b60405180910390a3505050565b6000811561153f57506002919050565b506001919050565b60095473ffffffffffffffffffffffffffffffffffffffff8281169116146108ed577f00000000000000000000000000000000000000000000000000000000000000006115b68273ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b11156108ed576040517f3291a75800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061169557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061174e57506040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063773c02d490602401602060405180830381865afa158015611727573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174b9190611b89565b15155b80611773575060095473ffffffffffffffffffffffffffffffffffffffff8381169116145b1561177c575060015b919050565b6060600061178e836117c0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600060ff8216601f8111156105e3576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461177c57600080fd5b60006020828403121561183757600080fd5b61184082611801565b9392505050565b6000815180845260005b8181101561186d57602081850181015186830182015201611851565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006118406020830184611847565b600080604083850312156118d157600080fd5b6118da83611801565b946020939093013593505050565b6000806000606084860312156118fd57600080fd5b61190684611801565b925061191460208501611801565b9150604084013590509250925092565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e0602084015261196160e084018a611847565b8381036040850152611973818a611847565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b818110156119d4578351835292840192918401916001016119b8565b50909c9b505050505050505050505050565b600080600080600080600060e0888a031215611a0157600080fd5b611a0a88611801565b9650611a1860208901611801565b95506040880135945060608801359350608088013560ff81168114611a3c57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611a6c57600080fd5b611a7583611801565b9150611a8360208401611801565b90509250929050565b600181811c90821680611aa057607f821691505b602082108103611ad9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156105e3576105e3611adf565b61ffff818116838216028082169190828114611b3f57611b3f611adf565b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b808201808211156105e3576105e3611adf565b600060208284031215611b9b57600080fd5b505191905056fea2646970667358221220e2873033f989d334b56e07dbaadaf2ec4193276c81764bcbc20e4355ac343b9264736f6c634300081900330000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000054d17db76321263eca000000000000000000000000000000008e287adcf9bf6773a87e1a278aa9042bef44b600000000000000000000000002606a3095540c49d509baa8e47593f7c8d8f5f16000000000000000000000000000000000000000000000000000000006636a1d000000000000000000000000055477d8537ede381784b448876afaa98aa450e6300000000000000000000000001e5c45cb25e30860c2fb80369a9c27628911a2b0000000000000000000000006176feb65958f08ed4310c4b2900fabd5d8ae8940000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000450554d5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000450554d5000000000000000000000000000000000000000000000000000000000