Nonfungible Position Manager
Contract Overview
Balance:
0 METIS

METIS Value:
$0.00(@ $28.19/METIS)
More Info
Tag:
Not Available. Update?

Contract Creator:

Contract Source Code Verified (Partial Match)
Contract Name:
NonfungiblePositionManager

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 2000 runs

Created At:
Tue, 03 Oct 2023 11:27:50 GMT
NonfungiblePositionManager.sol
contracts
NonfungiblePositionManager.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_factory",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_WNativeToken",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_tokenDescriptor_",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_poolDeployer",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "approved",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "ApprovalForAll",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount0",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount1",
        "type": "uint256"
      }
    ],
    "name": "Collect",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint128",
        "name": "liquidity",
        "type": "uint128"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount0",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount1",
        "type": "uint256"
      }
    ],
    "name": "DecreaseLiquidity",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint128",
        "name": "liquidity",
        "type": "uint128"
      },
      {
        "indexed": false,
        "internalType": "uint128",
        "name": "actualLiquidity",
        "type": "uint128"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount0",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount1",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "pool",
        "type": "address"
      }
    ],
    "name": "IncreaseLiquidity",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "DOMAIN_SEPARATOR",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "PERMIT_TYPEHASH",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "WNativeToken",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amount0Owed",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount1Owed",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "data",
        "type": "bytes"
      }
    ],
    "name": "algebraMintCallback",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "baseURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "tokenId",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "recipient",
            "type": "address"
          },
          {
            "internalType": "uint128",
            "name": "amount0Max",
            "type": "uint128"
          },
          {
            "internalType": "uint128",
            "name": "amount1Max",
            "type": "uint128"
          }
        ],
        "internalType": "struct INonfungiblePositionManager.CollectParams",
        "name": "params",
        "type": "tuple"
      }
    ],
    "name": "collect",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "amount0",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount1",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token0",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "token1",
        "type": "address"
      },
      {
        "internalType": "uint160",
        "name": "sqrtPriceX96",
        "type": "uint160"
      }
    ],
    "name": "createAndInitializePoolIfNecessary",
    "outputs": [
      {
        "internalType": "address",
        "name": "pool",
        "type": "address"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "tokenId",
            "type": "uint256"
          },
          {
            "internalType": "uint128",
            "name": "liquidity",
            "type": "uint128"
          },
          {
            "internalType": "uint256",
            "name": "amount0Min",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amount1Min",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          }
        ],
        "internalType": "struct INonfungiblePositionManager.DecreaseLiquidityParams",
        "name": "params",
        "type": "tuple"
      }
    ],
    "name": "decreaseLiquidity",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "amount0",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount1",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "factory",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "getApproved",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "tokenId",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amount0Desired",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amount1Desired",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amount0Min",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amount1Min",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          }
        ],
        "internalType": "struct INonfungiblePositionManager.IncreaseLiquidityParams",
        "name": "params",
        "type": "tuple"
      }
    ],
    "name": "increaseLiquidity",
    "outputs": [
      {
        "internalType": "uint128",
        "name": "liquidity",
        "type": "uint128"
      },
      {
        "internalType": "uint256",
        "name": "amount0",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount1",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      }
    ],
    "name": "isApprovedForAll",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "token0",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "token1",
            "type": "address"
          },
          {
            "internalType": "int24",
            "name": "tickLower",
            "type": "int24"
          },
          {
            "internalType": "int24",
            "name": "tickUpper",
            "type": "int24"
          },
          {
            "internalType": "uint256",
            "name": "amount0Desired",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amount1Desired",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amount0Min",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amount1Min",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "recipient",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          }
        ],
        "internalType": "struct INonfungiblePositionManager.MintParams",
        "name": "params",
        "type": "tuple"
      }
    ],
    "name": "mint",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint128",
        "name": "liquidity",
        "type": "uint128"
      },
      {
        "internalType": "uint256",
        "name": "amount0",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount1",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes[]",
        "name": "data",
        "type": "bytes[]"
      }
    ],
    "name": "multicall",
    "outputs": [
      {
        "internalType": "bytes[]",
        "name": "results",
        "type": "bytes[]"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "ownerOf",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "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": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "poolDeployer",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "positions",
    "outputs": [
      {
        "internalType": "uint96",
        "name": "nonce",
        "type": "uint96"
      },
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "token0",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "token1",
        "type": "address"
      },
      {
        "internalType": "int24",
        "name": "tickLower",
        "type": "int24"
      },
      {
        "internalType": "int24",
        "name": "tickUpper",
        "type": "int24"
      },
      {
        "internalType": "uint128",
        "name": "liquidity",
        "type": "uint128"
      },
      {
        "internalType": "uint256",
        "name": "feeGrowthInside0LastX128",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "feeGrowthInside1LastX128",
        "type": "uint256"
      },
      {
        "internalType": "uint128",
        "name": "tokensOwed0",
        "type": "uint128"
      },
      {
        "internalType": "uint128",
        "name": "tokensOwed1",
        "type": "uint128"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "refundNativeToken",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "_data",
        "type": "bytes"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "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": "selfPermit",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "nonce",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "expiry",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "v",
        "type": "uint8"
      },
      {
        "internalType": "bytes32",
        "name": "r",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "s",
        "type": "bytes32"
      }
    ],
    "name": "selfPermitAllowed",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "nonce",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "expiry",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "v",
        "type": "uint8"
      },
      {
        "internalType": "bytes32",
        "name": "r",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "s",
        "type": "bytes32"
      }
    ],
    "name": "selfPermitAllowedIfNecessary",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "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": "selfPermitIfNecessary",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "setApprovalForAll",
    "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": [
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amountMinimum",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      }
    ],
    "name": "sweepToken",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "tokenByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "tokenOfOwnerByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "tokenURI",
    "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": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amountMinimum",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      }
    ],
    "name": "unwrapWNativeToken",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]


