Overview ERC20
PRICE
n/a

ON-CHAIN MARKET CAP n/a

Total Supply:
666,666,666,666.00 SHIB

Holders:
21
Profile Summary
Blockchain:
Ethereum (1)


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

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No

Created At:
Sat, 15 Jun 2024 21:42:23 GMT
SHIB.sol
SHIB.sol
SHIB.sol


Contract ABI
[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "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": "account",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "isExcluded",
        "type": "bool"
      }
    ],
    "name": "ExcludeFromFees",
    "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": "pair",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "bool",
        "name": "value",
        "type": "bool"
      }
    ],
    "name": "SetAutomatedMarketMakerPair",
    "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": true,
        "internalType": "address",
        "name": "newAddress",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "oldAddress",
        "type": "address"
      }
    ],
    "name": "UpdateUniswapV2Router",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "newWallet",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "oldWallet",
        "type": "address"
      }
    ],
    "name": "marketingWalletUpdated",
    "type": "event"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "_isExcludedMaxTransactionAmount",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "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": "amount",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "automatedMarketMakerPairs",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "buyMarketingFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "buyTotalFees",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "decimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "subtractedValue",
        "type": "uint256"
      }
    ],
    "name": "decreaseAllowance",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_marketingFee",
        "type": "uint256"
      }
    ],
    "name": "editBuyFee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_marketingFee",
        "type": "uint256"
      }
    ],
    "name": "editSellFee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "enableTrading",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "excluded",
        "type": "bool"
      }
    ],
    "name": "excludeFromFees",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "updAds",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "isEx",
        "type": "bool"
      }
    ],
    "name": "excludeFromMaxTransaction",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "addedValue",
        "type": "uint256"
      }
    ],
    "name": "increaseAllowance",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "isExcludedFromFees",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "limitsInEffect",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "marketingWallet",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxTransactionAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxWallet",
    "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": "removeLimits",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "sellMarketingFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "sellTotalFees",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "pair",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "value",
        "type": "bool"
      }
    ],
    "name": "setAutomatedMarketMakerPair",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "swapEnabled",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "swapTokensAtAmount",
    "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": [],
    "name": "tradingActive",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "transfer",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "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": "uniswapV2Pair",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "uniswapV2Router",
    "outputs": [
      {
        "internalType": "contract IUniswapV2Router02",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newMarketingWallet",
        "type": "address"
      }
    ],
    "name": "updateMarketingWallet",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newNum",
        "type": "uint256"
      }
    ],
    "name": "updateMaxTxnAmount",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newNum",
        "type": "uint256"
      }
    ],
    "name": "updateMaxWalletAmount",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "enabled",
        "type": "bool"
      }
    ],
    "name": "updateSwapEnabled",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newAmount",
        "type": "uint256"
      }
    ],
    "name": "updateSwapTokensAtAmount",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]


