Overview ERC20
PRICE
n/a

ON-CHAIN MARKET CAP n/a

Total Supply:
12.75 YB-USDT-YYK

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


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

Compiler Version
v0.6.10+commit.00c0fcaf

Optimization Enabled:
Yes with 200 runs

Created At:
Sat, 22 Jan 2022 01:56:09 GMT
CKToken.sol
CKToken.sol
CKToken.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "_components",
        "type": "address[]"
      },
      {
        "internalType": "int256[]",
        "name": "_units",
        "type": "int256[]"
      },
      {
        "internalType": "address[]",
        "name": "_modules",
        "type": "address[]"
      },
      {
        "internalType": "contract IController",
        "name": "_controller",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_manager",
        "type": "address"
      },
      {
        "internalType": "string",
        "name": "_name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "_symbol",
        "type": "string"
      }
    ],
    "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": "_component",
        "type": "address"
      }
    ],
    "name": "ComponentAdded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "_component",
        "type": "address"
      }
    ],
    "name": "ComponentRemoved",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "_component",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "int256",
        "name": "_realUnit",
        "type": "int256"
      }
    ],
    "name": "DefaultPositionUnitEdited",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "_component",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "_positionModule",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "_data",
        "type": "bytes"
      }
    ],
    "name": "ExternalPositionDataEdited",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "_component",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "_positionModule",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "int256",
        "name": "_realUnit",
        "type": "int256"
      }
    ],
    "name": "ExternalPositionUnitEdited",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "_target",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "_value",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "_data",
        "type": "bytes"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "_returnValue",
        "type": "bytes"
      }
    ],
    "name": "Invoked",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "_newManager",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "_oldManager",
        "type": "address"
      }
    ],
    "name": "ManagerEdited",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "_module",
        "type": "address"
      }
    ],
    "name": "ModuleAdded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "_module",
        "type": "address"
      }
    ],
    "name": "ModuleInitialized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "_module",
        "type": "address"
      }
    ],
    "name": "ModuleRemoved",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "_module",
        "type": "address"
      }
    ],
    "name": "PendingModuleRemoved",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "_component",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "_positionModule",
        "type": "address"
      }
    ],
    "name": "PositionModuleAdded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "_component",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "_positionModule",
        "type": "address"
      }
    ],
    "name": "PositionModuleRemoved",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "int256",
        "name": "_newMultiplier",
        "type": "int256"
      }
    ],
    "name": "PositionMultiplierEdited",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_component",
        "type": "address"
      }
    ],
    "name": "addComponent",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_component",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_positionModule",
        "type": "address"
      }
    ],
    "name": "addExternalPositionModule",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_module",
        "type": "address"
      }
    ],
    "name": "addModule",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      }
    ],
    "name": "allowance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "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": "address",
        "name": "_account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_quantity",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "components",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "controller",
    "outputs": [
      {
        "internalType": "contract IController",
        "name": "",
        "type": "address"
      }
    ],
    "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": "address",
        "name": "_component",
        "type": "address"
      },
      {
        "internalType": "int256",
        "name": "_realUnit",
        "type": "int256"
      }
    ],
    "name": "editDefaultPositionUnit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_component",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_positionModule",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "_data",
        "type": "bytes"
      }
    ],
    "name": "editExternalPositionData",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_component",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_positionModule",
        "type": "address"
      },
      {
        "internalType": "int256",
        "name": "_realUnit",
        "type": "int256"
      }
    ],
    "name": "editExternalPositionUnit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "int256",
        "name": "_newMultiplier",
        "type": "int256"
      }
    ],
    "name": "editPositionMultiplier",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getComponents",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "",
        "type": "address[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_component",
        "type": "address"
      }
    ],
    "name": "getDefaultPositionRealUnit",
    "outputs": [
      {
        "internalType": "int256",
        "name": "",
        "type": "int256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_component",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_positionModule",
        "type": "address"
      }
    ],
    "name": "getExternalPositionData",
    "outputs": [
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_component",
        "type": "address"
      }
    ],
    "name": "getExternalPositionModules",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "",
        "type": "address[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_component",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_positionModule",
        "type": "address"
      }
    ],
    "name": "getExternalPositionRealUnit",
    "outputs": [
      {
        "internalType": "int256",
        "name": "",
        "type": "int256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getModules",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "",
        "type": "address[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPositions",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "component",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "module",
            "type": "address"
          },
          {
            "internalType": "int256",
            "name": "unit",
            "type": "int256"
          },
          {
            "internalType": "uint8",
            "name": "positionState",
            "type": "uint8"
          },
          {
            "internalType": "bytes",
            "name": "data",
            "type": "bytes"
          }
        ],
        "internalType": "struct ICKToken.Position[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_component",
        "type": "address"
      }
    ],
    "name": "getTotalComponentRealUnits",
    "outputs": [
      {
        "internalType": "int256",
        "name": "",
        "type": "int256"
      }
    ],
    "stateMutability": "view",
    "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": [],
    "name": "initializeModule",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_target",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_value",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "_data",
        "type": "bytes"
      }
    ],
    "name": "invoke",
    "outputs": [
      {
        "internalType": "bytes",
        "name": "_returnValue",
        "type": "bytes"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_component",
        "type": "address"
      }
    ],
    "name": "isComponent",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_component",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_module",
        "type": "address"
      }
    ],
    "name": "isExternalPositionModule",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_module",
        "type": "address"
      }
    ],
    "name": "isInitializedModule",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "isLocked",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_module",
        "type": "address"
      }
    ],
    "name": "isPendingModule",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "lock",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "locker",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "manager",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_quantity",
        "type": "uint256"
      }
    ],
    "name": "mint",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "moduleStates",
    "outputs": [
      {
        "internalType": "enum ICKToken.ModuleState",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "modules",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "positionMultiplier",
    "outputs": [
      {
        "internalType": "int256",
        "name": "",
        "type": "int256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_component",
        "type": "address"
      }
    ],
    "name": "removeComponent",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_component",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_positionModule",
        "type": "address"
      }
    ],
    "name": "removeExternalPositionModule",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_module",
        "type": "address"
      }
    ],
    "name": "removeModule",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_module",
        "type": "address"
      }
    ],
    "name": "removePendingModule",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_manager",
        "type": "address"
      }
    ],
    "name": "setManager",
    "outputs": [],
    "stateMutability": "nonpayable",
    "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": "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": [],
    "name": "unlock",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]