Contract Creation Code
610140604052600d80546001600160b01b0319166001176001600160b01b0316600160b01b1790553480156200003457600080fd5b506040516200621b3803806200621b8339810160408190526200005791620002e6565b8383826040518060400160405280601881526020017f416c676562726120506f736974696f6e73204e46542d5631000000000000000081525060405180604001604052806008815260200167414c47422d504f5360c01b815250604051806040016040528060018152602001603160f81b8152508282620000e56301ffc9a760e01b6200019860201b60201c565b8151620000fa9060069060208501906200021d565b508051620001109060079060208401906200021d565b50620001236380ac58cd60e01b62000198565b62000135635b5e139f60e01b62000198565b6200014763780e9d6360e01b62000198565b50508251602093840120608052805192019190912060a052506001600160601b0319606093841b811660c05290831b811660e05290821b81166101005292901b909116610120525062000342915050565b6001600160e01b03198082161415620001f8576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620002555760008555620002a0565b82601f106200027057805160ff1916838001178555620002a0565b82800160010185558215620002a0579182015b82811115620002a057825182559160200191906001019062000283565b50620002ae929150620002b2565b5090565b5b80821115620002ae5760008155600101620002b3565b80516001600160a01b0381168114620002e157600080fd5b919050565b60008060008060808587031215620002fc578384fd5b6200030785620002c9565b93506200031760208601620002c9565b92506200032760408601620002c9565b91506200033760608601620002c9565b905092959194509250565b60805160a05160c05160601c60e05160601c6101005160601c6101205160601c615e47620003d460003980612ac05250806102b452806117e752806118dd5280611e7e528061389252806138d8528061394c525080610ac052806111a5528061129a5280612dec52806135105250806114ea52806115a45280612a5a52508061120d5250806111ec5250615e476000f3fe6080604052600436106102a45760003560e01c80636352211e1161016e578063a4a78f0c116100cb578063c87b56dd1161007f578063e985e9c511610064578063e985e9c514610724578063f3995c6714610744578063fc6f78651461075757610328565b8063c87b56dd146106f1578063df2ab5bb1461071157610328565b8063b88d4fde116100b0578063b88d4fde146106a9578063c2e3140a146106c9578063c45a0155146106dc57610328565b8063a4a78f0c14610676578063ac9650d81461068957610328565b80638af3ac851161012257806399fbab881161010757806399fbab88146105fc5780639cc1a28314610633578063a22cb4651461065657610328565b80638af3ac85146105d257806395d89b41146105e757610328565b80636c0360eb116101535780636c0360eb1461058a57806370a082311461059f5780637ac2ff7b146105bf57610328565b80636352211e1461055757806369bc35b21461057757610328565b806330adf81f1161021c57806342842e0e116101d05780634659a494116101b55780634659a494146105115780634f6ccce71461052457806351246d6e1461054457610328565b806342842e0e146104de57806342966c68146104fe57610328565b80633644e515116102015780633644e515146104a15780633dd657c5146104b657806341865270146104d657610328565b806330adf81f146104775780633119049a1461048c57610328565b80630c49ccbe11610273578063219f5d1711610258578063219f5d171461041557806323b872dd146104375780632f745c591461045757610328565b80630c49ccbe146103d257806318160ddd146103f357610328565b806301ffc9a71461032d57806306fdde0314610363578063081812fc14610385578063095ea7b3146103b257610328565b3661032857336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610326576040805162461bcd60e51b815260206004820152601060248201527f4e6f7420574e6174697665546f6b656e00000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b34801561033957600080fd5b5061034d610348366004615274565b61076a565b60405161035a9190615822565b60405180910390f35b34801561036f57600080fd5b506103786107a5565b60405161035a9190615875565b34801561039157600080fd5b506103a56103a036600461558d565b61083b565b60405161035a91906156d0565b3480156103be57600080fd5b506103266103cd366004615149565b610897565b6103e56103e0366004615351565b61096d565b60405161035a929190615a6d565b3480156103ff57600080fd5b50610408610dc4565b60405161035a919061582d565b610428610423366004615362565b610dd5565b60405161035a93929190615a28565b34801561044357600080fd5b50610326610452366004615035565b6110fd565b34801561046357600080fd5b50610408610472366004615149565b611154565b34801561048357600080fd5b5061040861117f565b34801561049857600080fd5b506103a56111a3565b3480156104ad57600080fd5b506104086111c7565b3480156104c257600080fd5b506103266104d13660046155ec565b611285565b610326611303565b3480156104ea57600080fd5b506103266104f9366004615035565b611315565b61032661050c36600461558d565b611330565b61032661051f3660046151aa565b6113ff565b34801561053057600080fd5b5061040861053f36600461558d565b6114b2565b6103a5610552366004614feb565b6114c8565b34801561056357600080fd5b506103a561057236600461558d565b6117bb565b6103266105853660046155a5565b6117e3565b34801561059657600080fd5b50610378611963565b3480156105ab57600080fd5b506104086105ba366004614f97565b611968565b6103266105cd3660046151aa565b6119d0565b3480156105de57600080fd5b506103a5611e7c565b3480156105f357600080fd5b50610378611ea0565b34801561060857600080fd5b5061061c61061736600461558d565b611f01565b60405161035a9b9a99989796959493929190615a7b565b610646610641366004615411565b612103565b60405161035a9493929190615a49565b34801561066257600080fd5b5061032661067136600461511c565b61263d565b6103266106843660046151aa565b612760565b61069c610697366004615205565b612812565b60405161035a91906157a4565b3480156106b557600080fd5b506103266106c4366004615075565b612952565b6103266106d73660046151aa565b6129b0565b3480156106e857600080fd5b506103a5612a58565b3480156106fd57600080fd5b5061037861070c36600461558d565b612a7c565b61032661071f366004615174565b612b4b565b34801561073057600080fd5b5061034d61073f366004614fb3565b612c2e565b6103266107523660046151aa565b612c5c565b6103e561076536600461533a565b612ce7565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020819052604090205460ff165b919050565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b6000610846826131ef565b61086b5760405162461bcd60e51b8152600401610862906158bf565b60405180910390fd5b506000908152600c60205260409020546c0100000000000000000000000090046001600160a01b031690565b60006108a2826117bb565b9050806001600160a01b0316836001600160a01b031614156108f55760405162461bcd60e51b8152600401808060200182810382526021815260200180615de96021913960400191505060405180910390fd5b806001600160a01b03166109076131fc565b6001600160a01b0316148061092357506109238161073f6131fc565b61095e5760405162461bcd60e51b8152600401808060200182810382526038815260200180615d136038913960400191505060405180910390fd5b6109688383613200565b505050565b600080823561097c3382613284565b6109985760405162461bcd60e51b815260040161086290615888565b8360800135806109a6613328565b11156109f9576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b6000610a0b6040870160208801615423565b6001600160801b031611610a1e57600080fd5b84356000908152600c602090815260409182902060018101549092600160801b9091046001600160801b031691610a59918901908901615423565b6001600160801b0316816001600160801b03161015610a7757600080fd5b60018083015469ffffffffffffffffffff166000908152600b60209081526040808320815180830190925280546001600160a01b03908116835294015490931690830152610ae57f00000000000000000000000000000000000000000000000000000000000000008361332c565b60018501549091506001600160a01b0382169063a34123a7906a01000000000000000000008104600290810b91600160681b9004900b610b2b60408e0160208f01615423565b6040518463ffffffff1660e01b8152600401610b499392919061584f565b6040805180830381600087803b158015610b6257600080fd5b505af1158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a91906155c9565b909850965060408901358810801590610bb7575088606001358710155b610bd35760405162461bcd60e51b81526004016108629061591c565b6001840154600090610c039030906a01000000000000000000008104600290810b91600160681b9004900b61341a565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401610c34919061582d565b60c06040518083038186803b158015610c4c57600080fd5b505afa158015610c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c84919061546d565b5050935093505050610caa87600201548303876001600160801b0316600160801b613430565b6004880180546fffffffffffffffffffffffffffffffff198116928e016001600160801b039182160181169290921790556003880154610cf491908303908816600160801b613430565b6004880180546001600160801b03808216938e01600160801b9283900482160116029190911790556002870182905560038701819055610d3a60408d0160208e01615423565b86038760010160106101000a8154816001600160801b0302191690836001600160801b031602179055508b600001357f26f6a048ee9138f2c0ce266f322cb99228e8d619ae2bff30c67f8dcf9d2377b48d6020016020810190610d9d9190615423565b8d8d604051610dae93929190615a28565b60405180910390a2505050505050505050915091565b6000610dd060026134c6565b905090565b60008060008360a0013580610de8613328565b1115610e3b576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b84356000908152600c6020908152604080832060018082015469ffffffffffffffffffff81168652600b85528386208451808601865281546001600160a01b0390811682529190930154811683870190815285516101208101875284518316815290519091168187015230818601526a01000000000000000000008204600290810b810b606080840191909152600160681b909304810b900b608080830191909152958c013560a0820152938b013560c08501528a013560e08401529289013561010083015292908190610f0e906134d1565b6001890154949c50919a50985093509150600090610f4a9030906a01000000000000000000008104600290810b91600160681b9004900b61341a565b9050600080846001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401610f7b919061582d565b60c06040518083038186803b158015610f9357600080fd5b505afa158015610fa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcb919061546d565b5050935093505050611008876002015483038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b613430565b6004880180546001600160801b0380821690930183166fffffffffffffffffffffffffffffffff19909116179055600388015460018901546110589291840391600160801b918290041690613430565b6004880180546001600160801b03600160801b808304821690940181168402918116919091179091556002890184905560038901839055600189018054838104831688018316909302929091169190911790556040518c35907f8a82de7fe9b33e0e6bca0e26f5bd14a74f1164ffe236d50e0a36c3ea70f2b814906110e6908e9088908f908f908c906159ef565b60405180910390a250505050505050509193909250565b61110e6111086131fc565b82613284565b6111495760405162461bcd60e51b8152600401808060200182810382526031815260200180615e0a6031913960400191505060405180910390fd5b610968838383613711565b6001600160a01b0382166000908152600160205260408120611176908361385d565b90505b92915050565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad81565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611234613869565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b600061129382840184615373565b90506112c37f0000000000000000000000000000000000000000000000000000000000000000826000015161386d565b5084156112de5780515160208201516112de91903388613890565b83156112fc576112fc81600001516020015182602001513387613890565b5050505050565b4715611313576113133347613a20565b565b61096883838360405180602001604052806000815250612952565b8061133b3382613284565b6113575760405162461bcd60e51b815260040161086290615888565b6000828152600c602052604090206001810154600160801b90046001600160801b0316158015611392575060048101546001600160801b0316155b80156113b057506004810154600160801b90046001600160801b0316155b6113cc5760405162461bcd60e51b81526004016108629061598a565b6000838152600c602052604081208181556001810182905560028101829055600381018290556004015561096883613b29565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b15801561149257600080fd5b505af11580156114a6573d6000803e3d6000fd5b50505050505050505050565b6000806114c0600284613bf6565b509392505050565b6000826001600160a01b0316846001600160a01b0316106114e857600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d9a641e185856040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561156657600080fd5b505afa15801561157a573d6000803e3d6000fd5b505050506040513d602081101561159057600080fd5b505190506001600160a01b0381166116d2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e343361585856040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050602060405180830381600087803b15801561162257600080fd5b505af1158015611636573d6000803e3d6000fd5b505050506040513d602081101561164c57600080fd5b5051604080517ff637731d0000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015291519293509083169163f637731d9160248082019260009290919082900301818387803b1580156116b557600080fd5b505af11580156116c9573d6000803e3d6000fd5b505050506117b4565b6000816001600160a01b031663e76c01e46040518163ffffffff1660e01b81526004016101006040518083038186803b15801561170e57600080fd5b505afa158015611722573d6000803e3d6000fd5b505050506040513d61010081101561173957600080fd5b505190506001600160a01b0381166114c057816001600160a01b031663f637731d846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561179a57600080fd5b505af11580156117ae573d6000803e3d6000fd5b50505050505b9392505050565b600061117982604051806060016040528060298152602001615d756029913960029190613c14565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561185257600080fd5b505afa158015611866573d6000803e3d6000fd5b505050506040513d602081101561187c57600080fd5b50519050828110156118d5576040805162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e7420574e6174697665546f6b656e00000000000000604482015290519081900360640190fd5b8015610968577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561194157600080fd5b505af1158015611955573d6000803e3d6000fd5b505050506109688282613a20565b606090565b60006001600160a01b0382166119af5760405162461bcd60e51b815260040180806020018281038252602a815260200180615d4b602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600160205260409020611179906134c6565b836119d9613328565b1115611a2c576040805162461bcd60e51b815260206004820152600e60248201527f5065726d69742065787069726564000000000000000000000000000000000000604482015290519081900360640190fd5b6000611a366111c7565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad8888611a6281613c21565b604080516020808201969096526001600160a01b03909416848201526060840192909252608083015260a08083018a90528151808403909101815260c0830182528051908401207f190100000000000000000000000000000000000000000000000000000000000060e084015260e283019490945261010280830194909452805180830390940184526101229091019052815191012090506000611b05876117bb565b9050806001600160a01b0316886001600160a01b03161415611b585760405162461bcd60e51b8152600401808060200182810382526027815260200180615c766027913960400191505060405180910390fd5b611b6181613c60565b15611d3c576040805160208082018790528183018690527fff0000000000000000000000000000000000000000000000000000000000000060f889901b16606083015282516041818403018152606183018085527f1626ba7e0000000000000000000000000000000000000000000000000000000090526065830186815260858401948552815160a585015281516001600160a01b03871695631626ba7e958995919260c59091019185019080838360005b83811015611c2b578181015183820152602001611c13565b50505050905090810190601f168015611c585780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015611c7657600080fd5b505afa158015611c8a573d6000803e3d6000fd5b505050506040513d6020811015611ca057600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e0000000000000000000000000000000000000000000000000000000014611d37576040805162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015290519081900360640190fd5b611e68565b600060018387878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611d98573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611e00576040805162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e6174757265000000000000000000000000000000604482015290519081900360640190fd5b816001600160a01b0316816001600160a01b031614611e66576040805162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015290519081900360640190fd5b505b611e728888613200565b5050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108315780601f1061080657610100808354040283529160200191610831565b6000818152600c6020908152604080832081516101408101835281546bffffffffffffffffffffffff811682526001600160a01b036c010000000000000000000000009091041693810193909352600181015469ffffffffffffffffffff81169284018390526a01000000000000000000008104600290810b810b810b6060860152600160681b8204810b810b810b60808601526001600160801b03600160801b92839004811660a08701529083015460c0860152600383015460e0860152600490920154808316610100860152041661012083015282918291829182918291829182918291829182916120075760405162461bcd60e51b815260040161086290615953565b6000600b6000836040015169ffffffffffffffffffff1669ffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152505090508160000151826020015182600001518360200151856060015186608001518760a001518860c001518960e001518a61010001518b61012001519c509c509c509c509c509c509c509c509c509c509c50505091939597999b90929496989a50565b60008060008084610120013580612118613328565b111561216b576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b6000806122216040518061012001604052808a60000160208101906121909190614f97565b6001600160a01b031681526020018a60200160208101906121b19190614f97565b6001600160a01b031681523060208201526040908101906121d89060608d01908d016152b4565b60020b81526020016121f060808c0160608d016152b4565b60020b81526080808c0135602083015260a08c0135604083015260c08c0135606083015260e08c01359101526134d1565b939950909750955090925090506122986122436101208a016101008b01614f97565b600d80547fffffffffffffffffffff000000000000000000000000000000000000000000008116600175ffffffffffffffffffffffffffffffffffffffffffff92831690810190921617909155985088613c66565b60006122c3306122ae60608c0160408d016152b4565b6122be60808d0160608e016152b4565b61341a565b9050600080846001600160a01b031663514ea4bf846040518263ffffffff1660e01b81526004016122f4919061582d565b60c06040518083038186803b15801561230c57600080fd5b505afa158015612320573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612344919061546d565b505093509350505060006123a18660405180604001604052808f60000160208101906123709190614f97565b6001600160a01b031681526020018f60200160208101906123919190614f97565b6001600160a01b03169052613d94565b905060405180610140016040528060006bffffffffffffffffffffffff16815260200160006001600160a01b031681526020018269ffffffffffffffffffff1681526020018d60400160208101906123f991906152b4565b60020b81526020018d606001602081019061241491906152b4565b60020b8152602001866001600160801b0316815260200184815260200183815260200160006001600160801b0316815260200160006001600160801b0316815250600c60008d815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550606082015181600101600a6101000a81548162ffffff021916908360020b62ffffff160217905550608082015181600101600d6101000a81548162ffffff021916908360020b62ffffff16021790555060a08201518160010160106101000a8154816001600160801b0302191690836001600160801b0316021790555060c0820151816002015560e082015181600301556101008201518160040160006101000a8154816001600160801b0302191690836001600160801b031602179055506101208201518160040160106101000a8154816001600160801b0302191690836001600160801b031602179055509050508a7f8a82de7fe9b33e0e6bca0e26f5bd14a74f1164ffe236d50e0a36c3ea70f2b8148b878c8c8b6040516126279594939291906159ef565b60405180910390a2505050505050509193509193565b6126456131fc565b6001600160a01b0316826001600160a01b031614156126ab576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b80600560006126b86131fc565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169215159290921790915561271a6131fc565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156127ca57600080fd5b505afa1580156127de573d6000803e3d6000fd5b505050506040513d60208110156127f457600080fd5b5051101561280a5761280a8686868686866113ff565b505050505050565b60608167ffffffffffffffff8111801561282b57600080fd5b5060405190808252806020026020018201604052801561285f57816020015b606081526020019060019003908161284a5790505b50905060005b8281101561294b576000803086868581811061287d57fe5b905060200281019061288f9190615af6565b60405161289d9291906156c0565b600060405180830381855af49150503d80600081146128d8576040519150601f19603f3d011682016040523d82523d6000602084013e6128dd565b606091505b509150915081612929576044815110156128f657600080fd5b6004810190508080602001905181019061291091906152d0565b60405162461bcd60e51b81526004016108629190615875565b8084848151811061293657fe5b60209081029190910101525050600101612865565b5092915050565b61296361295d6131fc565b83613284565b61299e5760405162461bcd60e51b8152600401808060200182810382526031815260200180615e0a6031913960400191505060405180910390fd5b6129aa84848484613eac565b50505050565b604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b158015612a1857600080fd5b505afa158015612a2c573d6000803e3d6000fd5b505050506040513d6020811015612a4257600080fd5b5051101561280a5761280a868686868686612c5c565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060612a87826131ef565b612a9057600080fd5b6040517fe9dc63750000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e9dc637590612af79030908690600401615836565b60006040518083038186803b158015612b0f57600080fd5b505afa158015612b23573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261117991908101906152d0565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612b9a57600080fd5b505afa158015612bae573d6000803e3d6000fd5b505050506040513d6020811015612bc457600080fd5b5051905082811015612c1d576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b80156129aa576129aa848383613efe565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b15801561149257600080fd5b6000808235612cf63382613284565b612d125760405162461bcd60e51b815260040161086290615888565b6000612d246060860160408701615423565b6001600160801b03161180612d5157506000612d466080860160608701615423565b6001600160801b0316115b612d5a57600080fd5b600080612d6d6040870160208801614f97565b6001600160a01b031614612d9057612d8b6040860160208701614f97565b612d92565b305b85356000908152600c6020908152604080832060018082015469ffffffffffffffffffff168552600b8452828520835180850190945280546001600160a01b03908116855291015416928201929092529293509190612e117f00000000000000000000000000000000000000000000000000000000000000008361332c565b600484015460018501549192506001600160801b0380821692600160801b928390048216929004161561302f5760018501546040517fa34123a70000000000000000000000000000000000000000000000000000000081526001600160a01b0385169163a34123a791612ea8916a01000000000000000000008104600290810b92600160681b909204900b9060009060040161584f565b6040805180830381600087803b158015612ec157600080fd5b505af1158015612ed5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef991906155c9565b5050600185015460009081906001600160a01b0386169063514ea4bf90612f3e9030906a01000000000000000000008104600290810b91600160681b9004900b61341a565b6040518263ffffffff1660e01b8152600401612f5a919061582d565b60c06040518083038186803b158015612f7257600080fd5b505afa158015612f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612faa919061546d565b5050935093505050612fe7876002015483038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b613430565b84019350613020876003015482038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b613430565b60028801929092556003870155015b6000806001600160801b03841661304c60608e0160408f01615423565b6001600160801b03161161306f5761306a60608d0160408e01615423565b613071565b835b836001600160801b03168d606001602081019061308e9190615423565b6001600160801b0316116130b1576130ac60808e0160608f01615423565b6130b3565b835b60018901546040517f4f1eb3d80000000000000000000000000000000000000000000000000000000081529294509092506001600160a01b03871691634f1eb3d891613126918c916a01000000000000000000008104600290810b92600160681b909204900b908890889060040161573d565b6040805180830381600087803b15801561313f57600080fd5b505af1158015613153573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613177919061543f565b6004890180546fffffffffffffffffffffffffffffffff196001600160801b03918216600160801b878a0384160217168689038216179091556040519281169d50169a508c35907f40d0efd1a53d60ecbf40971b9daf7dc90178c3aadc7aab1765632738fa8b8f0190610dae908b908690869061577a565b600061117960028361408e565b3390565b6000818152600c6020526040902080546bffffffffffffffffffffffff166c010000000000000000000000006001600160a01b03851690810291909117909155819061324b826117bb565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061328f826131ef565b6132ca5760405162461bcd60e51b815260040180806020018281038252602c815260200180615ce7602c913960400191505060405180910390fd5b60006132d5836117bb565b9050806001600160a01b0316846001600160a01b031614806133105750836001600160a01b03166133058461083b565b6001600160a01b0316145b8061332057506133208185612c2e565b949350505050565b4290565b600081602001516001600160a01b031682600001516001600160a01b03161061335457600080fd5b508051602091820151604080516001600160a01b03938416818601529290911682820152805180830382018152606080840183528151918501919091207fff00000000000000000000000000000000000000000000000000000000000000608085015294901b6bffffffffffffffffffffffff1916608183015260958201939093527f6c1bebd370ba84753516bc1393c0d0a6c645856da55f5393ac8ab3d6dbc861d360b5808301919091528351808303909101815260d5909101909252815191012090565b601892831b62ffffff9283161790921b91161790565b6000838302816000198587098281108382030391505080841161345257600080fd5b80613462575082900490506117b4565b8385870960008581038616958690049560026003880281188089028203028089028203028089028203028089028203028089028203028089029091030291819003819004600101858411909403939093029190930391909104170290509392505050565b60006111798261409a565b600080600080600080604051806040016040528088600001516001600160a01b0316815260200188602001516001600160a01b031681525090506135357f00000000000000000000000000000000000000000000000000000000000000008261332c565b91506000826001600160a01b031663e76c01e46040518163ffffffff1660e01b81526004016101006040518083038186803b15801561357357600080fd5b505afa158015613587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135ab91906154e8565b50505050505050905060006135c3896060015161409e565b905060006135d48a6080015161409e565b90506135eb8383838d60a001518e60c001516143df565b9850505050816001600160a01b031663aafe29c03389604001518a606001518b608001518b6040518060400160405280898152602001336001600160a01b031681525060405160200161363e91906159c1565b6040516020818303038152906040526040518763ffffffff1660e01b815260040161366e969594939291906156e4565b606060405180830381600087803b15801561368857600080fd5b505af115801561369c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c09190615667565b60e08a01516001600160801b039091169750919550935084108015906136eb57508661010001518310155b6137075760405162461bcd60e51b81526004016108629061591c565b5091939590929450565b826001600160a01b0316613724826117bb565b6001600160a01b0316146137695760405162461bcd60e51b8152600401808060200182810382526029815260200180615dc06029913960400191505060405180910390fd5b6001600160a01b0382166137ae5760405162461bcd60e51b8152600401808060200182810382526024815260200180615c9d6024913960400191505060405180910390fd5b6137b9838383610968565b6137c4600082613200565b6001600160a01b03831660009081526001602052604090206137e690826144a3565b506001600160a01b038216600090815260016020526040902061380990826144af565b50613816600282846144bb565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061117683836144d1565b4690565b6000613879838361332c565b9050336001600160a01b0382161461117957600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156138d15750804710155b156139f3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561393157600080fd5b505af1158015613945573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156139c157600080fd5b505af11580156139d5573d6000803e3d6000fd5b505050506040513d60208110156139eb57600080fd5b506129aa9050565b6001600160a01b038316301415613a1457613a0f848383613efe565b6129aa565b6129aa84848484614535565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310613a6c5780518252601f199092019160209182019101613a4d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613ace576040519150601f19603f3d011682016040523d82523d6000602084013e613ad3565b606091505b5050905080610968576040805162461bcd60e51b815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000613b34826117bb565b9050613b4281600084610968565b613b4d600083613200565b6000828152600860205260409020546002600019610100600184161502019091160415613b8b576000828152600860205260408120613b8b91614f25565b6001600160a01b0381166000908152600160205260409020613bad90836144a3565b50613bb96002836146cd565b5060405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6000808080613c0586866146d9565b909450925050505b9250929050565b6000613320848484614754565b6000908152600c6020526040902080546bffffffffffffffffffffffff19811660016bffffffffffffffffffffffff9283169081019092161790915590565b3b151590565b6001600160a01b038216613cc1576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b613cca816131ef565b15613d1c576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b613d2860008383610968565b6001600160a01b0382166000908152600160205260409020613d4a90826144af565b50613d57600282846144bb565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160a01b0382166000908152600a602052604090205469ffffffffffffffffffff16806111795750600d8054600169ffffffffffffffffffff76010000000000000000000000000000000000000000000080840482168381019092160275ffffffffffffffffffffffffffffffffffffffffffff909316929092179092556001600160a01b038085166000908152600a6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffff000000000000000000001686179055848352600b8252909120855181549084167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825591860151940180549490921693169290921790915592915050565b613eb7848484613711565b613ec38484848461481e565b6129aa5760405162461bcd60e51b8152600401808060200182810382526032815260200180615c446032913960400191505060405180910390fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b60208310613fa85780518252601f199092019160209182019101613f89565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461400a576040519150601f19603f3d011682016040523d82523d6000602084013e61400f565b606091505b509150915081801561403d57508051158061403d575080806020019051602081101561403a57600080fd5b50515b6112fc576040805162461bcd60e51b815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600061117683836149fa565b5490565b6000600282810b60171d90818418829003900b620d89e8811115614109576040805162461bcd60e51b815260206004820152600160248201527f5400000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006001821661411d57600160801b61412f565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615614163576ffff97272373d413259a46990580e213a0260801c5b6004821615614182576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156141a1576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156141c0576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156141df576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156141fe576fff2ea16466c96a3843ec78b326b528610260801c5b608082161561421d576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561423d576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561425d576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561427d576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561429d576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156142bd576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156142dd576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156142fd576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561431d576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561433e576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561435e576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561437d576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561439a576b048a170391f7dc42444e8fa20260801c5b60008560020b13156143b55780600019816143b157fe5b0490505b6401000000008106156143c95760016143cc565b60005b60ff16602082901c019350505050919050565b6000836001600160a01b0316856001600160a01b031611156143ff579293925b846001600160a01b0316866001600160a01b03161161442a57614423858585614a12565b905061449a565b836001600160a01b0316866001600160a01b0316101561448c576000614451878686614a12565b90506000614460878986614a7e565b9050806001600160801b0316826001600160801b0316106144815780614483565b815b9250505061449a565b614497858584614a7e565b90505b95945050505050565b60006111768383614ac4565b60006111768383614b8a565b600061332084846001600160a01b038516614bd4565b815460009082106145135760405162461bcd60e51b8152600401808060200182810382526022815260200180615c226022913960400191505060405180910390fd5b82600001828154811061452257fe5b9060005260206000200154905092915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000178152925182516000948594938a169392918291908083835b602083106145e75780518252601f1990920191602091820191016145c8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614649576040519150601f19603f3d011682016040523d82523d6000602084013e61464e565b606091505b509150915081801561467c57508051158061467c575080806020019051602081101561467957600080fd5b50515b61280a576040805162461bcd60e51b815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006111768383614c6b565b81546000908190831061471d5760405162461bcd60e51b8152600401808060200182810382526022815260200180615d9e6022913960400191505060405180910390fd5b600084600001848154811061472e57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816147ef5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156147b457818101518382015260200161479c565b50505050905090810190601f1680156147e15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061480257fe5b9060005260206000209060020201600101549150509392505050565b6000614832846001600160a01b0316613c60565b61483e57506001613320565b600061498f7f150b7a020000000000000000000000000000000000000000000000000000000061486c6131fc565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156148d35781810151838201526020016148bb565b50505050905090810190601f1680156149005780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001615c44603291396001600160a01b0388169190614d3f565b905060008180602001905160208110156149a857600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001492505050949350505050565b60009081526001919091016020526040902054151590565b6000826001600160a01b0316846001600160a01b03161115614a32579192915b6000614a5e856001600160a01b0316856001600160a01b03166c01000000000000000000000000613430565b905061449a614a7984838888036001600160a01b0316613430565b614d4e565b6000826001600160a01b0316846001600160a01b03161115614a9e579192915b613320614a79836c010000000000000000000000008787036001600160a01b0316613430565b60008181526001830160205260408120548015614b805783546000198083019190810190600090879083908110614af757fe5b9060005260206000200154905080876000018481548110614b1457fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080614b4457fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611179565b6000915050611179565b6000614b9683836149fa565b614bcc57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611179565b506000611179565b600082815260018401602052604081205480614c395750506040805180820182528381526020808201848152865460018181018955600089815284812095516002909302909501918255915190820155865486845281880190925292909120556117b4565b82856000016001830381548110614c4c57fe5b90600052602060002090600202016001018190555060009150506117b4565b60008181526001830160205260408120548015614b805783546000198083019190810190600090879083908110614c9e57fe5b9060005260206000209060020201905080876000018481548110614cbe57fe5b600091825260208083208454600290930201918255600193840154918401919091558354825289830190526040902090840190558654879080614cfd57fe5b60008281526020808220600260001990940193840201828155600190810183905592909355888152898201909252604082209190915594506111799350505050565b60606133208484600085614d64565b806001600160801b03811681146107a057600080fd5b606082471015614da55760405162461bcd60e51b8152600401808060200182810382526026815260200180615cc16026913960400191505060405180910390fd5b614dae85613c60565b614dff576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310614e3d5780518252601f199092019160209182019101614e1e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614e9f576040519150601f19603f3d011682016040523d82523d6000602084013e614ea4565b606091505b5091509150614eb4828286614ebf565b979650505050505050565b60608315614ece5750816117b4565b825115614ede5782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156147b457818101518382015260200161479c565b50805460018160011615610100020316600290046000825580601f10614f4b5750614f69565b601f016020900490600052602060002090810190614f699190614f6c565b50565b5b80821115614f815760008155600101614f6d565b5090565b805161ffff811681146107a057600080fd5b600060208284031215614fa8578081fd5b81356117b481615bcb565b60008060408385031215614fc5578081fd5b8235614fd081615bcb565b91506020830135614fe081615bcb565b809150509250929050565b600080600060608486031215614fff578081fd5b833561500a81615bcb565b9250602084013561501a81615bcb565b9150604084013561502a81615bcb565b809150509250925092565b600080600060608486031215615049578081fd5b833561505481615bcb565b9250602084013561506481615bcb565b929592945050506040919091013590565b6000806000806080858703121561508a578182fd5b843561509581615bcb565b935060208501356150a581615bcb565b925060408501359150606085013567ffffffffffffffff8111156150c7578182fd5b8501601f810187136150d7578182fd5b80356150ea6150e582615b7d565b615b59565b8181528860208385010111156150fe578384fd5b81602084016020830137908101602001929092525092959194509250565b6000806040838503121561512e578182fd5b823561513981615bcb565b91506020830135614fe081615be0565b6000806040838503121561515b578182fd5b823561516681615bcb565b946020939093013593505050565b600080600060608486031215615188578081fd5b833561519381615bcb565b925060208401359150604084013561502a81615bcb565b60008060008060008060c087890312156151c2578384fd5b86356151cd81615bcb565b9550602087013594506040870135935060608701356151eb81615c12565b9598949750929560808101359460a0909101359350915050565b60008060208385031215615217578182fd5b823567ffffffffffffffff8082111561522e578384fd5b818501915085601f830112615241578384fd5b81358181111561524f578485fd5b8660208083028501011115615262578485fd5b60209290920196919550909350505050565b600060208284031215615285578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146117b4578182fd5b6000602082840312156152c5578081fd5b81356117b481615bee565b6000602082840312156152e1578081fd5b815167ffffffffffffffff8111156152f7578182fd5b8201601f81018413615307578182fd5b80516153156150e582615b7d565b818152856020838501011115615329578384fd5b61449a826020830160208601615b9f565b60006080828403121561534b578081fd5b50919050565b600060a0828403121561534b578081fd5b600060c0828403121561534b578081fd5b60008183036060811215615385578182fd5b6040805181810167ffffffffffffffff82821081831117156153a357fe5b818452838512156153b2578586fd5b60808301945081851081861117156153c657fe5b509282528435926153d684615bcb565b9283526020850135926153e884615bcb565b8360608301528082525081850135925061540183615bcb565b6020810192909252509392505050565b6000610140828403121561534b578081fd5b600060208284031215615434578081fd5b81356117b481615bfd565b60008060408385031215615451578182fd5b825161545c81615bfd565b6020840151909250614fe081615bfd565b60008060008060008060c08789031215615485578384fd5b865161549081615bfd565b602088015190965063ffffffff811681146154a9578485fd5b80955050604087015193506060870151925060808701516154c981615bfd565b60a08801519092506154da81615bfd565b809150509295509295509295565b600080600080600080600080610100898b031215615504578586fd5b885161550f81615bcb565b60208a015190985061552081615bee565b965061552e60408a01614f85565b955061553c60608a01614f85565b945061554a60808a01614f85565b935060a089015161555a81615c12565b60c08a015190935061556b81615c12565b60e08a015190925061557c81615be0565b809150509295985092959890939650565b60006020828403121561559e578081fd5b5035919050565b600080604083850312156155b7578182fd5b823591506020830135614fe081615bcb565b600080604083850312156155db578182fd5b505080516020909101519092909150565b60008060008060608587031215615601578182fd5b8435935060208501359250604085013567ffffffffffffffff80821115615626578384fd5b818701915087601f830112615639578384fd5b813581811115615647578485fd5b886020828501011115615658578485fd5b95989497505060200194505050565b60008060006060848603121561567b578081fd5b8351925060208401519150604084015161502a81615bfd565b600081518084526156ac816020860160208601615b9f565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b60006001600160a01b0380891683528088166020840152508560020b60408301528460020b60608301526001600160801b038416608083015260c060a083015261573160c0830184615694565b98975050505050505050565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b6001600160a01b039390931683526001600160801b03918216602084015216604082015260600190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015615815577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452615803858351615694565b945092850192908501906001016157c9565b5092979650505050505050565b901515815260200190565b90815260200190565b6001600160a01b03929092168252602082015260400190565b600293840b81529190920b60208201526001600160801b03909116604082015260600190565b6000602082526111766020830184615694565b6020808252600c908201527f4e6f7420617070726f7665640000000000000000000000000000000000000000604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f507269636520736c69707061676520636865636b000000000000000000000000604082015260600190565b60208082526010908201527f496e76616c696420746f6b656e20494400000000000000000000000000000000604082015260600190565b6020808252600b908201527f4e6f7420636c6561726564000000000000000000000000000000000000000000604082015260600190565b815180516001600160a01b039081168352602091820151811682840152920151909116604082015260600190565b6001600160801b039586168152939094166020840152604083019190915260608201526001600160a01b03909116608082015260a00190565b6001600160801b039390931683526020830191909152604082015260600190565b9384526001600160801b039290921660208401526040830152606082015260800190565b918252602082015260400190565b6bffffffffffffffffffffffff9b909b168b526001600160a01b03998a1660208c015297891660408b0152959097166060890152600293840b60808901529190920b60a08701526001600160801b0391821660c087015260e08601526101008501939093528216610120840152166101408201526101600190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615b2a578283fd5b83018035915067ffffffffffffffff821115615b44578283fd5b602001915036819003821315613c0d57600080fd5b60405181810167ffffffffffffffff81118282101715615b7557fe5b604052919050565b600067ffffffffffffffff821115615b9157fe5b50601f01601f191660200190565b60005b83811015615bba578181015183820152602001615ba2565b838111156129aa5750506000910152565b6001600160a01b0381168114614f6957600080fd5b8015158114614f6957600080fd5b8060020b8114614f6957600080fd5b6001600160801b0381168114614f6957600080fd5b60ff81168114614f6957600080fdfe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732315065726d69743a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e7366657220746f20746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a164736f6c6343000706000a000000000000000000000000c5bfa92f27df36d268422ee314a1387bb5ffb06a00000000000000000000000075cb093e4d61d2a2e65d8e0bbb01de8d89b53481000000000000000000000000ec2ca9ef8c0c866d301fa527eff5686d6a4a927400000000000000000000000043aa9b2ed25f972fd8d44fdfb77a4a514eab4d71