Contract Creation Code
60c06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280600981526020017f536869626120496e7500000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f53484942000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000e792919062000b30565b5080600490805190602001906200010092919062000b30565b505050600062000115620005fc60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002218160016200060460201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200029c57600080fd5b505afa158015620002b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d7919062000c4a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033a57600080fd5b505afa1580156200034f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000375919062000c4a565b6040518363ffffffff1660e01b81526004016200039492919062000c8d565b602060405180830381600087803b158015620003af57600080fd5b505af1158015620003c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ea919062000c4a565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200043260a05160016200060460201b60201c565b6200044760a05160016200070160201b60201c565b60006016905060006016905060006c086a1dbde025b824cf1068000090506103e860148262000477919062000cf3565b62000483919062000d83565b6008819055506103e86014826200049b919062000cf3565b620004a7919062000d83565b600a8190555061271061012c82620004c0919062000cf3565b620004cc919062000d83565b60098190555082600d81905550600d54600c8190555081600f81905550600f54600e81905550735bcfc73fca8a3507d4b3da6e8224f12317d214bd600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200056e735bcfc73fca8a3507d4b3da6e8224f12317d214bd6001620007a260201b60201c565b62000581306001620007a260201b60201c565b6200059661dead6001620007a260201b60201c565b620005b8620005aa620008ef60201b60201c565b60016200060460201b60201c565b620005cb3060016200060460201b60201c565b620005e061dead60016200060460201b60201c565b620005f233826200091960201b60201c565b505050506200104c565b600033905090565b62000614620005fc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620006a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200069d9062000e1c565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620007b2620005fc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000844576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200083b9062000e1c565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008e3919062000e5b565b60405180910390a25050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200098c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009839062000ec8565b60405180910390fd5b620009a06000838362000ac860201b60201c565b620009bc8160025462000acd60201b620020091790919060201c565b60028190555062000a1a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000acd60201b620020091790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000abc919062000efb565b60405180910390a35050565b505050565b600080828462000ade919062000f18565b90508381101562000b26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b1d9062000fc5565b60405180910390fd5b8091505092915050565b82805462000b3e9062001016565b90600052602060002090601f01602090048101928262000b62576000855562000bae565b82601f1062000b7d57805160ff191683800117855562000bae565b8280016001018555821562000bae579182015b8281111562000bad57825182559160200191906001019062000b90565b5b50905062000bbd919062000bc1565b5090565b5b8082111562000bdc57600081600090555060010162000bc2565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c128262000be5565b9050919050565b62000c248162000c05565b811462000c3057600080fd5b50565b60008151905062000c448162000c19565b92915050565b60006020828403121562000c635762000c6262000be0565b5b600062000c738482850162000c33565b91505092915050565b62000c878162000c05565b82525050565b600060408201905062000ca4600083018562000c7c565b62000cb3602083018462000c7c565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d008262000cba565b915062000d0d8362000cba565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d495762000d4862000cc4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d908262000cba565b915062000d9d8362000cba565b92508262000db05762000daf62000d54565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e0460208362000dbb565b915062000e118262000dcc565b602082019050919050565b6000602082019050818103600083015262000e378162000df5565b9050919050565b60008115159050919050565b62000e558162000e3e565b82525050565b600060208201905062000e72600083018462000e4a565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000eb0601f8362000dbb565b915062000ebd8262000e78565b602082019050919050565b6000602082019050818103600083015262000ee38162000ea1565b9050919050565b62000ef58162000cba565b82525050565b600060208201905062000f12600083018462000eea565b92915050565b600062000f258262000cba565b915062000f328362000cba565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f6a5762000f6962000cc4565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000fad601b8362000dbb565b915062000fba8262000f75565b602082019050919050565b6000602082019050818103600083015262000fe08162000f9e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200102f57607f821691505b6020821081141562001046576200104562000fe7565b5b50919050565b60805160a0516146666200108e60003960008181610db801526115c9015260008181610acb015281816131c5015281816132b501526132dc01526146666000f3fe6080604052600436106102555760003560e01c80638a8c523c11610139578063bbc0c742116100b6578063d85ba0631161007a578063d85ba063146108e9578063db9f66a014610914578063dd62ed3e1461093d578063e2f456051461097a578063f2fde38b146109a5578063f8b45b05146109ce5761025c565b8063bbc0c74214610804578063c02466681461082f578063c18bc19514610858578063c8c8ebe414610881578063d257b34f146108ac5761025c565b80639a7a23d6116100fd5780639a7a23d6146106fb578063a457c2d714610724578063a9059cbb14610761578063aacebbe31461079e578063b62496f5146107c75761025c565b80638a8c523c1461063a5780638da5cb5b14610651578063921369131461067c578063924de9b7146106a757806395d89b41146106d05761025c565b80634a62bb65116101d257806370a082311161019657806370a082311461053c578063715018a614610579578063751039fc146105905780637571336a146105bb57806375f0a874146105e45780637bce5a041461060f5761025c565b80634a62bb65146104555780634fbee1931461048057806361f7681f146104bd5780636a486a8e146104e65780636ddd1713146105115761025c565b8063203e727e11610219578063203e727e1461035c57806323b872dd14610385578063313ce567146103c257806339509351146103ed57806349bd5a5e1461042a5761025c565b806306fdde0314610261578063095ea7b31461028c57806310d5de53146102c95780631694505e1461030657806318160ddd146103315761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109f9565b604051610283919061346e565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae9190613529565b610a8b565b6040516102c09190613584565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb919061359f565b610aa9565b6040516102fd9190613584565b60405180910390f35b34801561031257600080fd5b5061031b610ac9565b604051610328919061362b565b60405180910390f35b34801561033d57600080fd5b50610346610aed565b6040516103539190613655565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e9190613670565b610af7565b005b34801561039157600080fd5b506103ac60048036038101906103a7919061369d565b610c21565b6040516103b99190613584565b60405180910390f35b3480156103ce57600080fd5b506103d7610cfa565b6040516103e4919061370c565b60405180910390f35b3480156103f957600080fd5b50610414600480360381019061040f9190613529565b610d03565b6040516104219190613584565b60405180910390f35b34801561043657600080fd5b5061043f610db6565b60405161044c9190613736565b60405180910390f35b34801561046157600080fd5b5061046a610dda565b6040516104779190613584565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a2919061359f565b610ded565b6040516104b49190613584565b60405180910390f35b3480156104c957600080fd5b506104e460048036038101906104df9190613670565b610e43565b005b3480156104f257600080fd5b506104fb610f33565b6040516105089190613655565b60405180910390f35b34801561051d57600080fd5b50610526610f39565b6040516105339190613584565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e919061359f565b610f4c565b6040516105709190613655565b60405180910390f35b34801561058557600080fd5b5061058e610f94565b005b34801561059c57600080fd5b506105a56110ec565b6040516105b29190613584565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd919061377d565b6111c6565b005b3480156105f057600080fd5b506105f96112b8565b6040516106069190613736565b60405180910390f35b34801561061b57600080fd5b506106246112de565b6040516106319190613655565b60405180910390f35b34801561064657600080fd5b5061064f6112e4565b005b34801561065d57600080fd5b506106666113ba565b6040516106739190613736565b60405180910390f35b34801561068857600080fd5b506106916113e4565b60405161069e9190613655565b60405180910390f35b3480156106b357600080fd5b506106ce60048036038101906106c991906137bd565b6113ea565b005b3480156106dc57600080fd5b506106e561149e565b6040516106f2919061346e565b60405180910390f35b34801561070757600080fd5b50610722600480360381019061071d919061377d565b611530565b005b34801561073057600080fd5b5061074b60048036038101906107469190613529565b611664565b6040516107589190613584565b60405180910390f35b34801561076d57600080fd5b5061078860048036038101906107839190613529565b611731565b6040516107959190613584565b60405180910390f35b3480156107aa57600080fd5b506107c560048036038101906107c0919061359f565b61174f565b005b3480156107d357600080fd5b506107ee60048036038101906107e9919061359f565b6118a6565b6040516107fb9190613584565b60405180910390f35b34801561081057600080fd5b506108196118c6565b6040516108269190613584565b60405180910390f35b34801561083b57600080fd5b506108566004803603810190610851919061377d565b6118d9565b005b34801561086457600080fd5b5061087f600480360381019061087a9190613670565b611a19565b005b34801561088d57600080fd5b50610896611b43565b6040516108a39190613655565b60405180910390f35b3480156108b857600080fd5b506108d360048036038101906108ce9190613670565b611b49565b6040516108e09190613584565b60405180910390f35b3480156108f557600080fd5b506108fe611cb9565b60405161090b9190613655565b60405180910390f35b34801561092057600080fd5b5061093b60048036038101906109369190613670565b611cbf565b005b34801561094957600080fd5b50610964600480360381019061095f91906137ea565b611daf565b6040516109719190613655565b60405180910390f35b34801561098657600080fd5b5061098f611e36565b60405161099c9190613655565b60405180910390f35b3480156109b157600080fd5b506109cc60048036038101906109c7919061359f565b611e3c565b005b3480156109da57600080fd5b506109e3612003565b6040516109f09190613655565b60405180910390f35b606060038054610a0890613859565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3490613859565b8015610a815780601f10610a5657610100808354040283529160200191610a81565b820191906000526020600020905b815481529060010190602001808311610a6457829003601f168201915b5050505050905090565b6000610a9f610a98612067565b848461206f565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610aff612067565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b85906138d7565b60405180910390fd5b670de0b6b3a76400006103e86001610ba4610aed565b610bae9190613926565b610bb891906139af565b610bc291906139af565b811015610c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfb90613a52565b60405180910390fd5b670de0b6b3a764000081610c189190613926565b60088190555050565b6000610c2e84848461223a565b610cef84610c3a612067565b610cea856040518060600160405280602881526020016145e460289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ca0612067565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bda9092919063ffffffff16565b61206f565b600190509392505050565b60006012905090565b6000610dac610d10612067565b84610da78560016000610d21612067565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200990919063ffffffff16565b61206f565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610e4b612067565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed1906138d7565b60405180910390fd5b80600f81905550600f54600e819055506005600e541115610f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2790613abe565b60405180910390fd5b50565b600e5481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f9c612067565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611022906138d7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006110f6612067565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117c906138d7565b60405180910390fd5b6000600b60006101000a81548160ff021916908315150217905550600c600d81905550600c8081905550600c600f81905550600c600e819055506001905090565b6111ce612067565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461125d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611254906138d7565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b6112ec612067565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611372906138d7565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043601081905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b6113f2612067565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611481576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611478906138d7565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b6060600480546114ad90613859565b80601f01602080910402602001604051908101604052809291908181526020018280546114d990613859565b80156115265780601f106114fb57610100808354040283529160200191611526565b820191906000526020600020905b81548152906001019060200180831161150957829003601f168201915b5050505050905090565b611538612067565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115be906138d7565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164d90613b50565b60405180910390fd5b6116608282612c3e565b5050565b6000611727611671612067565b846117228560405180606001604052806025815260200161460c602591396001600061169b612067565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bda9092919063ffffffff16565b61206f565b6001905092915050565b600061174561173e612067565b848461223a565b6001905092915050565b611757612067565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dd906138d7565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60136020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b6118e1612067565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611970576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611967906138d7565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a0d9190613584565b60405180910390a25050565b611a21612067565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa7906138d7565b60405180910390fd5b670de0b6b3a76400006103e86005611ac6610aed565b611ad09190613926565b611ada91906139af565b611ae491906139af565b811015611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d90613be2565b60405180910390fd5b670de0b6b3a764000081611b3a9190613926565b600a8190555050565b60085481565b6000611b53612067565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd9906138d7565b60405180910390fd5b620186a0600a611bf0610aed565b611bfa9190613926565b611c0491906139af565b821015611c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3d90613c74565b60405180910390fd5b6103e86028611c53610aed565b611c5d9190613926565b611c6791906139af565b821115611ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca090613d06565b60405180910390fd5b8160098190555060019050919050565b600c5481565b611cc7612067565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4d906138d7565b60405180910390fd5b80600d81905550600d54600c819055506005600c541115611dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da390613abe565b60405180910390fd5b50565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b611e44612067565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eca906138d7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3a90613d98565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b60008082846120189190613db8565b90508381101561205d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205490613e5a565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d690613eec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561214f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214690613f7e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161222d9190613655565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a190614010565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561231a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612311906140a2565b60405180910390fd5b60008114156123345761232f83836000612cdf565b612bd5565b600b60009054906101000a900460ff161561282f576123516113ba565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123bf575061238f6113ba565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123f85750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612432575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561244b5750600660149054906101000a900460ff16155b1561282e57600b60019054906101000a900460ff1661254557601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125055750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253b9061410e565b60405180910390fd5b5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125e85750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561268f57600854811115612632576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612629906141a0565b60405180910390fd5b600a5461263e83610f4c565b826126499190613db8565b111561268a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126819061420c565b60405180910390fd5b61282d565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127325750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127815760085481111561277c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127739061429e565b60405180910390fd5b61282c565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661282b57600a546127de83610f4c565b826127e99190613db8565b111561282a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128219061420c565b60405180910390fd5b5b5b5b5b5b600061283a30610f4c565b90506000600954821015905080801561285f5750600b60029054906101000a900460ff165b80156128785750600660149054906101000a900460ff16155b80156128ce5750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129245750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561297a5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129be576001600660146101000a81548160ff0219169083151502179055506129a2612f74565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a745750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a7e57600090505b60008115612bc557601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ae157506000600e54115b15612b1557612b0e6064612b00600e548861305c90919063ffffffff16565b6130d790919063ffffffff16565b9050612ba1565b601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b7057506000600c54115b15612ba057612b9d6064612b8f600c548861305c90919063ffffffff16565b6130d790919063ffffffff16565b90505b5b6000811115612bb657612bb5873083612cdf565b5b8085612bc291906142be565b94505b612bd0878787612cdf565b505050505b505050565b6000838311158290612c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c19919061346e565b60405180910390fd5b5060008385612c3191906142be565b9050809150509392505050565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4690614010565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db6906140a2565b60405180910390fd5b612dca838383613121565b612e35816040518060600160405280602681526020016145be602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bda9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ec8816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612f679190613655565b60405180910390a3505050565b6000612f7f30610f4c565b9050600080821415612f9257505061305a565b6014600954612fa19190613926565b821115612fba576014600954612fb79190613926565b91505b6000829050612fc881613126565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161300e90614323565b60006040518083038185875af1925050503d806000811461304b576040519150601f19603f3d011682016040523d82523d6000602084013e613050565b606091505b5050809250505050505b565b60008083141561306f57600090506130d1565b6000828461307d9190613926565b905082848261308c91906139af565b146130cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c3906143aa565b60405180910390fd5b809150505b92915050565b600061311983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613372565b905092915050565b505050565b6000600267ffffffffffffffff811115613143576131426143ca565b5b6040519080825280602002602001820160405280156131715781602001602082028036833780820191505090505b5090503081600081518110613189576131886143f9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561322957600080fd5b505afa15801561323d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613261919061443d565b81600181518110613275576132746143f9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506132da307f00000000000000000000000000000000000000000000000000000000000000008461206f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161333c959493929190614563565b600060405180830381600087803b15801561335657600080fd5b505af115801561336a573d6000803e3d6000fd5b505050505050565b600080831182906133b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b0919061346e565b60405180910390fd5b50600083856133c891906139af565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561340f5780820151818401526020810190506133f4565b8381111561341e576000848401525b50505050565b6000601f19601f8301169050919050565b6000613440826133d5565b61344a81856133e0565b935061345a8185602086016133f1565b61346381613424565b840191505092915050565b600060208201905081810360008301526134888184613435565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134c082613495565b9050919050565b6134d0816134b5565b81146134db57600080fd5b50565b6000813590506134ed816134c7565b92915050565b6000819050919050565b613506816134f3565b811461351157600080fd5b50565b600081359050613523816134fd565b92915050565b600080604083850312156135405761353f613490565b5b600061354e858286016134de565b925050602061355f85828601613514565b9150509250929050565b60008115159050919050565b61357e81613569565b82525050565b60006020820190506135996000830184613575565b92915050565b6000602082840312156135b5576135b4613490565b5b60006135c3848285016134de565b91505092915050565b6000819050919050565b60006135f16135ec6135e784613495565b6135cc565b613495565b9050919050565b6000613603826135d6565b9050919050565b6000613615826135f8565b9050919050565b6136258161360a565b82525050565b6000602082019050613640600083018461361c565b92915050565b61364f816134f3565b82525050565b600060208201905061366a6000830184613646565b92915050565b60006020828403121561368657613685613490565b5b600061369484828501613514565b91505092915050565b6000806000606084860312156136b6576136b5613490565b5b60006136c4868287016134de565b93505060206136d5868287016134de565b92505060406136e686828701613514565b9150509250925092565b600060ff82169050919050565b613706816136f0565b82525050565b600060208201905061372160008301846136fd565b92915050565b613730816134b5565b82525050565b600060208201905061374b6000830184613727565b92915050565b61375a81613569565b811461376557600080fd5b50565b60008135905061377781613751565b92915050565b6000806040838503121561379457613793613490565b5b60006137a2858286016134de565b92505060206137b385828601613768565b9150509250929050565b6000602082840312156137d3576137d2613490565b5b60006137e184828501613768565b91505092915050565b6000806040838503121561380157613800613490565b5b600061380f858286016134de565b9250506020613820858286016134de565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061387157607f821691505b602082108114156138855761388461382a565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138c16020836133e0565b91506138cc8261388b565b602082019050919050565b600060208201905081810360008301526138f0816138b4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613931826134f3565b915061393c836134f3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613975576139746138f7565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006139ba826134f3565b91506139c5836134f3565b9250826139d5576139d4613980565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000613a3c602f836133e0565b9150613a47826139e0565b604082019050919050565b60006020820190508181036000830152613a6b81613a2f565b9050919050565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b6000613aa8601c836133e0565b9150613ab382613a72565b602082019050919050565b60006020820190508181036000830152613ad781613a9b565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613b3a6039836133e0565b9150613b4582613ade565b604082019050919050565b60006020820190508181036000830152613b6981613b2d565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613bcc6024836133e0565b9150613bd782613b70565b604082019050919050565b60006020820190508181036000830152613bfb81613bbf565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20312520746f74616c20737570706c792e000000000000000000000000000000602082015250565b6000613c5e6031836133e0565b9150613c6982613c02565b604082019050919050565b60006020820190508181036000830152613c8d81613c51565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20342520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000613cf06032836133e0565b9150613cfb82613c94565b604082019050919050565b60006020820190508181036000830152613d1f81613ce3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d826026836133e0565b9150613d8d82613d26565b604082019050919050565b60006020820190508181036000830152613db181613d75565b9050919050565b6000613dc3826134f3565b9150613dce836134f3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613e0357613e026138f7565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e44601b836133e0565b9150613e4f82613e0e565b602082019050919050565b60006020820190508181036000830152613e7381613e37565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613ed66024836133e0565b9150613ee182613e7a565b604082019050919050565b60006020820190508181036000830152613f0581613ec9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f686022836133e0565b9150613f7382613f0c565b604082019050919050565b60006020820190508181036000830152613f9781613f5b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613ffa6025836133e0565b915061400582613f9e565b604082019050919050565b6000602082019050818103600083015261402981613fed565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061408c6023836133e0565b915061409782614030565b604082019050919050565b600060208201905081810360008301526140bb8161407f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006140f86016836133e0565b9150614103826140c2565b602082019050919050565b60006020820190508181036000830152614127816140eb565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061418a6035836133e0565b91506141958261412e565b604082019050919050565b600060208201905081810360008301526141b98161417d565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006141f66013836133e0565b9150614201826141c0565b602082019050919050565b60006020820190508181036000830152614225816141e9565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006142886036836133e0565b91506142938261422c565b604082019050919050565b600060208201905081810360008301526142b78161427b565b9050919050565b60006142c9826134f3565b91506142d4836134f3565b9250828210156142e7576142e66138f7565b5b828203905092915050565b600081905092915050565b50565b600061430d6000836142f2565b9150614318826142fd565b600082019050919050565b600061432e82614300565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006143946021836133e0565b915061439f82614338565b604082019050919050565b600060208201905081810360008301526143c381614387565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614437816134c7565b92915050565b60006020828403121561445357614452613490565b5b600061446184828501614428565b91505092915050565b6000819050919050565b600061448f61448a6144858461446a565b6135cc565b6134f3565b9050919050565b61449f81614474565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144da816134b5565b82525050565b60006144ec83836144d1565b60208301905092915050565b6000602082019050919050565b6000614510826144a5565b61451a81856144b0565b9350614525836144c1565b8060005b8381101561455657815161453d88826144e0565b9750614548836144f8565b925050600181019050614529565b5085935050505092915050565b600060a0820190506145786000830188613646565b6145856020830187614496565b81810360408301526145978186614505565b90506145a66060830185613727565b6145b36080830184613646565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220feebecad2277db53a7ef4cc75bf681a8a2fe4f06e0869a1b1b8cb70c027a025564736f6c63430008090033