Overview ERC20
PRICE
n/a

ON-CHAIN MARKET CAP n/a

Total Supply:
0 GIRAFFE

Profile Summary
Blockchain:
Fuji (43113)


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

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No

Created At:
Sat, 13 Jan 2024 23:07:44 GMT
Ownable.sol
@openzeppelin
contracts
access
Ownable.sol


Contract ABI
[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "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": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "OwnableInvalidOwner",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "OwnableUnauthorizedAccount",
    "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": [
      {
        "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": [
      {
        "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": "launchControl",
    "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": "manualSwap",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "marketingSellFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "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": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceTokenOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amountFee",
        "type": "uint256"
      }
    ],
    "name": "setFee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "_state",
        "type": "bool"
      }
    ],
    "name": "setLaunchControl",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_liquidityPool",
        "type": "address"
      }
    ],
    "name": "setLiquidityPool",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint32",
        "name": "antiSnipeThreshold",
        "type": "uint32"
      }
    ],
    "name": "setSniperControl",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_treasury",
        "type": "address"
      }
    ],
    "name": "setTreasury",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "showMaxWalletAllowance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "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": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
60806040526001600560146101000a81548160ff0219169083151502179055507360ae616a2155ee3d9a68541ba4544862310933d4600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f600b5573b399fbfe08b7698efea64b4c5c85a9217bc971ff600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000db57600080fd5b50336040518060400160405280600d81526020017f476972616666654f6e41766178000000000000000000000000000000000000008152506040518060400160405280600781526020017f474952414646450000000000000000000000000000000000000000000000000081525081600390816200015a9190620011f9565b5080600490816200016c9190620011f9565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620001e45760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620001db919062001325565b60405180910390fd5b620001f5816200022f60201b60201c565b5062000229336012600a6200020b9190620014c5565b64e8d4a510006200021d919062001516565b620002f560201b60201c565b62001b00565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200036a5760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000361919062001325565b60405180910390fd5b6200037e600083836200038260201b60201c565b5050565b600560149054906101000a900460ff16156200081557600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603620004bb57620003ff6200081a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620004735750620004446200081a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b620004b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004ac906200160e565b60405180910390fd5b62000815565b6000620004cd6200081a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161490506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161490508315801562000609575082155b80156200061e57508115806200061d575080155b5b156200067d5760095462000638876200084460201b60201c565b11156200067c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200067390620016cc565b60405180910390fd5b5b831580156200068a575082155b80156200069f57508115806200069e575080155b5b1562000729576064600a546012600a620006ba9190620014c5565b64e8d4a51000620006cc919062001516565b620006d8919062001516565b620006e491906200171d565b851062000728576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200071f90620017f1565b60405180910390fd5b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614801562000787575084155b15620007fc576064600b54876200079f919062001516565b620007ab91906200171d565b90506000811115620007eb57620007c8816200088c60201b60201c565b60004790506000811115620007e957620007e84762000ae860201b60201c565b5b505b8086620007f9919062001813565b95505b6200080f88888862000b5560201b60201c565b50505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600267ffffffffffffffff811115620008ac57620008ab62000f8a565b5b604051908082528060200260200182016040528015620008db5781602001602082028036833780820191505090505b5090503081600081518110620008f657620008f56200184e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200099e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009c49190620018b3565b81600181518110620009db57620009da6200184e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505062000a4a30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168462000d8560201b60201c565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663762b15628360008430426040518663ffffffff1660e01b815260040162000ab095949392919062001a07565b600060405180830381600087803b15801562000acb57600080fd5b505af115801562000ae0573d6000803e3d6000fd5b505050505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801562000b51573d6000803e3d6000fd5b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000bab57806002600082825462000b9e919062001a6b565b9250508190555062000c81565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101562000c3a578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040162000c319392919062001aa6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000ccc578060026000828254039250508190555062000d19565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000d78919062001ae3565b60405180910390a3505050565b62000d9a838383600162000d9f60201b60201c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160362000e145760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040162000e0b919062001325565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000e895760006040517f94280d6200000000000000000000000000000000000000000000000000000000815260040162000e80919062001325565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801562000f79578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405162000f70919062001ae3565b60405180910390a35b50505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200100157607f821691505b60208210810362001017576200101662000fb9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620010817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001042565b6200108d868362001042565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620010da620010d4620010ce84620010a5565b620010af565b620010a5565b9050919050565b6000819050919050565b620010f683620010b9565b6200110e6200110582620010e1565b8484546200104f565b825550505050565b600090565b6200112562001116565b62001132818484620010eb565b505050565b5b818110156200115a576200114e6000826200111b565b60018101905062001138565b5050565b601f821115620011a95762001173816200101d565b6200117e8462001032565b810160208510156200118e578190505b620011a66200119d8562001032565b83018262001137565b50505b505050565b600082821c905092915050565b6000620011ce60001984600802620011ae565b1980831691505092915050565b6000620011e98383620011bb565b9150826002028217905092915050565b620012048262000f7f565b67ffffffffffffffff81111562001220576200121f62000f8a565b5b6200122c825462000fe8565b620012398282856200115e565b600060209050601f8311600181146200127157600084156200125c578287015190505b620012688582620011db565b865550620012d8565b601f19841662001281866200101d565b60005b82811015620012ab5784890151825560018201915060208501945060208101905062001284565b86831015620012cb5784890151620012c7601f891682620011bb565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200130d82620012e0565b9050919050565b6200131f8162001300565b82525050565b60006020820190506200133c600083018462001314565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620013d057808604811115620013a857620013a762001342565b5b6001851615620013b85780820291505b8081029050620013c88562001371565b945062001388565b94509492505050565b600082620013eb5760019050620014be565b81620013fb5760009050620014be565b81600181146200141457600281146200141f5762001455565b6001915050620014be565b60ff84111562001434576200143362001342565b5b8360020a9150848211156200144e576200144d62001342565b5b50620014be565b5060208310610133831016604e8410600b84101617156200148f5782820a90508381111562001489576200148862001342565b5b620014be565b6200149e84848460016200137e565b92509050818404811115620014b857620014b762001342565b5b81810290505b9392505050565b6000620014d282620010a5565b9150620014df83620010a5565b92506200150e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013d9565b905092915050565b60006200152382620010a5565b91506200153083620010a5565b92508282026200154081620010a5565b915082820484148315176200155a576200155962001342565b5b5092915050565b600082825260208201905092915050565b7f54726164696e672069732063757272656e746c792064697361626c65642e205060008201527f6c65617365207761697420666f7220746865206f6666696369616c206c61756e60208201527f63682e0000000000000000000000000000000000000000000000000000000000604082015250565b6000620015f660438362001561565b9150620016038262001572565b606082019050919050565b600060208201905081810360008301526200162981620015e7565b9050919050565b7f57616c6c65742062616c616e6365206578636565647320736e6970657220707260008201527f6f74656374696f6e206c696d6974732e20506c6561736520726564756365207460208201527f686520746f6b656e20616d6f756e742e00000000000000000000000000000000604082015250565b6000620016b460508362001561565b9150620016c18262001630565b606082019050919050565b60006020820190508181036000830152620016e781620016a5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200172a82620010a5565b91506200173783620010a5565b9250826200174a5762001749620016ee565b5b828204905092915050565b7f416d6f756e7420706572207472616e73616374696f6e2065786365656473207360008201527f6e697065722070726f74656374696f6e2e20506c65617365207265647563652060208201527f74686520746f6b656e20616d6f756e742e000000000000000000000000000000604082015250565b6000620017d960518362001561565b9150620017e68262001755565b606082019050919050565b600060208201905081810360008301526200180c81620017ca565b9050919050565b60006200182082620010a5565b91506200182d83620010a5565b925082820390508181111562001848576200184762001342565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6200188d8162001300565b81146200189957600080fd5b50565b600081519050620018ad8162001882565b92915050565b600060208284031215620018cc57620018cb6200187d565b5b6000620018dc848285016200189c565b91505092915050565b620018f081620010a5565b82525050565b6000819050919050565b6000620019216200191b6200191584620018f6565b620010af565b620010a5565b9050919050565b620019338162001900565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b620019708162001300565b82525050565b600062001984838362001965565b60208301905092915050565b6000602082019050919050565b6000620019aa8262001939565b620019b6818562001944565b9350620019c38362001955565b8060005b83811015620019fa578151620019de888262001976565b9750620019eb8362001990565b925050600181019050620019c7565b5085935050505092915050565b600060a08201905062001a1e6000830188620018e5565b62001a2d602083018762001928565b818103604083015262001a4181866200199d565b905062001a52606083018562001314565b62001a616080830184620018e5565b9695505050505050565b600062001a7882620010a5565b915062001a8583620010a5565b925082820190508082111562001aa05762001a9f62001342565b5b92915050565b600060608201905062001abd600083018662001314565b62001acc6020830185620018e5565b62001adb6040830184620018e5565b949350505050565b600060208201905062001afa6000830184620018e5565b92915050565b61237b8062001b106000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063665a11ca116100c3578063a9059cbb1161007c578063a9059cbb14610356578063dd62ed3e14610386578063e14f08d5146103b6578063e7f444b3146103c0578063f0f44260146103de578063f2fde38b146103fa5761014d565b8063665a11ca146102a657806369fe0e2d146102c457806370a08231146102e0578063715018a6146103105780638da5cb5b1461031a57806395d89b41146103385761014d565b806323b872dd1161011557806323b872dd146101f85780632c60e32b14610228578063313ce5671461024457806340a4f8ea1461026257806351bc3c85146102805780635c91208c1461028a5761014d565b8063018770201461015257806306fdde031461016e578063095ea7b31461018c5780630f5a98a0146101bc57806318160ddd146101da575b600080fd5b61016c600480360381019061016791906117ce565b610416565b005b610176610462565b604051610183919061188b565b60405180910390f35b6101a660048036038101906101a191906118e3565b6104f4565b6040516101b3919061193e565b60405180910390f35b6101c4610517565b6040516101d19190611968565b60405180910390f35b6101e2610521565b6040516101ef9190611968565b60405180910390f35b610212600480360381019061020d9190611983565b61052b565b60405161021f919061193e565b60405180910390f35b610242600480360381019061023d9190611a02565b61055a565b005b61024c61057f565b6040516102599190611a4b565b60405180910390f35b61026a610588565b604051610277919061193e565b60405180910390f35b61028861059b565b005b6102a4600480360381019061029f9190611aa2565b610638565b005b6102ae610670565b6040516102bb9190611ade565b60405180910390f35b6102de60048036038101906102d99190611af9565b610696565b005b6102fa60048036038101906102f591906117ce565b6106ec565b6040516103079190611968565b60405180910390f35b610318610734565b005b610322610748565b60405161032f9190611ade565b60405180910390f35b610340610772565b60405161034d919061188b565b60405180910390f35b610370600480360381019061036b91906118e3565b610804565b60405161037d919061193e565b60405180910390f35b6103a0600480360381019061039b9190611b26565b610827565b6040516103ad9190611968565b60405180910390f35b6103be6108ae565b005b6103c86108c0565b6040516103d59190611968565b60405180910390f35b6103f860048036038101906103f391906117ce565b6108c6565b005b610414600480360381019061040f91906117ce565b610912565b005b61041e610998565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606003805461047190611b95565b80601f016020809104026020016040519081016040528092919081815260200182805461049d90611b95565b80156104ea5780601f106104bf576101008083540402835291602001916104ea565b820191906000526020600020905b8154815290600101906020018083116104cd57829003601f168201915b5050505050905090565b6000806104ff610a1f565b905061050c818585610a27565b600191505092915050565b6000600954905090565b6000600254905090565b600080610536610a1f565b9050610543858285610a39565b61054e858585610acd565b60019150509392505050565b610562610998565b80600560146101000a81548160ff02191690831515021790555050565b60006012905090565b600560149054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105dc610a1f565b73ffffffffffffffffffffffffffffffffffffffff16146105fc57600080fd5b6000610607306106ec565b9050600081111561061c5761061b81610bc1565b5b600047905060008111156106345761063381610e04565b5b5050565b610640610998565b620186a08163ffffffff16610653610521565b61065d9190611bf5565b6106679190611c66565b60098190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61069e610998565b600f8111156106e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d990611ce3565b60405180910390fd5b80600b8190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61073c610998565b6107466000610e70565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461078190611b95565b80601f01602080910402602001604051908101604052809291908181526020018280546107ad90611b95565b80156107fa5780601f106107cf576101008083540402835291602001916107fa565b820191906000526020600020905b8154815290600101906020018083116107dd57829003601f168201915b5050505050905090565b60008061080f610a1f565b905061081c818585610acd565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6108b6610998565b6108be610734565b565b600b5481565b6108ce610998565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61091a610998565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361098c5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016109839190611ade565b60405180910390fd5b61099581610e70565b50565b6109a0610a1f565b73ffffffffffffffffffffffffffffffffffffffff166109be610748565b73ffffffffffffffffffffffffffffffffffffffff1614610a1d576109e1610a1f565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610a149190611ade565b60405180910390fd5b565b600033905090565b610a348383836001610f36565b505050565b6000610a458484610827565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ac75781811015610ab7578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610aae93929190611d03565b60405180910390fd5b610ac684848484036000610f36565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b3f5760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610b369190611ade565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bb15760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610ba89190611ade565b60405180910390fd5b610bbc83838361110d565b505050565b6000600267ffffffffffffffff811115610bde57610bdd611d3a565b5b604051908082528060200260200182016040528015610c0c5781602001602082028036833780820191505090505b5090503081600081518110610c2457610c23611d69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190611dad565b81600181518110610d0357610d02611d69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610d6a30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610a27565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663762b15628360008430426040518663ffffffff1660e01b8152600401610dce959493929190611edd565b600060405180830381600087803b158015610de857600080fd5b505af1158015610dfc573d6000803e3d6000fd5b505050505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610e6c573d6000803e3d6000fd5b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610fa85760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610f9f9190611ade565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361101a5760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016110119190611ade565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015611107578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110fe9190611968565b60405180910390a35b50505050565b600560149054906101000a900460ff161561154157600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361122f57611180610748565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806111eb57506111bc610748565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122190611fcf565b60405180910390fd5b611541565b6000611239610748565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161490506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614905083158015611374575082155b80156113875750811580611386575080155b5b156113da57600954611398876106ec565b11156113d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d090612087565b60405180910390fd5b5b831580156113e6575082155b80156113f957508115806113f8575080155b5b15611477576064600a546012600a61141191906121da565b64e8d4a510006114219190611bf5565b61142b9190611bf5565b6114359190611c66565b8510611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d906122bd565b60405180910390fd5b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161480156114d4575084155b15611530576064600b54876114e99190611bf5565b6114f39190611c66565b905060008111156115215761150781610bc1565b6000479050600081111561151f5761151e47610e04565b5b505b808661152d91906122dd565b95505b61153b888888611546565b50505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361159857806002600082825461158c9190612311565b9250508190555061166b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611624578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161161b93929190611d03565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b45780600260008282540392505081905550611701565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161175e9190611968565b60405180910390a3505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061179b82611770565b9050919050565b6117ab81611790565b81146117b657600080fd5b50565b6000813590506117c8816117a2565b92915050565b6000602082840312156117e4576117e361176b565b5b60006117f2848285016117b9565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561183557808201518184015260208101905061181a565b60008484015250505050565b6000601f19601f8301169050919050565b600061185d826117fb565b6118678185611806565b9350611877818560208601611817565b61188081611841565b840191505092915050565b600060208201905081810360008301526118a58184611852565b905092915050565b6000819050919050565b6118c0816118ad565b81146118cb57600080fd5b50565b6000813590506118dd816118b7565b92915050565b600080604083850312156118fa576118f961176b565b5b6000611908858286016117b9565b9250506020611919858286016118ce565b9150509250929050565b60008115159050919050565b61193881611923565b82525050565b6000602082019050611953600083018461192f565b92915050565b611962816118ad565b82525050565b600060208201905061197d6000830184611959565b92915050565b60008060006060848603121561199c5761199b61176b565b5b60006119aa868287016117b9565b93505060206119bb868287016117b9565b92505060406119cc868287016118ce565b9150509250925092565b6119df81611923565b81146119ea57600080fd5b50565b6000813590506119fc816119d6565b92915050565b600060208284031215611a1857611a1761176b565b5b6000611a26848285016119ed565b91505092915050565b600060ff82169050919050565b611a4581611a2f565b82525050565b6000602082019050611a606000830184611a3c565b92915050565b600063ffffffff82169050919050565b611a7f81611a66565b8114611a8a57600080fd5b50565b600081359050611a9c81611a76565b92915050565b600060208284031215611ab857611ab761176b565b5b6000611ac684828501611a8d565b91505092915050565b611ad881611790565b82525050565b6000602082019050611af36000830184611acf565b92915050565b600060208284031215611b0f57611b0e61176b565b5b6000611b1d848285016118ce565b91505092915050565b60008060408385031215611b3d57611b3c61176b565b5b6000611b4b858286016117b9565b9250506020611b5c858286016117b9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611bad57607f821691505b602082108103611bc057611bbf611b66565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611c00826118ad565b9150611c0b836118ad565b9250828202611c19816118ad565b91508282048414831517611c3057611c2f611bc6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611c71826118ad565b9150611c7c836118ad565b925082611c8c57611c8b611c37565b5b828204905092915050565b7f466565732063616e6e6f74206578636565642031352500000000000000000000600082015250565b6000611ccd601683611806565b9150611cd882611c97565b602082019050919050565b60006020820190508181036000830152611cfc81611cc0565b9050919050565b6000606082019050611d186000830186611acf565b611d256020830185611959565b611d326040830184611959565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050611da7816117a2565b92915050565b600060208284031215611dc357611dc261176b565b5b6000611dd184828501611d98565b91505092915050565b6000819050919050565b6000819050919050565b6000611e09611e04611dff84611dda565b611de4565b6118ad565b9050919050565b611e1981611dee565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611e5481611790565b82525050565b6000611e668383611e4b565b60208301905092915050565b6000602082019050919050565b6000611e8a82611e1f565b611e948185611e2a565b9350611e9f83611e3b565b8060005b83811015611ed0578151611eb78882611e5a565b9750611ec283611e72565b925050600181019050611ea3565b5085935050505092915050565b600060a082019050611ef26000830188611959565b611eff6020830187611e10565b8181036040830152611f118186611e7f565b9050611f206060830185611acf565b611f2d6080830184611959565b9695505050505050565b7f54726164696e672069732063757272656e746c792064697361626c65642e205060008201527f6c65617365207761697420666f7220746865206f6666696369616c206c61756e60208201527f63682e0000000000000000000000000000000000000000000000000000000000604082015250565b6000611fb9604383611806565b9150611fc482611f37565b606082019050919050565b60006020820190508181036000830152611fe881611fac565b9050919050565b7f57616c6c65742062616c616e6365206578636565647320736e6970657220707260008201527f6f74656374696f6e206c696d6974732e20506c6561736520726564756365207460208201527f686520746f6b656e20616d6f756e742e00000000000000000000000000000000604082015250565b6000612071605083611806565b915061207c82611fef565b606082019050919050565b600060208201905081810360008301526120a081612064565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156120fe578086048111156120da576120d9611bc6565b5b60018516156120e95780820291505b80810290506120f7856120a7565b94506120be565b94509492505050565b60008261211757600190506121d3565b8161212557600090506121d3565b816001811461213b576002811461214557612174565b60019150506121d3565b60ff84111561215757612156611bc6565b5b8360020a91508482111561216e5761216d611bc6565b5b506121d3565b5060208310610133831016604e8410600b84101617156121a95782820a9050838111156121a4576121a3611bc6565b5b6121d3565b6121b684848460016120b4565b925090508184048111156121cd576121cc611bc6565b5b81810290505b9392505050565b60006121e5826118ad565b91506121f0836118ad565b925061221d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612107565b905092915050565b7f416d6f756e7420706572207472616e73616374696f6e2065786365656473207360008201527f6e697065722070726f74656374696f6e2e20506c65617365207265647563652060208201527f74686520746f6b656e20616d6f756e742e000000000000000000000000000000604082015250565b60006122a7605183611806565b91506122b282612225565b606082019050919050565b600060208201905081810360008301526122d68161229a565b9050919050565b60006122e8826118ad565b91506122f3836118ad565b925082820390508181111561230b5761230a611bc6565b5b92915050565b600061231c826118ad565b9150612327836118ad565b925082820190508082111561233f5761233e611bc6565b5b9291505056fea264697066735822122059d9ba95c9cfe6917cfe33c839ec7b8ee1836430f5dd5ad77a48460c5a3383ac64736f6c63430008160033