Overview ERC20
PRICE
n/a

ON-CHAIN MARKET CAP n/a

Total Supply:
1,739,015.04 SILA

Holders:
529
Profile Summary
Blockchain:
Base (8453)


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

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 10000 runs

Created At:
Tue, 28 May 2024 15:26:33 GMT
InterchainTokenStandard.sol
@axelar-network
interchain-token-service
contracts
interchain-token
InterchainTokenStandard.sol


Contract ABI
[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "AccessControlBadConfirmation",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "neededRole",
        "type": "bytes32"
      }
    ],
    "name": "AccessControlUnauthorizedAccount",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ECDSAInvalidSignature",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "length",
        "type": "uint256"
      }
    ],
    "name": "ECDSAInvalidSignatureLength",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "s",
        "type": "bytes32"
      }
    ],
    "name": "ECDSAInvalidSignatureS",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "allowance",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "needed",
        "type": "uint256"
      }
    ],
    "name": "ERC20InsufficientAllowance",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "balance",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "needed",
        "type": "uint256"
      }
    ],
    "name": "ERC20InsufficientBalance",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "approver",
        "type": "address"
      }
    ],
    "name": "ERC20InvalidApprover",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      }
    ],
    "name": "ERC20InvalidReceiver",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "ERC20InvalidSender",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      }
    ],
    "name": "ERC20InvalidSpender",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "deadline",
        "type": "uint256"
      }
    ],
    "name": "ERC2612ExpiredSignature",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "signer",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "ERC2612InvalidSigner",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "currentNonce",
        "type": "uint256"
      }
    ],
    "name": "InvalidAccountNonce",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidShortString",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MaxSupplyCanOnlyBeSetOnce",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "OverMaxSupply",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "str",
        "type": "string"
      }
    ],
    "name": "StringTooLong",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [],
    "name": "EIP712DomainChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "previousAdminRole",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "newAdminRole",
        "type": "bytes32"
      }
    ],
    "name": "RoleAdminChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleGranted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleRevoked",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "BRIDGE_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "DEFAULT_ADMIN_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "DOMAIN_SEPARATOR",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "MINTER_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      }
    ],
    "name": "allowance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "burnFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "decimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "eip712Domain",
    "outputs": [
      {
        "internalType": "bytes1",
        "name": "fields",
        "type": "bytes1"
      },
      {
        "internalType": "string",
        "name": "name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "version",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "chainId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "verifyingContract",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "salt",
        "type": "bytes32"
      },
      {
        "internalType": "uint256[]",
        "name": "extensions",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "getRoleAdmin",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "grantRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "hasRole",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "interchainTokenId",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "tokenId_",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "interchainTokenService",
    "outputs": [
      {
        "internalType": "address",
        "name": "service",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "destinationChain",
        "type": "string"
      },
      {
        "internalType": "bytes",
        "name": "recipient",
        "type": "bytes"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "metadata",
        "type": "bytes"
      }
    ],
    "name": "interchainTransfer",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "internalType": "string",
        "name": "destinationChain",
        "type": "string"
      },
      {
        "internalType": "bytes",
        "name": "recipient",
        "type": "bytes"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "metadata",
        "type": "bytes"
      }
    ],
    "name": "interchainTransferFrom",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "maxSupply_",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "mint",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "mintRewards",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "nonces",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "deadline",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "v",
        "type": "uint8"
      },
      {
        "internalType": "bytes32",
        "name": "r",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "s",
        "type": "bytes32"
      }
    ],
    "name": "permit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "callerConfirmation",
        "type": "address"
      }
    ],
    "name": "renounceRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "revokeRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "maxSupply_",
        "type": "uint256"
      }
    ],
    "name": "setMaxSupply",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "tokenId_",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "its_",
        "type": "address"
      }
    ],
    "name": "setTokenIdAndIts",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "transfer",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