Contract Creation Code
60806040523480156200001157600080fd5b5060405162003d2938038062003d29833981016040819052620000349162000476565b8151829082906200004d906003906020850190620001bf565b50805162000063906004906020840190620001bf565b505060058054601260ff1990911617610100600160a81b0319166101006001600160a01b038881169190910291909117909155600680546001600160a01b03191691861691909117905550620000c4620001b2602090811b62001a6d17901c565b600d558651620000dc90600b9060208a019062000244565b5060005b85518110156200014357600160096000888481518110620000fd57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191660018360028111156200013557fe5b0217905550600101620000e0565b5060005b8751811015620001a4578681815181106200015e57fe5b6020026020010151600c60008a84815181106200017757fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205560010162000147565b5050505050505050620005d8565b670de0b6b3a76400005b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200020257805160ff191683800117855562000232565b8280016001018555821562000232579182015b828111156200023257825182559160200191906001019062000215565b5062000240929150620002aa565b5090565b8280548282559060005260206000209081019282156200029c579160200282015b828111156200029c57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000265565b5062000240929150620002c7565b620001bc91905b80821115620002405760008155600101620002b1565b620001bc91905b80821115620002405780546001600160a01b0319168155600101620002ce565b8051620002fb81620005bf565b92915050565b600082601f83011262000312578081fd5b81516200032962000323826200059f565b62000578565b8181529150602080830190848101818402860182018710156200034b57600080fd5b60005b84811015620003775781516200036481620005bf565b845292820192908201906001016200034e565b505050505092915050565b600082601f83011262000393578081fd5b8151620003a462000323826200059f565b818152915060208083019084810181840286018201871015620003c657600080fd5b60005b848110156200037757815184529282019290820190600101620003c9565b600082601f830112620003f8578081fd5b81516001600160401b038111156200040e578182fd5b602062000424601f8301601f1916820162000578565b925081835284818386010111156200043b57600080fd5b60005b828110156200045b5784810182015184820183015281016200043e565b828111156200046d5760008284860101525b50505092915050565b600080600080600080600060e0888a03121562000491578283fd5b87516001600160401b0380821115620004a8578485fd5b620004b68b838c0162000301565b985060208a0151915080821115620004cc578485fd5b620004da8b838c0162000382565b975060408a0151915080821115620004f0578485fd5b620004fe8b838c0162000301565b96506200050f8b60608c01620002ee565b9550620005208b60808c01620002ee565b945060a08a015191508082111562000536578384fd5b620005448b838c01620003e7565b935060c08a01519150808211156200055a578283fd5b50620005698a828b01620003e7565b91505092959891949750929550565b6040518181016001600160401b03811182821017156200059757600080fd5b604052919050565b60006001600160401b03821115620005b5578081fd5b5060209081020190565b6001600160a01b0381168114620005d557600080fd5b50565b61374180620005e86000396000f3fe6080604052600436106102b25760003560e01c80638ae458da11610175578063b2494df3116100dc578063d7f1b27c11610095578063ea0ee5591161006f578063ea0ee55914610842578063eaf993e114610862578063f77c479114610882578063f83d08ba14610897576102b9565b8063d7f1b27c146107e2578063dd62ed3e14610802578063df5e9b2914610822576102b9565b8063b2494df314610738578063c2de0e9d1461074d578063c5d574fe1461076d578063c75640171461078d578063d0ebdbe7146107ad578063d7b96d4e146107cd576102b9565b8063a457c2d71161012e578063a457c2d71461068e578063a4e2d634146106ae578063a69df4b5146106c3578063a7bdad03146106d8578063a9059cbb146106f8578063acf3f07714610718576102b9565b80638ae458da146105d75780638f6f0332146105f757806395d89b411461061757806399d50d5d1461062c5780639dc29fac1461064e578063a06324611461066e576102b9565b806340c10f191161021957806366cb8d2f116101d257806366cb8d2f146105155780636f86c8971461053557806370a08231146105555780637d96659314610575578063802758601461059557806381b2248a146105b7576102b9565b806340c10f191461045e578063481c6a751461047e5780634e353270146104a05780635230c396146104c057806353bae5f7146104d557806363a90fc1146104f5576102b9565b806323b872dd1161026b57806323b872dd1461038f57806326898fe1146103af5780632ba57d17146103cf578063313ce567146103ef57806335bc4e5214610411578063395093511461043e576102b9565b806306fdde03146102be578063095ea7b3146102e95780630ffe0f1e1461031657806318160ddd1461032d5780631ed86f191461034f57806322ebeba41461036f576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d36108ac565b6040516102e09190612dd1565b60405180910390f35b3480156102f557600080fd5b50610309610304366004612b4a565b610943565b6040516102e09190612d82565b34801561032257600080fd5b5061032b610961565b005b34801561033957600080fd5b50610342610a4b565b6040516102e09190612df8565b34801561035b57600080fd5b5061032b61036a366004612a1b565b610a51565b34801561037b57600080fd5b5061034261038a366004612a36565b610b89565b34801561039b57600080fd5b506103096103aa366004612b0a565b610ba4565b3480156103bb57600080fd5b5061032b6103ca366004612a6a565b610c31565b3480156103db57600080fd5b5061032b6103ea366004612b4a565b610ccc565b3480156103fb57600080fd5b50610404610d43565b6040516102e091906135f2565b34801561041d57600080fd5b5061043161042c366004612a1b565b610d4c565b6040516102e09190612de4565b34801561044a57600080fd5b50610309610459366004612b4a565b610d61565b34801561046a57600080fd5b5061032b610479366004612b4a565b610db5565b34801561048a57600080fd5b50610493610dd3565b6040516102e09190612c60565b3480156104ac57600080fd5b5061032b6104bb366004612a1b565b610de2565b3480156104cc57600080fd5b50610342610e90565b3480156104e157600080fd5b506103096104f0366004612a1b565b610e96565b34801561050157600080fd5b5061032b610510366004612acd565b610ec9565b34801561052157600080fd5b50610342610530366004612a1b565b610f48565b34801561054157600080fd5b5061032b610550366004612a1b565b610f56565b34801561056157600080fd5b50610342610570366004612a1b565b610fae565b34801561058157600080fd5b50610309610590366004612a36565b610fc9565b3480156105a157600080fd5b506105aa610fe4565b6040516102e09190612cdb565b3480156105c357600080fd5b506104936105d2366004612bd6565b6111a1565b3480156105e357600080fd5b506102d36105f2366004612a36565b6111c8565b34801561060357600080fd5b506102d3610612366004612b74565b6111d4565b34801561062357600080fd5b506102d3611281565b34801561063857600080fd5b506106416112e2565b6040516102e09190612c8e565b34801561065a57600080fd5b5061032b610669366004612b4a565b611343565b34801561067a57600080fd5b5061032b610689366004612a1b565b61135d565b34801561069a57600080fd5b506103096106a9366004612b4a565b611483565b3480156106ba57600080fd5b506103096114f1565b3480156106cf57600080fd5b5061032b6114fa565b3480156106e457600080fd5b506106416106f3366004612a1b565b61156a565b34801561070457600080fd5b50610309610713366004612b4a565b611575565b34801561072457600080fd5b5061032b610733366004612a36565b611589565b34801561074457600080fd5b50610641611646565b34801561075957600080fd5b5061032b610768366004612bd6565b6116a6565b34801561077957600080fd5b50610493610788366004612bd6565b6116ff565b34801561079957600080fd5b5061032b6107a8366004612a1b565b61170c565b3480156107b957600080fd5b5061032b6107c8366004612a1b565b6117c6565b3480156107d957600080fd5b50610493611850565b3480156107ee57600080fd5b506103096107fd366004612a1b565b61185f565b34801561080e57600080fd5b5061034261081d366004612a36565b611868565b34801561082e57600080fd5b5061030961083d366004612a1b565b611893565b34801561084e57600080fd5b5061032b61085d366004612a36565b611902565b34801561086e57600080fd5b5061034261087d366004612a1b565b6119a6565b34801561088e57600080fd5b50610493611a0d565b3480156108a357600080fd5b5061032b611a21565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109385780601f1061090d57610100808354040283529160200191610938565b820191906000526020600020905b81548152906001019060200180831161091b57829003601f168201915b505050505090505b90565b6000610957610950611a79565b8484611a7d565b5060015b92915050565b600a5460ff161561098d5760405162461bcd60e51b8152600401610984906134d1565b60405180910390fd5b60013360009081526009602052604090205460ff1660028111156109ad57fe5b146109ca5760405162461bcd60e51b815260040161098490613561565b33600081815260096020526040808220805460ff19166002179055600880546001810182559083527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b03191684179055517f27b541a16df0902e262f34789782092ab25125513b8ed73608e802951771b9289190a2565b60025490565b610a59611b31565b6001600160a01b03811660009081526009602052604081205460ff166002811115610a8057fe5b14610a9d5760405162461bcd60e51b815260040161098490612ecd565b6005546040516342f6e38960e01b81526101009091046001600160a01b0316906342f6e38990610ad1908490600401612c60565b60206040518083038186803b158015610ae957600080fd5b505afa158015610afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b219190612bb6565b610b3d5760405162461bcd60e51b815260040161098490613218565b6001600160a01b038116600081815260096020526040808220805460ff19166001179055517fead6a006345da1073a106d5f32372d2d2204f46cb0b4bca8f5ebafcbbed12b8a9190a250565b6000610b9d610b988484611b5d565b611b8c565b9392505050565b6000610bb1848484611ba3565b610c2784610bbd611a79565b610c22856040518060600160405280602881526020016136bf602891396001600160a01b038a16600090815260016020526040812090610bfb611a79565b6001600160a01b03168152602081019190915260400160002054919063ffffffff611cc416565b611a7d565b5060019392505050565b610c39611cf0565b610c41611dcd565b6001600160a01b038085166000908152600c6020908152604080832093871683526002909301905220610c789060010183836128a5565b50826001600160a01b0316846001600160a01b03167fb373eedb8e9038a2dcba31f06b2735887c1a904125e5c9f0021ba41ed972318e8484604051610cbe929190612d8d565b60405180910390a350505050565b610cd4611cf0565b610cdc611dcd565b6000610ce782611e02565b6001600160a01b0384166000818152600c60205260409081902083905551919250907f8133e2bf34edab764b55c59d1d41f9df637e7c22828bb6b0a9d55b429d008a9790610d36908590612df8565b60405180910390a2505050565b60055460ff1690565b60096020526000908152604090205460ff1681565b6000610957610d6e611a79565b84610c228560016000610d7f611a79565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff611e7a16565b610dbd611cf0565b610dc5611dcd565b610dcf8282611e9f565b5050565b6006546001600160a01b031681565b610dea611cf0565b610df2611dcd565b610dfb81611893565b15610e185760405162461bcd60e51b8152600401610984906131a2565b600b805460018101825560009182527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b03841690811790915560405190917f76da6cf8b40dd2b2c223a5956831e0ff4e75522538a86782108a0bbe1577e29891a250565b600d5481565b600060015b6001600160a01b03831660009081526009602052604090205460ff166002811115610ec257fe5b1492915050565b610ed1611cf0565b610ed9611dcd565b6000610ee482611e02565b6001600160a01b038086166000818152600c602090815260408083209489168084526002909501909152908190208490555192935090917f81a422e27f503e1b92cdb616a6e653aac10a8e0c3fa6832a58dc616c080fd7bd90610cbe908690612df8565b600061095b610b9883611f6b565b610f5e611cf0565b610f66611dcd565b610f77600b8263ffffffff611f8616565b6040516001600160a01b038216907fc605d0bf97f9b921340106a2e59f9428d5eb9039b16866159e0cdd2bf8e963df90600090a250565b6001600160a01b031660009081526020819052604090205490565b6000610b9d82610fd8856120b3565b9063ffffffff61212c16565b606080610fef612142565b67ffffffffffffffff8111801561100557600080fd5b5060405190808252806020026020018201604052801561103f57816020015b61102c61291f565b8152602001906001900390816110245790505b5090506000805b600b54811015611199576000600b828154811061105f57fe5b60009182526020822001546001600160a01b0316915061107e82611f6b565b13156110ed576040805160a0810182526001600160a01b0383168152600060208201529081016110ad83610f48565b8152602001600060ff168152602001604051806020016040528060008152508152508484815181106110db57fe5b60209081029190910101526001909201915b60606110f8826120b3565b905060005b815181101561118e57600082828151811061111457fe5b602002602001015190506040518060a00160405280856001600160a01b03168152602001826001600160a01b031681526020016111518684610b89565b81526001602082015260400161116786846121c7565b81525087878151811061117657fe5b602090810291909101015250600194850194016110fd565b505050600101611046565b509091505090565b600881815481106111ae57fe5b6000918252602090912001546001600160a01b0316905081565b6060610b9d83836121c7565b60606111de611cf0565b6111e6611dcd565b61123183838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050506001600160a01b03881691905086612285565b905083856001600160a01b03167f2a936dbabeaea30adc1ddad138b1958497988474bef8b09a29411f0105ab8ab285858560405161127193929190612da1565b60405180910390a3949350505050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109385780601f1061090d57610100808354040283529160200191610938565b6060600b80548060200260200160405190810160405280929190818152602001828054801561093857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161131c575050505050905090565b61134b611cf0565b611353611dcd565b610dcf82826122b3565b611365611b31565b600a5460ff16156113885760405162461bcd60e51b8152600401610984906134d1565b60026001600160a01b03821660009081526009602052604090205460ff1660028111156113b157fe5b146113ce5760405162461bcd60e51b815260040161098490613082565b806001600160a01b031663847ef08d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561140957600080fd5b505af115801561141d573d6000803e3d6000fd5b505050506001600160a01b0381166000908152600960205260409020805460ff1916905561144c600882611f86565b6040516001600160a01b038216907f0a1ee69f55c33d8467c69ca59ce2007a737a88603d75392972520bf67cb513b890600090a250565b6000610957611490611a79565b84610c22856040518060600160405280602581526020016136e760259139600160006114ba611a79565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff611cc416565b600a5460ff1681565b611502611cf0565b600a5460ff166115245760405162461bcd60e51b815260040161098490613296565b6007546001600160a01b0316331461154e5760405162461bcd60e51b815260040161098490613326565b600780546001600160a01b0319169055600a805460ff19169055565b606061095b826120b3565b6000610957611582611a79565b8484611ba3565b611591611cf0565b611599611dcd565b6001600160a01b0382166000908152600c602052604090206115c4906001018263ffffffff611f8616565b6001600160a01b038083166000908152600c60209081526040808320938516835260029093019052908120818155906116006001830182612963565b5050806001600160a01b0316826001600160a01b03167f5d0275f68d583838a7e2be68e3ef8ac2c1f9d4eeaa4b223360f4cd093a160d7560405160405180910390a35050565b60606008805480602002602001604051908101604052809291908181526020018280548015610938576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161131c575050505050905090565b6116ae611cf0565b6116b6611dcd565b6116bf81612395565b600d8190556040517fc4e78b3245dc105eefced18655b978e194ff858545a1080f2888dc3b6ae8df0a906116f4908390612df8565b60405180910390a150565b600b81815481106111ae57fe5b611714611b31565b600a5460ff16156117375760405162461bcd60e51b8152600401610984906134d1565b60016001600160a01b03821660009081526009602052604090205460ff16600281111561176057fe5b1461177d5760405162461bcd60e51b815260040161098490613561565b6001600160a01b038116600081815260096020526040808220805460ff19169055517fd6b18042563148f38d728c1c4d339ffd515b632d0ad2e1833b822412f3f4d8779190a250565b6117ce611b31565b600a5460ff16156117f15760405162461bcd60e51b8152600401610984906134d1565b600680546001600160a01b038381166001600160a01b03198316179092556040519116907f43fcfef38622d6a5b118be09c27a6ed8cbdbfca21f0ea9245412ce8031c0423c906118449084908490612c74565b60405180910390a15050565b6007546001600160a01b031681565b60006002610e9b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600061095b82600b8054806020026020016040519081016040528092919081815260200182805480156118ef57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116118d1575b505050505061212c90919063ffffffff16565b61190a611cf0565b611912611dcd565b61191c8282610fc9565b156119395760405162461bcd60e51b815260040161098490612e70565b6001600160a01b038281166000818152600c60209081526040808320600190810180549182018155845291832090910180546001600160a01b0319169486169485179055517ff71324fa78e1894b364a1fc8d0535c4208f28c7b380f752afe00c8ce386023fb9190a35050565b6000806119b283610f48565b905060606119bf846120b3565b905060005b8151811015611a04576119fa6119ed868484815181106119e057fe5b6020026020010151610b89565b849063ffffffff6123d016565b92506001016119c4565b50909392505050565b60055461010090046001600160a01b031681565b611a29611cf0565b600a5460ff1615611a4c5760405162461bcd60e51b815260040161098490612e01565b600780546001600160a01b03191633179055600a805460ff19166001179055565b670de0b6b3a764000090565b3390565b6001600160a01b038316611aa35760405162461bcd60e51b8152600401610984906133ca565b6001600160a01b038216611ac95760405162461bcd60e51b815260040161098490612f04565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611b24908590612df8565b60405180910390a3505050565b6006546001600160a01b03163314611b5b5760405162461bcd60e51b8152600401610984906134fd565b565b6001600160a01b039182166000908152600c602090815260408083209390941682526002909201909152205490565b600061095b600d548361241690919063ffffffff16565b6001600160a01b038316611bc95760405162461bcd60e51b81526004016109849061334e565b6001600160a01b038216611bef5760405162461bcd60e51b815260040161098490612e2d565b611bfa838383612439565b611c3d81604051806060016040528060268152602001613670602691396001600160a01b038616600090815260208190526040902054919063ffffffff611cc416565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611c72908263ffffffff611e7a16565b6001600160a01b0380841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b24908590612df8565b60008184841115611ce85760405162461bcd60e51b81526004016109849190612dd1565b505050900390565b60023360009081526009602052604090205460ff166002811115611d1057fe5b14611d2d5760405162461bcd60e51b81526004016109849061312a565b6005546040516342f6e38960e01b81526101009091046001600160a01b0316906342f6e38990611d61903390600401612c60565b60206040518083038186803b158015611d7957600080fd5b505afa158015611d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db19190612bb6565b611b5b5760405162461bcd60e51b81526004016109849061348d565b600a5460ff1615611b5b576007546001600160a01b03163314611b5b5760405162461bcd60e51b8152600401610984906130b0565b600080611e1a600d548461243e90919063ffffffff16565b9050600083138015611e2a575080155b15611e475760405162461bcd60e51b8152600401610984906131d1565b600083138015611e5d5750611e5b81611b8c565b155b1561095b5760405162461bcd60e51b815260040161098490612f7d565b600082820183811015610b9d5760405162461bcd60e51b815260040161098490612f46565b6001600160a01b038216611ec55760405162461bcd60e51b815260040161098490613591565b611ed160008383612439565b600254611ee4908263ffffffff611e7a16565b6002556001600160a01b038216600090815260208190526040902054611f10908263ffffffff611e7a16565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f5f908590612df8565b60405180910390a35050565b6001600160a01b03166000908152600c602052604090205490565b600080611fec84805480602002602001604051908101604052809291908181526020018280548015611fe157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611fc3575b505050505084612461565b915091508061200d5760405162461bcd60e51b815260040161098490612e9e565b83546000190182811461207f5784818154811061202657fe5b9060005260206000200160009054906101000a90046001600160a01b031685848154811061205057fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8480548061208957fe5b600082815260209020810160001990810180546001600160a01b0319169055019055505b50505050565b6001600160a01b0381166000908152600c602090815260409182902060010180548351818402810184019094528084526060939283018282801561212057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612102575b50505050509050919050565b6000806121398484612461565b95945050505050565b600080805b600b548110156121c1576000600b828154811061216057fe5b60009182526020822001546001600160a01b0316915061217f82611f6b565b131561218c576001909201915b6060612197826120b3565b8051909150156121b75780516121b490859063ffffffff611e7a16565b93505b5050600101612147565b50905090565b6001600160a01b038281166000908152600c60209081526040808320938516835260029384018252918290206001908101805484519281161561010002600019011694909404601f8101839004830282018301909352828152606093909290918301828280156122785780601f1061224d57610100808354040283529160200191612278565b820191906000526020600020905b81548152906001019060200180831161225b57829003601f168201915b5050505050905092915050565b60606122ab848484604051806060016040528060298152602001613696602991396124c7565b949350505050565b6001600160a01b0382166122d95760405162461bcd60e51b8152600401610984906132e5565b6122e582600083612439565b6123288160405180606001604052806022815260200161364e602291396001600160a01b038516600090815260208190526040902054919063ffffffff611cc416565b6001600160a01b038316600090815260208190526040902055600254612354908263ffffffff61258816565b6002556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f5f908590612df8565b600061239f6125b0565b905060006123b3828463ffffffff61241616565b13610dcf5760405162461bcd60e51b815260040161098490613393565b60008282018183128015906123e55750838112155b806123fa57506000831280156123fa57508381125b610b9d5760405162461bcd60e51b815260040161098490612fc4565b6000610b9d61242b848463ffffffff61269a16565b670de0b6b3a7640000612705565b505050565b6000610b9d61245b84670de0b6b3a764000063ffffffff61269a16565b83612705565b81516000908190815b818110156124b457846001600160a01b031686828151811061248857fe5b60200260200101516001600160a01b031614156124ac579250600191506124c09050565b60010161246a565b50600019600092509250505b9250929050565b6060824710156124e95760405162461bcd60e51b81526004016109849061303c565b6124f285612793565b61250e5760405162461bcd60e51b81526004016109849061340e565b60006060866001600160a01b0316858760405161252b9190612c44565b60006040518083038185875af1925050503d8060008114612568576040519150601f19603f3d011682016040523d82523d6000602084013e61256d565b606091505b509150915061257d828286612799565b979650505050505050565b6000828211156125aa5760405162461bcd60e51b815260040161098490613005565b50900390565b6000600019815b600b5481101561268a576000600b82815481106125d057fe5b60009182526020822001546001600160a01b031691506125f76125f283611f6b565b6127d2565b905060008111801561260857508381105b15612611578093505b606061261c836120b3565b905060005b815181101561267a57600082828151811061263857fe5b6020026020010151905060006126566126518784611b5d565b6127f8565b905060008111801561266757508781105b15612670578097505b5050600101612621565b5050600190920191506125b79050565b506126948161281c565b91505090565b6000826126a95750600061095b565b826000191480156126bd5750600160ff1b82145b156126da5760405162461bcd60e51b81526004016109849061324f565b828202828482816126e757fe5b0514610b9d5760405162461bcd60e51b81526004016109849061324f565b6000816127245760405162461bcd60e51b8152600401610984906135c8565b600160ff1b8314158061273957508160001914155b6127555760405162461bcd60e51b8152600401610984906132be565b6000612767848463ffffffff61284116565b90506000838518128015612783575082848161277f57fe5b0715155b15610b9d57600019019392505050565b3b151590565b606083156127a8575081610b9d565b8251156127b85782518084602001fd5b8160405162461bcd60e51b81526004016109849190612dd1565b6000808212156127f45760405162461bcd60e51b8152600401610984906130f5565b5090565b6000808212156128135761280e826000036127d2565b61095b565b61095b826127d2565b6000600160ff1b82106127f45760405162461bcd60e51b815260040161098490613445565b6000816128605760405162461bcd60e51b81526004016109849061352c565b816000191480156128745750600160ff1b83145b156128915760405162461bcd60e51b815260040161098490613161565b600082848161289c57fe5b05949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106128e65782800160ff19823516178555612913565b82800160010185558215612913579182015b828111156129135782358255916020019190600101906128f8565b506127f49291506129aa565b6040518060a0016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600060ff168152602001606081525090565b50805460018160011615610100020316600290046000825580601f1061298957506129a7565b601f0160209004906000526020600020908101906129a791906129aa565b50565b61094091905b808211156127f457600081556001016129b0565b80356001600160a01b038116811461095b57600080fd5b60008083601f8401126129ec578182fd5b50813567ffffffffffffffff811115612a03578182fd5b6020830191508360208285010111156124c057600080fd5b600060208284031215612a2c578081fd5b610b9d83836129c4565b60008060408385031215612a48578081fd5b612a5284846129c4565b9150612a6184602085016129c4565b90509250929050565b60008060008060608587031215612a7f578182fd5b8435612a8a81613638565b93506020850135612a9a81613638565b9250604085013567ffffffffffffffff811115612ab5578283fd5b612ac1878288016129db565b95989497509550505050565b600080600060608486031215612ae1578283fd5b612aeb85856129c4565b9250612afa85602086016129c4565b9150604084013590509250925092565b600080600060608486031215612b1e578283fd5b8335612b2981613638565b92506020840135612b3981613638565b929592945050506040919091013590565b60008060408385031215612b5c578182fd5b612b6684846129c4565b946020939093013593505050565b60008060008060608587031215612b89578384fd5b8435612b9481613638565b935060208501359250604085013567ffffffffffffffff811115612ab5578283fd5b600060208284031215612bc7578081fd5b81518015158114610b9d578182fd5b600060208284031215612be7578081fd5b5035919050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452612c3081602086016020860161360c565b601f01601f19169290920160200192915050565b60008251612c5681846020870161360c565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015612ccf5783516001600160a01b031683529284019291840191600101612caa565b50909695505050505050565b60208082528251828201819052600091906040908185019080840286018301878501865b83811015612d7457603f19898403018552815160a0612d1e8251613600565b8552818901516001600160a01b031689860152878201518886015260608083015160ff1690860152608080830151818701839052612d5e83880182612c18565b988b019896505050928801925050600101612cff565b509098975050505050505050565b901515815260200190565b6000602082526122ab602083018486612bee565b600060408252612db5604083018587612bee565b8281036020840152612dc78185612c18565b9695505050505050565b600060208252610b9d6020830184612c18565b6020810160038310612df257fe5b91905290565b90815260200190565b602080825260129082015271135d5cdd081b9bdd081899481b1bd8dad95960721b604082015260600190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b602080825260149082015273135bd91d5b1948185b1c9958591e48185919195960621b604082015260600190565b60208082526015908201527420b2323932b9b9903737ba1034b71030b93930bc9760591b604082015260600190565b60208082526018908201527f4d6f64756c65206d757374206e6f742062652061646465640000000000000000604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526027908201527f5669727475616c20746f205265616c20756e697420636f6e76657273696f6e206040820152661a5b9d985b1a5960ca1b606082015260800190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b602080825260149082015273135bd91d5b19481b5d5cdd08189948185919195960621b604082015260600190565b60208082526025908201527f5768656e206c6f636b65642c206f6e6c7920746865206c6f636b65722063616e6040820152640818d85b1b60da1b606082015260800190565b6020808252818101527f53616665436173743a2076616c7565206d75737420626520706f736974697665604082015260600190565b60208082526018908201527f4f6e6c7920746865206d6f64756c652063616e2063616c6c0000000000000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f6040820152607760f81b606082015260800190565b602080825260159082015274135d5cdd081b9bdd0818994818dbdb5c1bdb995b9d605a1b604082015260600190565b60208082526027908201527f5265616c20746f205669727475616c20756e697420636f6e76657273696f6e206040820152661a5b9d985b1a5960ca1b606082015260800190565b6020808252601d908201527f4d75737420626520656e61626c6564206f6e20436f6e74726f6c6c6572000000604082015260600190565b60208082526027908201527f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f604082015266766572666c6f7760c81b606082015260800190565b6020808252600e908201526d135d5cdd081899481b1bd8dad95960921b604082015260600190565b6020808252600d908201526c125b9d985b1a59081a5b9c1d5d609a1b604082015260600190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b6020808252600e908201526d26bab9ba103132903637b1b5b2b960911b604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526018908201527f4e6577206d756c7469706c69657220746f6f20736d616c6c0000000000000000604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526028908201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604082015267371034b73a191a9b60c11b606082015260800190565b60208082526024908201527f4d6f64756c65206d75737420626520656e61626c6564206f6e20636f6e74726f604082015263363632b960e11b606082015260800190565b60208082526012908201527113db9b1e481dda195b881d5b9b1bd8dad95960721b604082015260600190565b60208082526015908201527413db9b1e481b585b9859d95c8818d85b8818d85b1b605a1b604082015260600190565b6020808252818101527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604082015260600190565b6020808252601690820152754d6f64756c65206d7573742062652070656e64696e6760501b604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b60208082526010908201526f043616e742064697669646520627920360841b604082015260600190565b60ff91909116815260200190565b6001600160a01b031690565b60005b8381101561362757818101518382015260200161360f565b838111156120ad5750506000910152565b6001600160a01b03811681146129a757600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220744627df27918ed176a52527cf6f140e4fd299910315ca1426bd64fd3d45509a64736f6c634300060a003300000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000e565711e7a59800e110c959e156121988e6f4704000000000000000000000000eed8a32c99192794430383509465e5e360c7460500000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000000200000000000000000000000007b0e11d80ccf75cb390c9be6c27f329c119095a000000000000000000000000964555644e067c560a4c144360507e80c1104784000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000aae6000000000000000000000000000000000000000000000000000000000000493e00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000eefe58acc517b4717752220dc99e863400f0e09000000000000000000000000099178d2437cc3d192fb24ae6680ae87b9c2de3c600000000000000000000000000000000000000000000000000000000000000225969656c642042656172696e672055534454205969656c642059616b20496e646578000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b59422d555344542d59594b000000000000000000000000000000000000000000