6101606040523480156200001257600080fd5b506040518060400160405280600481526020016353494c4160e01b81525080604051806040016040528060018152602001603160f81b8152506040518060400160405280600481526020016353494c4160e01b8152506040518060400160405280600481526020016353494c4160e01b815250816004908162000096919062000362565b506005620000a5828262000362565b50620000b79150839050600662000188565b61012052620000c881600762000188565b61014052815160208084019190912060e052815190820120610100524660a0526200015660e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0525062000181600073cd7a0d098e3a750126b0fec54be401476812cfc0620001c1565b50620004a4565b6000602083511015620001a857620001a0836200026f565b9050620001bb565b81620001b5848262000362565b5060ff90505b92915050565b6000828152602081815260408083206001600160a01b038516845290915281205460ff1662000266576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556200021d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001bb565b506000620001bb565b600080829050601f81511115620002a6578260405163305a27a960e01b81526004016200029d91906200042e565b60405180910390fd5b8051620002b3826200047f565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002e657607f821691505b6020821081036200030757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035d576000816000526020600020601f850160051c81016020861015620003385750805b601f850160051c820191505b81811015620003595782815560010162000344565b5050505b505050565b81516001600160401b038111156200037e576200037e620002bb565b62000396816200038f8454620002d1565b846200030d565b602080601f831160018114620003ce5760008415620003b55750858301515b600019600386901b1c1916600185901b17855562000359565b600085815260208120601f198616915b82811015620003ff57888601518255948401946001909101908401620003de565b50858210156200041e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200045e5785810183015185820160400152820162000440565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620003075760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051611eed620004ff60003960006111990152600061116c01526000610fd501526000610fad01526000610f0801526000610f3201526000610f5c0152611eed6000f3fe6080604052600436106102195760003560e01c806370a082311161011d578063a60fee37116100b0578063d505accf1161007f578063d547741f11610064578063d547741f1461064e578063d5abeb011461066e578063dd62ed3e1461068357600080fd5b8063d505accf146105fa578063d53913931461061a57600080fd5b8063a60fee3714610580578063a9059cbb14610593578063b5bfddea146105b3578063bc0ba3c5146105e757600080fd5b806391d14854116100ec57806391d14854146104f257806395d89b41146105365780639dc29fac1461054b578063a217fddf1461056b57600080fd5b806370a082311461045457806379cc67901461048a5780637ecebe00146104aa57806384b0196e146104ca57600080fd5b8063248a9ca3116101b057806336568abe1161017f57806342966c681161016457806342966c68146103f45780636a20de92146104145780636f8b44b01461043457600080fd5b806336568abe146103b457806340c10f19146103d457600080fd5b8063248a9ca3146103335780632f2ff15d14610363578063313ce567146103835780633644e5151461039f57600080fd5b80630e3cf2b6116101ec5780630e3cf2b6146102bd578063129d8188146102df57806318160ddd146102fe57806323b872dd1461031357600080fd5b806301ffc9a71461021e57806306fdde0314610253578063095ea7b31461027557806309c6bed914610295575b600080fd5b34801561022a57600080fd5b5061023e6102393660046118b6565b6106c9565b60405190151581526020015b60405180910390f35b34801561025f57600080fd5b50610268610762565b60405161024a9190611963565b34801561028157600080fd5b5061023e610290366004611992565b6107f4565b3480156102a157600080fd5b506009546040516001600160a01b03909116815260200161024a565b3480156102c957600080fd5b506102dd6102d83660046119bc565b61080c565b005b3480156102eb57600080fd5b50600a545b60405190815260200161024a565b34801561030a57600080fd5b506003546102f0565b34801561031f57600080fd5b5061023e61032e3660046119e8565b610857565b34801561033f57600080fd5b506102f061034e366004611a24565b60009081526020819052604090206001015490565b34801561036f57600080fd5b506102dd61037e3660046119bc565b61087b565b34801561038f57600080fd5b506040516012815260200161024a565b3480156103ab57600080fd5b506102f06108a6565b3480156103c057600080fd5b506102dd6103cf3660046119bc565b6108b5565b3480156103e057600080fd5b506102dd6103ef366004611992565b610906565b34801561040057600080fd5b506102dd61040f366004611a24565b61093a565b34801561042057600080fd5b506102dd61042f366004611992565b610947565b34801561044057600080fd5b506102dd61044f366004611a24565b6109cd565b34801561046057600080fd5b506102f061046f366004611a3d565b6001600160a01b031660009081526001602052604090205490565b34801561049657600080fd5b506102dd6104a5366004611992565b610a18565b3480156104b657600080fd5b506102f06104c5366004611a3d565b610a31565b3480156104d657600080fd5b506104df610a4f565b60405161024a9796959493929190611a58565b3480156104fe57600080fd5b5061023e61050d3660046119bc565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561054257600080fd5b50610268610ab1565b34801561055757600080fd5b506102dd610566366004611992565b610ac0565b34801561057757600080fd5b506102f0600081565b6102dd61058e366004611b56565b610af4565b34801561059f57600080fd5b5061023e6105ae366004611992565b610b8b565b3480156105bf57600080fd5b506102f07f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b6102dd6105f5366004611c0a565b610b99565b34801561060657600080fd5b506102dd610615366004611cae565b610bea565b34801561062657600080fd5b506102f07f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b34801561065a57600080fd5b506102dd6106693660046119bc565b610d5b565b34801561067a57600080fd5b50600b546102f0565b34801561068f57600080fd5b506102f061069e366004611d21565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061075c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606004805461077190611d4b565b80601f016020809104026020016040519081016040528092919081815260200182805461079d90611d4b565b80156107ea5780601f106107bf576101008083540402835291602001916107ea565b820191906000526020600020905b8154815290600101906020018083116107cd57829003601f168201915b5050505050905090565b600033610802818585610d80565b5060019392505050565b600061081781610d8d565b50600a91909155600980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055565b600033610865858285610d97565b610870858585610da2565b506001949350505050565b60008281526020819052604090206001015461089681610d8d565b6108a08383610e33565b50505050565b60006108b0610efb565b905090565b6001600160a01b03811633146108f7576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109018282611026565b505050565b7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61093081610d8d565b61090183836110c7565b6109443382611116565b50565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661097181610d8d565b600b54158015906109965750600b548261098a60035490565b6109949190611d9e565b115b15610930576040517f9938b86600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109d881610d8d565b600b5415610a12576040517f27553c1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600b55565b610a23823383610d97565b610a2d8282611116565b5050565b6001600160a01b03811660009081526008602052604081205461075c565b600060608060008060006060610a63611165565b610a6b611192565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b60606005805461077190611d4b565b7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f610aea81610d8d565b6109018383611116565b610aff883385610d97565b6009546001600160a01b03166001600160a01b03166370756cde34610b23600a5490565b8b8b8b8b8b8b8b8b6040518b63ffffffff1660e01b8152600401610b4f99989796959493929190611e21565b6000604051808303818588803b158015610b6857600080fd5b505af1158015610b7c573d6000803e3d6000fd5b50505050505050505050505050565b600033610802818585610da2565b336009546001600160a01b03166001600160a01b03166370756cde34610bbe600a5490565b848c8c8c8c8c8c8c6040518b63ffffffff1660e01b8152600401610b4f99989796959493929190611e21565b83421115610c2c576040517f62791302000000000000000000000000000000000000000000000000000000008152600481018590526024015b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610c798c6001600160a01b0316600090815260086020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610cd4826111bf565b90506000610ce482878787611207565b9050896001600160a01b0316816001600160a01b031614610d44576040517f4b800e460000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301528b166024820152604401610c23565b610d4f8a8a8a610d80565b50505050505050505050565b600082815260208190526040902060010154610d7681610d8d565b6108a08383611026565b6109018383836001611235565b610944813361133c565b6109018383836113a8565b6001600160a01b038316610de5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610c23565b6001600160a01b038216610e28576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610c23565b610901838383611457565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16610ef3576000838152602081815260408083206001600160a01b0386168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610eab3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161075c565b50600061075c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610f5457507f000000000000000000000000000000000000000000000000000000000000000046145b15610f7e57507f000000000000000000000000000000000000000000000000000000000000000090565b6108b0604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6000828152602081815260408083206001600160a01b038516845290915281205460ff1615610ef3576000838152602081815260408083206001600160a01b038616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161075c565b6001600160a01b03821661110a576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610c23565b610a2d60008383611457565b6001600160a01b038216611159576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610c23565b610a2d82600083611457565b60606108b07f0000000000000000000000000000000000000000000000000000000000000000600661159a565b60606108b07f0000000000000000000000000000000000000000000000000000000000000000600761159a565b600061075c6111cc610efb565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060008061121988888888611645565b9250925092506112298282611732565b50909695505050505050565b6001600160a01b038416611278576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610c23565b6001600160a01b0383166112bb576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610c23565b6001600160a01b03808516600090815260026020908152604080832093871683529290522082905580156108a057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161132e91815260200190565b60405180910390a350505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16610a2d576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610c23565b6001600160a01b038381166000908152600260209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108a05781811015611448576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610c23565b6108a084848484036000611235565b6001600160a01b0383166114825780600360008282546114779190611d9e565b9091555061150d9050565b6001600160a01b038316600090815260016020526040902054818110156114ee576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810182905260448101839052606401610c23565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b03821661152957600380548290039055611548565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161158d91815260200190565b60405180910390a3505050565b606060ff83146115b4576115ad83611836565b905061075c565b8180546115c090611d4b565b80601f01602080910402602001604051908101604052809291908181526020018280546115ec90611d4b565b80156116395780601f1061160e57610100808354040283529160200191611639565b820191906000526020600020905b81548152906001019060200180831161161c57829003601f168201915b5050505050905061075c565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156116805750600091506003905082611728565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156116d4573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b03811661171e57506000925060019150829050611728565b9250600091508190505b9450945094915050565b600082600381111561174657611746611e88565b0361174f575050565b600182600381111561176357611763611e88565b0361179a576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028260038111156117ae576117ae611e88565b036117e8576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610c23565b60038260038111156117fc576117fc611e88565b03610a2d576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610c23565b6060600061184383611875565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600060ff8216601f81111561075c576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156118c857600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146118f857600080fd5b9392505050565b6000815180845260005b8181101561192557602081850181015186830182015201611909565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006118f860208301846118ff565b80356001600160a01b038116811461198d57600080fd5b919050565b600080604083850312156119a557600080fd5b6119ae83611976565b946020939093013593505050565b600080604083850312156119cf57600080fd5b823591506119df60208401611976565b90509250929050565b6000806000606084860312156119fd57600080fd5b611a0684611976565b9250611a1460208501611976565b9150604084013590509250925092565b600060208284031215611a3657600080fd5b5035919050565b600060208284031215611a4f57600080fd5b6118f882611976565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e06020840152611a9560e084018a6118ff565b8381036040850152611aa7818a6118ff565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611afb57835183529284019291840191600101611adf565b50909c9b505050505050505050505050565b60008083601f840112611b1f57600080fd5b50813567ffffffffffffffff811115611b3757600080fd5b602083019150836020828501011115611b4f57600080fd5b9250929050565b60008060008060008060008060a0898b031215611b7257600080fd5b611b7b89611976565b9750602089013567ffffffffffffffff80821115611b9857600080fd5b611ba48c838d01611b0d565b909950975060408b0135915080821115611bbd57600080fd5b611bc98c838d01611b0d565b909750955060608b0135945060808b0135915080821115611be957600080fd5b50611bf68b828c01611b0d565b999c989b5096995094979396929594505050565b60008060008060008060006080888a031215611c2557600080fd5b873567ffffffffffffffff80821115611c3d57600080fd5b611c498b838c01611b0d565b909950975060208a0135915080821115611c6257600080fd5b611c6e8b838c01611b0d565b909750955060408a0135945060608a0135915080821115611c8e57600080fd5b50611c9b8a828b01611b0d565b989b979a50959850939692959293505050565b600080600080600080600060e0888a031215611cc957600080fd5b611cd288611976565b9650611ce060208901611976565b95506040880135945060608801359350608088013560ff81168114611d0457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611d3457600080fd5b611d3d83611976565b91506119df60208401611976565b600181811c90821680611d5f57607f821691505b602082108103611d98577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561075c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8981526001600160a01b038916602082015260c060408201526000611e4a60c08301898b611dd8565b8281036060840152611e5d81888a611dd8565b905085608084015282810360a0840152611e78818587611dd8565b9c9b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220ae0e0a236852441e8d00943063baa89a4d5c0fece1a518a5b7931b4f7cfbbae764736f6c63430008170033