{
  "contractName": "SecurityTokenV2",
  "abi": [
    {
      "constant": false,
      "inputs": [],
      "name": "freezeTransfers",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "investorListed",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_moduleType",
          "type": "uint8"
        },
        {
          "name": "_moduleIndex",
          "type": "uint8"
        }
      ],
      "name": "removeModule",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "finishMintingSTO",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_granularity",
          "type": "uint256"
        }
      ],
      "name": "changeGranularity",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "finishedSTOMinting",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "name": "success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "tokenBurner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "tickerRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "unfreezeTransfers",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "securityTokenVersion",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "investors",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_investor",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "name": "success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_moduleType",
          "type": "uint8"
        },
        {
          "name": "_moduleIndex",
          "type": "uint256"
        }
      ],
      "name": "getModule",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_investors",
          "type": "address[]"
        },
        {
          "name": "_amounts",
          "type": "uint256[]"
        }
      ],
      "name": "mintMulti",
      "outputs": [
        {
          "name": "success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_investor",
          "type": "address"
        },
        {
          "name": "_checkpointId",
          "type": "uint256"
        }
      ],
      "name": "balanceOfAt",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "currentCheckpointId",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "granularity",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "MAX_MODULES",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_moduleType",
          "type": "uint8"
        },
        {
          "name": "_moduleIndex",
          "type": "uint8"
        },
        {
          "name": "_budget",
          "type": "uint256"
        }
      ],
      "name": "changeModuleBudget",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "freeze",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "STO_KEY",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseApproval",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "polyToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint8"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "modules",
      "outputs": [
        {
          "name": "name",
          "type": "bytes32"
        },
        {
          "name": "moduleAddress",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newTokenDetails",
          "type": "string"
        }
      ],
      "name": "updateTokenDetails",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "polymathRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "checkpointTotalSupply",
      "outputs": [
        {
          "name": "checkpointId",
          "type": "uint256"
        },
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_delegate",
          "type": "address"
        },
        {
          "name": "_module",
          "type": "address"
        },
        {
          "name": "_perm",
          "type": "bytes32"
        }
      ],
      "name": "checkPermission",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "TRANSFERMANAGER_KEY",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_checkpointId",
          "type": "uint256"
        }
      ],
      "name": "totalSupplyAt",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "verifyTransfer",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "finishedIssuerMinting",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_moduleType",
          "type": "uint8"
        },
        {
          "name": "_name",
          "type": "bytes32"
        }
      ],
      "name": "getModuleByName",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "finishMintingIssuer",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "PERMISSIONMANAGER_KEY",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "name": "success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_tokenBurner",
          "type": "address"
        }
      ],
      "name": "setTokenBurner",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "moduleRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "CHECKPOINT_KEY",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_start",
          "type": "uint256"
        },
        {
          "name": "_iters",
          "type": "uint256"
        }
      ],
      "name": "pruneInvestors",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "securityTokenRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "tokenDetails",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseApproval",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "investorCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        },
        {
          "name": "_spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInvestorsLength",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "updateFromRegistry",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_moduleFactory",
          "type": "address"
        },
        {
          "name": "_data",
          "type": "bytes"
        },
        {
          "name": "_maxCost",
          "type": "uint256"
        },
        {
          "name": "_budget",
          "type": "uint256"
        }
      ],
      "name": "addModule",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "withdrawPoly",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "checkpointBalances",
      "outputs": [
        {
          "name": "checkpointId",
          "type": "uint256"
        },
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "createCheckpoint",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_name",
          "type": "string"
        },
        {
          "name": "_symbol",
          "type": "string"
        },
        {
          "name": "_decimals",
          "type": "uint8"
        },
        {
          "name": "_granularity",
          "type": "uint256"
        },
        {
          "name": "_tokenDetails",
          "type": "string"
        },
        {
          "name": "_securityTokenRegistry",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_type",
          "type": "uint8"
        },
        {
          "indexed": false,
          "name": "_name",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_moduleFactory",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_module",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_moduleCost",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_budget",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "LogModuleAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_oldDetails",
          "type": "string"
        },
        {
          "indexed": false,
          "name": "_newDetails",
          "type": "string"
        }
      ],
      "name": "LogUpdateTokenDetails",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_oldGranularity",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_newGranularity",
          "type": "uint256"
        }
      ],
      "name": "LogGranularityChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_type",
          "type": "uint8"
        },
        {
          "indexed": false,
          "name": "_module",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "LogModuleRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_moduleType",
          "type": "uint8"
        },
        {
          "indexed": false,
          "name": "_module",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_budget",
          "type": "uint256"
        }
      ],
      "name": "LogModuleBudgetChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_freeze",
          "type": "bool"
        },
        {
          "indexed": false,
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "LogFreezeTransfers",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_checkpointId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "LogCheckpointCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "LogFinishMintingIssuer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "LogFinishMintingSTO",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_oldAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_newAddress",
          "type": "address"
        }
      ],
      "name": "LogChangeSTRAddress",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipRenounced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Minted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_burner",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "Burnt",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    }
  ],
  "bytecode": "0x6080604052600c805460ff191690556011805460a060020a60ff02191690556014805461ffff191690553480156200003657600080fd5b5060405162004ef838038062004ef88339810160409081528151602080840151928401516060850151608086015160a087015194870180519097968701969395929491909301928791879187918791879187918291889188918891620000a3916003919086019062000648565b508151620000b990600490602085019062000648565b506005805460ff90921660ff19909216919091179055505060078054600160a060020a03191633179055600160a060020a0381161515620000f957600080fd5b600c8054600160a060020a039092166101000261010060a860020a031990921691909117905562000132640100000000620002b9810204565b81516200014790600690602085019062000648565b5050506008555050604080517f7472616e7366657228616464726573732c75696e743235362900000000000000815281519081900360190181207fffffffff00000000000000000000000000000000000000000000000000000000908116600090815260156020818152858320805460ff1990811660019081179092557f7472616e7366657246726f6d28616464726573732c616464726573732c75696e87527f74323536290000000000000000000000000000000000000000000000000000008388015287519687900360250187208616855283835287852080548216831790557f6d696e7428616464726573732c75696e743235362900000000000000000000008752875196879003840187208616855283835287852080548216831790557f6275726e2875696e7432353629000000000000000000000000000000000000008752875196879003600d01909620909416835252929092208054909116909117905550620006ed95505050505050565b600754600160a060020a03163314620002d157600080fd5b600c54604080517fbf40fac1000000000000000000000000000000000000000000000000000000008152602060048201819052600e60248301527f4d6f64756c65526567697374727900000000000000000000000000000000000060448301529151610100909304600160a060020a03169263bf40fac1926064808401939192918290030181600087803b1580156200036957600080fd5b505af11580156200037e573d6000803e3d6000fd5b505050506040513d60208110156200039557600080fd5b5051600d8054600160a060020a031916600160a060020a03928316179055600c54604080517fbf40fac1000000000000000000000000000000000000000000000000000000008152602060048201819052601560248301527f5365637572697479546f6b656e52656769737472790000000000000000000000604483015291516101009093049093169263bf40fac192606480830193928290030181600087803b1580156200044357600080fd5b505af115801562000458573d6000803e3d6000fd5b505050506040513d60208110156200046f57600080fd5b5051600e8054600160a060020a031916600160a060020a03928316178155600c54604080517fbf40fac100000000000000000000000000000000000000000000000000000000815260206004820181905260248201949094527f5469636b65725265676973747279000000000000000000000000000000000000604482015290516101009092049093169263bf40fac19260648083019391928290030181600087803b1580156200051f57600080fd5b505af115801562000534573d6000803e3d6000fd5b505050506040513d60208110156200054b57600080fd5b5051600f8054600160a060020a031916600160a060020a03928316179055600c54604080517fbf40fac1000000000000000000000000000000000000000000000000000000008152602060048201819052600960248301527f506f6c79546f6b656e0000000000000000000000000000000000000000000000604483015291516101009093049093169263bf40fac192606480830193928290030181600087803b158015620005f957600080fd5b505af11580156200060e573d6000803e3d6000fd5b505050506040513d60208110156200062557600080fd5b505160108054600160a060020a031916600160a060020a03909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200068b57805160ff1916838001178555620006bb565b82800160010185558215620006bb579182015b82811115620006bb5782518255916020019190600101906200069e565b50620006c9929150620006cd565b5090565b620006ea91905b80821115620006c95760008155600101620006d4565b90565b6147fb80620006fd6000396000f3006080604052600436106102c65763ffffffff60e060020a6000350416630150246081146102cb57806306fdde03146102e2578063095ea7b31461036c5780630c72a835146103a457806318160ddd146103c55780631b2ae899146103ec5780631bc125f31461040d578063210a8d0e14610422578063219371921461043a57806323b872dd1461044f5780632996f972146104795780632a858126146104aa578063313ce567146104bf57806331c420d4146104ea5780633876e6d3146104ff5780633feb5f2b1461051457806340c10f191461052c57806342966c681461055057806346b65ffd1461056857806346e4959d146105a75780634ee2cd7e146106355780635488cc8014610659578063556f0dc71461066e5780635f1e8c1b146106835780635fcc62771461069857806362a5af3b146106bc5780636604ca6b146106d157806366188463146106e65780636faa22a51461070a57806370a082311461071f578063715018a614610740578063729d20e21461075557806373826a931461077357806377282b70146107cc5780637e8937d9146107e15780638658b8b9146108125780638da5cb5b1461083c57806391415ce91461085157806395d89b4114610866578063981b24d01461087b5780639a4b1d5c146108935780639c3fe721146108bd5780639f45b45c146108d2578063a3f7e26d146108f0578063a8ef4b6614610905578063a9059cbb1461091a578063b0af768b1461093e578063b95459e41461095f578063bcddd64e14610974578063c5bac42114610989578063ce4dbdff146109a4578063d6abe110146109b9578063d73dd623146109ce578063d7e64c00146109f2578063dd62ed3e14610a07578063e3cc65e214610a2e578063f2fde38b14610a43578063f433262f14610a64578063f5efbd2d14610a79578063f8a4cc3314610aac578063fbaa401914610ac4578063ff0b9c9014610ae8575b600080fd5b3480156102d757600080fd5b506102e0610afd565b005b3480156102ee57600080fd5b506102f7610b97565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610331578181015183820152602001610319565b50505050905090810190601f16801561035e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561037857600080fd5b50610390600160a060020a0360043516602435610c25565b604080519115158252519081900360200190f35b3480156103b057600080fd5b50610390600160a060020a0360043516610c8b565b3480156103d157600080fd5b506103da610ca0565b60408051918252519081900360200190f35b3480156103f857600080fd5b506102e060ff60043581169060243516610ca7565b34801561041957600080fd5b506102e0610f47565b34801561042e57600080fd5b506102e0600435610fa2565b34801561044657600080fd5b50610390611052565b34801561045b57600080fd5b50610390600160a060020a0360043581169060243516604435611060565b34801561048557600080fd5b5061048e6110ee565b60408051600160a060020a039092168252519081900360200190f35b3480156104b657600080fd5b5061048e6110fd565b3480156104cb57600080fd5b506104d461110c565b6040805160ff9092168252519081900360200190f35b3480156104f657600080fd5b506102e0611115565b34801561050b57600080fd5b506103da6111ab565b34801561052057600080fd5b5061048e6004356111cf565b34801561053857600080fd5b50610390600160a060020a03600435166024356111f7565b34801561055c57600080fd5b506102e0600435611736565b34801561057457600080fd5b5061058660ff60043516602435611afc565b60408051928352600160a060020a0390911660208301528051918290030190f35b3480156105b357600080fd5b506040805160206004803580820135838102808601850190965280855261039095369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750611b9a9650505050505050565b34801561064157600080fd5b506103da600160a060020a0360043516602435611e9d565b34801561066557600080fd5b506103da611ecf565b34801561067a57600080fd5b506103da611ed5565b34801561068f57600080fd5b506104d4611edb565b3480156106a457600080fd5b506102e060ff60043581169060243516604435611ee0565b3480156106c857600080fd5b506103906123d2565b3480156106dd57600080fd5b506104d46123e2565b3480156106f257600080fd5b50610390600160a060020a03600435166024356123e7565b34801561071657600080fd5b5061048e6124d7565b34801561072b57600080fd5b506103da600160a060020a03600435166124e6565b34801561074c57600080fd5b506102e0612501565b34801561076157600080fd5b5061058660ff60043516602435612562565b34801561077f57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102e09436949293602493928401919081908401838280828437509497506125a69650505050505050565b3480156107d857600080fd5b5061048e6126e9565b3480156107ed57600080fd5b506107f96004356126fd565b6040805192835260208301919091528051918290030190f35b34801561081e57600080fd5b50610390600160a060020a0360043581169060243516604435612729565b34801561084857600080fd5b5061048e6128b0565b34801561085d57600080fd5b506104d46128bf565b34801561087257600080fd5b506102f76128c4565b34801561088757600080fd5b506103da60043561291f565b34801561089f57600080fd5b50610390600160a060020a0360043581169060243516604435612935565b3480156108c957600080fd5b50610390612c81565b3480156108de57600080fd5b5061058660ff60043516602435612c8a565b3480156108fc57600080fd5b506102e0612d8a565b34801561091157600080fd5b506104d4612de3565b34801561092657600080fd5b50610390600160a060020a0360043516602435612de8565b34801561094a57600080fd5b506102e0600160a060020a0360043516612e74565b34801561096b57600080fd5b5061048e612ead565b34801561098057600080fd5b506104d4612ebc565b34801561099557600080fd5b506102e0600435602435612ec1565b3480156109b057600080fd5b5061048e613006565b3480156109c557600080fd5b506102f7613015565b3480156109da57600080fd5b50610390600160a060020a0360043516602435613070565b3480156109fe57600080fd5b506103da613109565b348015610a1357600080fd5b506103da600160a060020a036004358116906024351661310f565b348015610a3a57600080fd5b506103da61313a565b348015610a4f57600080fd5b506102e0600160a060020a0360043516613140565b348015610a7057600080fd5b506102e0613163565b348015610a8557600080fd5b506102e060048035600160a060020a0316906024803590810191013560443560643561348d565b348015610ab857600080fd5b506102e0600435613510565b348015610ad057600080fd5b506107f9600160a060020a036004351660243561361b565b348015610af457600080fd5b506103da613656565b600754600160a060020a03163314610b1457600080fd5b60115460a060020a900460ff1615610b2b57600080fd5b6011805474ff0000000000000000000000000000000000000000191660a060020a90811791829055604080519190920460ff161515815242602082015281517fd057913b88ba41d6281d1ee94831a8a6166afd6b478ea9babb2c02b413f172b3929181900390910190a1565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c1d5780601f10610bf257610100808354040283529160200191610c1d565b820191906000526020600020905b815481529060010190602001808311610c0057829003601f168201915b505050505081565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60176020526000908152604090205460ff1681565b6001545b90565b600754600160a060020a03163314610cbe57600080fd5b60ff80831660009081526016602052604090205490821610610d50576040805160e560020a62461bcd02815260206004820152603960248201527f4d6f64756c6520696e64657820646f65736e277420657869737420617320706560448201527f72207468652063686f6f73656e206d6f64756c65207479706500000000000000606482015290519081900360840190fd5b60ff8083166000908152601660205260408120805491929091908416908110610d7557fe5b6000918252602090912060016002909202010154600160a060020a03161415610e0e576040805160e560020a62461bcd02815260206004820152602860248201527f4d6f64756c6520636f6e747261637420616464726573732073686f756c64206e60448201527f6f74206265203078000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60ff8083166000818152601660205260409020805491927fe69a96f148bcf365cf82241853ecbeb32c5b01500d98bf3d93ee870cd951162c92908516908110610e5357fe5b60009182526020918290206001600290920201015460408051600160a060020a039092168252429282019290925281519081900390910190a260ff8216600090815260166020526040902080546000198101908110610eae57fe5b9060005260206000209060020201601660008460ff1660ff1681526020019081526020016000208260ff16815481101515610ee557fe5b600091825260208083208454600290930201918255600193840154939091018054600160a060020a031916600160a060020a039094169390931790925560ff8416815260169091526040902080546000190190610f42908261467b565b505050565b600754600160a060020a03163314610f5e57600080fd5b6014805461ff0019166101001790556040805142815290517fc3f76bdabdaf2a3983623e5efddd4deb49a4acdca62642d61969164d2a4441259181900360200190a1565b600754600160a060020a03163314610fb957600080fd5b801515611010576040805160e560020a62461bcd02815260206004820152601860248201527f4772616e756c61726974792063616e206e6f7420626520300000000000000000604482015290519081900360640190fd5b600854604080519182526020820183905280517fd13c95c3e8cd875fc20a3da70637bcd9e053e0414035532577769470649507dc9281900390910190a1600855565b601454610100900460ff1681565b600061106d8484846138d3565b611078848484612935565b15156110bc576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614790833981519152604482015290519081900360640190fd5b6110c5846139fd565b6110ce836139fd565b6110d9848484613a27565b15156110e457600080fd5b5060019392505050565b601154600160a060020a031681565b600f54600160a060020a031681565b60055460ff1681565b600754600160a060020a0316331461112c57600080fd5b60115460a060020a900460ff16151561114457600080fd5b6011805474ff00000000000000000000000000000000000000001916908190556040805160a060020a90920460ff161515825242602083015280517fd057913b88ba41d6281d1ee94831a8a6166afd6b478ea9babb2c02b413f172b39281900390910190a1565b7f302e302e3200000000000000000000000000000000000000000000000000000081565b600b8054829081106111dd57fe5b600091825260209091200154600160a060020a0316905081565b60006003600182805b60ff808516600090815260166020526040902054908216101561126f578180611265575060ff808516600090815260166020526040902080543392841690811061124657fe5b6000918252602090912060016002909202010154600160a060020a0316145b9150600101611200565b82801561127a575081155b1561139d5760ff8416600314156113365760ff84166000908152601660205260409020541580156112b55750600754600160a060020a031633145b1515611331576040805160e560020a62461bcd02815260206004820152602d60248201527f53656e646572206973206e6f74206f776e6572206f722053544f206d6f64756c60448201527f6520697320617474616368656400000000000000000000000000000000000000606482015290519081900360840190fd5b611398565b600754600160a060020a03163314611398576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b61141a565b81151561141a576040805160e560020a62461bcd02815260206004820152602160248201527f53656e646572206973206e6f7420636f7272656374206d6f64756c652074797060448201527f6500000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b856008548181151561142857fe5b06156114a4576040805160e560020a62461bcd02815260206004820152603360248201527f556e61626c6520746f206d6f6469667920746f6b656e2062616c616e6365732060448201527f61742074686973206772616e756c617269747900000000000000000000000000606482015290519081900360840190fd5b600754600160a060020a03163314156115175760145460ff1615611512576040805160e560020a62461bcd02815260206004820152601e60248201527f4d696e74696e672069732066696e697368656420666f72204973737565720000604482015290519081900360640190fd5b611577565b601454610100900460ff1615611577576040805160e560020a62461bcd02815260206004820152601c60248201527f4d696e74696e672069732066696e697368656420666f722053544f7300000000604482015290519081900360640190fd5b600160a060020a03881615156115fd576040805160e560020a62461bcd02815260206004820152602160248201527f496e766573746f7220616464726573732073686f756c64206e6f74206265203060448201527f7800000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b611609600089896138d3565b61161560008989612935565b1515611659576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614790833981519152604482015290519081900360640190fd5b611662886139fd565b61166a613b8c565b60015461167d908863ffffffff613b9b16565b600155600160a060020a0388166000908152602081905260409020546116a9908863ffffffff613b9b16565b600160a060020a038916600081815260208181526040918290209390935580518a8152905191927f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe92918290030190a2604080518881529051600160a060020a038a16916000916000805160206147b08339815191529181900360200190a3506001979650505050505050565b806008548181151561174457fe5b06156117c0576040805160e560020a62461bcd02815260206004820152603360248201527f556e61626c6520746f206d6f6469667920746f6b656e2062616c616e6365732060448201527f61742074686973206772616e756c617269747900000000000000000000000000606482015290519081900360840190fd5b6117cc336000846138d3565b601154600160a060020a03161515611854576040805160e560020a62461bcd02815260206004820152602c60248201527f546f6b656e204275726e657220636f6e7472616374206164647265737320697360448201527f206e6f7420736574207965740000000000000000000000000000000000000000606482015290519081900360840190fd5b61186033600084612935565b15156118a4576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614790833981519152604482015290519081900360640190fd5b33600090815260208190526040902054821115611931576040805160e560020a62461bcd02815260206004820152603960248201527f56616c75652073686f756c64206e6f2062652067726561746572207468616e2060448201527f7468652062616c616e6365206f66206d73672e73656e64657200000000000000606482015290519081900360840190fd5b61193a336139fd565b611942613b8c565b33600090815260208190526040902054611962908363ffffffff613ba816565b336000818152602081815260408083209490945560115484517f9dc29fac0000000000000000000000000000000000000000000000000000000081526004810194909452602484018790529351600160a060020a0390941693639dc29fac93604480820194918390030190829087803b1580156119de57600080fd5b505af11580156119f2573d6000803e3d6000fd5b505050506040513d6020811015611a0857600080fd5b50511515611a86576040805160e560020a62461bcd02815260206004820152602560248201527f546f6b656e206275726e65722070726f63657373206973206e6f742076616c6960448201527f6461746564000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600154611a99908363ffffffff613ba816565b60015560408051838152905133917f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1919081900360200190a260408051838152905160009133916000805160206147b08339815191529181900360200190a35050565b60ff82166000908152601660205260408120548190811015611b8c5760ff84166000908152601660205260409020805484908110611b3657fe5b6000918252602080832060029092029091015460ff8716835260169091526040909120805485908110611b6557fe5b6000918252602090912060016002909202010154909250600160a060020a03169050611b93565b5060009050805b9250929050565b6000806003600182805b60ff8085166000908152601660205260409020549082161015611c13578180611c09575060ff8085166000908152601660205260409020805433928416908110611bea57fe5b6000918252602090912060016002909202010154600160a060020a0316145b9150600101611ba4565b828015611c1e575081155b15611d415760ff841660031415611cda5760ff8416600090815260166020526040902054158015611c595750600754600160a060020a031633145b1515611cd5576040805160e560020a62461bcd02815260206004820152602d60248201527f53656e646572206973206e6f74206f776e6572206f722053544f206d6f64756c60448201527f6520697320617474616368656400000000000000000000000000000000000000606482015290519081900360840190fd5b611d3c565b600754600160a060020a03163314611d3c576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b611dbe565b811515611dbe576040805160e560020a62461bcd02815260206004820152602160248201527f53656e646572206973206e6f7420636f7272656374206d6f64756c652074797060448201527f6500000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8651885114611e3d576040805160e560020a62461bcd02815260206004820152602560248201527f4d69732d6d6174636820696e20746865206c656e677468206f6620746865206160448201527f7272617973000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600094505b8751851015611e8f57611e838886815181101515611e5c57fe5b906020019060200201518887815181101515611e7457fe5b906020019060200201516111f7565b50600190940193611e42565b506001979650505050505050565b600160a060020a0382166000908152601260205260408120611ec89083611ec3866124e6565b613bba565b9392505050565b60095481565b60085481565b601481565b600754600090600160a060020a03163314611efa57600080fd5b60ff84161515611f54576040805160e560020a62461bcd02815260206004820152601a60248201527f4d6f64756c6520747970652063616e6e6f74206265207a65726f000000000000604482015290519081900360640190fd5b60ff80851660009081526016602052604090205490841610611fc0576040805160e560020a62461bcd02815260206004820152601760248201527f496e636f727272656374206d6f64756c6520696e646578000000000000000000604482015290519081900360640190fd5b60105460ff80861660009081526016602052604090208054600160a060020a039093169263dd62ed3e92309291908816908110611ff957fe5b60009182526020808320600160029093020191909101546040805160e060020a63ffffffff8816028152600160a060020a03958616600482015294909116602485015251604480850194929391928390030190829087803b15801561205d57600080fd5b505af1158015612071573d6000803e3d6000fd5b505050506040513d602081101561208757600080fd5b50519050808210156121f45760105460ff80861660009081526016602052604090208054600160a060020a039093169263661884639287169081106120c857fe5b6000918252602090912060016002909202010154600160a060020a03166120f5848663ffffffff613ba816565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561214757600080fd5b505af115801561215b573d6000803e3d6000fd5b505050506040513d602081101561217157600080fd5b505115156121ef576040805160e560020a62461bcd02815260206004820152602860248201527f496e73756666696369656e742062616c616e636520746f20646563726561736560448201527f417070726f76616c000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b612350565b60105460ff80861660009081526016602052604090208054600160a060020a039093169263d73dd62392871690811061222957fe5b6000918252602090912060016002909202010154600160a060020a0316612256858563ffffffff613ba816565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156122a857600080fd5b505af11580156122bc573d6000803e3d6000fd5b505050506040513d60208110156122d257600080fd5b50511515612350576040805160e560020a62461bcd02815260206004820152602860248201527f496e73756666696369656e742062616c616e636520746f20696e63726561736560448201527f417070726f76616c000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60ff8085166000818152601660205260409020805491927f56e65530d356ea53a7cecc9a37666884b4fe9f05a65df888abd3898548bc15f49290871690811061239557fe5b60009182526020918290206001600290920201015460408051600160a060020a03909216825291810186905281519081900390910190a250505050565b60115460a060020a900460ff1681565b600381565b336000908152600260209081526040808320600160a060020a03861684529091528120548083111561243c57336000908152600260209081526040808320600160a060020a0388168452909152812055612471565b61244c818463ffffffff613ba816565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b601054600160a060020a031681565b600160a060020a031660009081526020819052604090205490565b600754600160a060020a0316331461251857600080fd5b600754604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a260078054600160a060020a0319169055565b60166020528160005260406000208181548110151561257d57fe5b600091825260209091206002909102018054600190910154909250600160a060020a0316905082565b600754600160a060020a031633146125bd57600080fd5b6040805181815260068054600260001961010060018416150201909116049282018390527fcef6c04f6d4bada4c1a1fcbb22cadbe4d4fb609cea3788e920628a6186e587659290918491819060208201906060830190869080156126625780601f1061263757610100808354040283529160200191612662565b820191906000526020600020905b81548152906001019060200180831161264557829003601f168201915b5050838103825284518152845160209182019186019080838360005b8381101561269657818101518382015260200161267e565b50505050905090810190601f1680156126c35780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a180516126e59060069060208401906146a7565b5050565b600c546101009004600160a060020a031681565b601380548290811061270b57fe5b60009182526020909120600290910201805460019091015490915082565b6001600090815260166020527f4c4dc693d7db52f85fe052106f4b4b920e78e8ef37dee82878a60ab8585faf49548190151561276857600091506128a8565b5060005b600160005260166020527f4c4dc693d7db52f85fe052106f4b4b920e78e8ef37dee82878a60ab8585faf495460ff821610156128a857600160005260166020527f4c4dc693d7db52f85fe052106f4b4b920e78e8ef37dee82878a60ab8585faf49805460ff83169081106127dc57fe5b6000918252602080832060016002909302019190910154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152600160a060020a038a8116600483015289811660248301526044820189905291519190921693638658b8b993606480850194919392918390030190829087803b15801561286657600080fd5b505af115801561287a573d6000803e3d6000fd5b505050506040513d602081101561289057600080fd5b5051156128a057600191506128a8565b60010161276c565b509392505050565b600754600160a060020a031681565b600281565b6004805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c1d5780601f10610bf257610100808354040283529160200191610c1d565b600061292f601383611ec3610ca0565b92915050565b6000806000806000806000876008548181151561294e57fe5b06156129ca576040805160e560020a62461bcd02815260206004820152603360248201527f556e61626c6520746f206d6f6469667920746f6b656e2062616c616e6365732060448201527f61742074686973206772616e756c617269747900000000000000000000000000606482015290519081900360840190fd5b60115460a060020a900460ff161515612c6e576000965060156000612a1f6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750613d65945050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000016815260208101919091526040016000205460ff1615612a5f57600196505b600260005260166020527fcaff291fe014adc6b72a172705750b4cabe8f8667664d2924a166caab2885648541515612a9a5760019750612c73565b600095506000945060009350600092505b600260005260166020527fcaff291fe014adc6b72a172705750b4cabe8f8667664d2924a166caab28856485460ff84161015612c4c57600260005260166020527fcaff291fe014adc6b72a172705750b4cabe8f8667664d2924a166caab2885648805460ff8516908110612b1b57fe5b906000526020600020906002020160010160009054906101000a9004600160a060020a0316600160a060020a0316637915c9e08c8c8c8b6040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184600160a060020a0316600160a060020a0316815260200183815260200182151515158152602001945050505050602060405180830381600087803b158015612bc857600080fd5b505af1158015612bdc573d6000803e3d6000fd5b505050506040513d6020811015612bf257600080fd5b505191506000826003811115612c0457fe5b1415612c0f57600195505b6002826003811115612c1d57fe5b1415612c2857600194505b6003826003811115612c3657fe5b1415612c4157600193505b600190920191612aab565b83612c645785612c5c5784612c5f565b60005b612c67565b60015b9750612c73565b600097505b505050505050509392505050565b60145460ff1681565b60ff821660009081526016602052604081205481908190811015612d7a575060005b60ff8516600090815260166020526040902054811015612d7a5760ff85166000908152601660205260409020805485919083908110612ce757fe5b60009182526020909120600290910201541415612d725760ff85166000908152601660205260409020805482908110612d1c57fe5b6000918252602080832060029092029091015460ff8816835260169091526040909120805483908110612d4b57fe5b6000918252602090912060016002909202010154909350600160a060020a03169150612d82565b600101612cac565b600092508291505b509250929050565b600754600160a060020a03163314612da157600080fd5b6014805460ff191660011790556040805142815290517f10216e36c4b6dff3d74179d50b938f0f96afc610f073894ca04b4239299165679181900360200190a1565b600181565b6000612df53384846138d3565b612e00338484612935565b1515612e44576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614790833981519152604482015290519081900360640190fd5b612e4d336139fd565b612e56836139fd565b612e608383613de6565b1515612e6b57600080fd5b50600192915050565b600754600160a060020a03163314612e8b57600080fd5b60118054600160a060020a031916600160a060020a0392909216919091179055565b600d54600160a060020a031681565b600481565b600754600090600160a060020a03163314612edb57600080fd5b50815b612ef9612ef1848463ffffffff613b9b16565b600b54613eb5565b811015610f4257600b5481108015612f3a5750612f38600b82815481101515612f1e57fe5b600091825260209091200154600160a060020a03166124e6565b155b15612ffe57600060176000600b84815481101515612f5457fe5b600091825260208083209190910154600160a060020a031683528201929092526040019020805460ff1916911515919091179055600b80546000198101908110612f9a57fe5b600091825260209091200154600b8054600160a060020a039092169183908110612fc057fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600b805490612ffc906000198301614725565b505b600101612ede565b600e54600160a060020a031681565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c1d5780601f10610bf257610100808354040283529160200191610c1d565b336000908152600260209081526040808320600160a060020a03861684529091528120546130a4908363ffffffff613b9b16565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600a5481565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600b5490565b600754600160a060020a0316331461315757600080fd5b61316081613ecb565b50565b600754600160a060020a0316331461317a57600080fd5b600c546040805160e060020a63bf40fac1028152602060048201819052600e60248301527f4d6f64756c65526567697374727900000000000000000000000000000000000060448301529151610100909304600160a060020a03169263bf40fac1926064808401939192918290030181600087803b1580156131fb57600080fd5b505af115801561320f573d6000803e3d6000fd5b505050506040513d602081101561322557600080fd5b5051600d8054600160a060020a031916600160a060020a03928316179055600c546040805160e060020a63bf40fac1028152602060048201819052601560248301527f5365637572697479546f6b656e52656769737472790000000000000000000000604483015291516101009093049093169263bf40fac192606480830193928290030181600087803b1580156132bc57600080fd5b505af11580156132d0573d6000803e3d6000fd5b505050506040513d60208110156132e657600080fd5b5051600e8054600160a060020a031916600160a060020a03928316178155600c546040805160e060020a63bf40fac102815260206004820181905260248201949094527f5469636b65725265676973747279000000000000000000000000000000000000604482015290516101009092049093169263bf40fac19260648083019391928290030181600087803b15801561337f57600080fd5b505af1158015613393573d6000803e3d6000fd5b505050506040513d60208110156133a957600080fd5b5051600f8054600160a060020a031916600160a060020a03928316179055600c546040805160e060020a63bf40fac1028152602060048201819052600960248301527f506f6c79546f6b656e0000000000000000000000000000000000000000000000604483015291516101009093049093169263bf40fac192606480830193928290030181600087803b15801561344057600080fd5b505af1158015613454573d6000803e3d6000fd5b505050506040513d602081101561346a57600080fd5b505160108054600160a060020a031916600160a060020a03909216919091179055565b600754600160a060020a031633146134a457600080fd5b600c5460ff16156134b457600080fd5b600c805460ff19166001179055604080516020601f86018190048102820181019092528481526134ff9187919087908790819084018382808284378201915050505050508484613f3c565b5050600c805460ff19169055505050565b600754600160a060020a0316331461352757600080fd5b601054600754604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b15801561359957600080fd5b505af11580156135ad573d6000803e3d6000fd5b505050506040513d60208110156135c357600080fd5b50511515613160576040805160e560020a62461bcd02815260206004820152601560248201527f496e2d73756666696369656e742062616c616e63650000000000000000000000604482015290519081900360640190fd5b60126020528160005260406000208181548110151561363657fe5b600091825260209091206002909102018054600190910154909250905082565b60006004600182805b60ff80851660009081526016602052604090205490821610156136ce5781806136c4575060ff80851660009081526016602052604090208054339284169081106136a557fe5b6000918252602090912060016002909202010154600160a060020a0316145b915060010161365f565b8280156136d9575081155b156137fc5760ff8416600314156137955760ff84166000908152601660205260409020541580156137145750600754600160a060020a031633145b1515613790576040805160e560020a62461bcd02815260206004820152602d60248201527f53656e646572206973206e6f74206f776e6572206f722053544f206d6f64756c60448201527f6520697320617474616368656400000000000000000000000000000000000000606482015290519081900360840190fd5b6137f7565b600754600160a060020a031633146137f7576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b613879565b811515613879576040805160e560020a62461bcd02815260206004820152602160248201527f53656e646572206973206e6f7420636f7272656374206d6f64756c652074797060448201527f6500000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6009546000191161388957600080fd5b60098054600101908190556040805142815290517feb3befa36ea6638fc3379fe62edc59509b81aeca57cfbb0f444b1e72b8ac93fe9181900360200190a260095494505050505090565b8015806138f1575081600160a060020a031683600160a060020a0316145b156138fb57610f42565b613904826124e6565b1580156139195750600160a060020a03821615155b1561393657600a5461393290600163ffffffff613b9b16565b600a555b61393f836124e6565b81141561395e57600a5461395a90600163ffffffff613ba816565b600a555b600160a060020a03821660009081526017602052604090205460ff1615801561398f5750600160a060020a03821615155b15610f4257600b805460018181019092557f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9018054600160a060020a038516600160a060020a031990911681179091556000908152601760205260409020805460ff19169091179055505050565b600160a060020a038116600090815260126020526040902061316090613a22836124e6565b6145b7565b6000600160a060020a0383161515613a3e57600080fd5b600160a060020a038416600090815260208190526040902054821115613a6357600080fd5b600160a060020a0384166000908152600260209081526040808320338452909152902054821115613a9357600080fd5b600160a060020a038416600090815260208190526040902054613abc908363ffffffff613ba816565b600160a060020a038086166000908152602081905260408082209390935590851681522054613af1908363ffffffff613b9b16565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054613b33908363ffffffff613ba816565b600160a060020a03808616600081815260026020908152604080832033845282529182902094909455805186815290519287169391926000805160206147b0833981519152929181900390910190a35060019392505050565b613b996013613a22610ca0565b565b8181018281101561292f57fe5b600082821115613bb457fe5b50900390565b6000806000806009548611151515613bd157600080fd5b851515613be15760009350613d5b565b86541515613bf157849350613d5b565b85876000815481101515613c0157fe5b600091825260209091206002909102015410613c3f57866000815481101515613c2657fe5b9060005260206000209060020201600101549350613d5b565b8654869088906000198101908110613c5357fe5b9060005260206000209060020201600001541015613c7357849350613d5b565b8654869088906000198101908110613c8757fe5b9060005260206000209060020201600001541415613cb157865487906000198101908110613c2657fe5b8654600093506000190191505b82821115613d38576002828401049050858782815481101515613cdd57fe5b9060005260206000209060020201600001541415613cfd57809150613d38565b858782815481101515613d0c57fe5b9060005260206000209060020201600001541015613d2f57806001019250613d33565b8091505b613cbe565b8682815481101515613d4657fe5b90600052602060002090600202016001015493505b5050509392505050565b60008060006004845110613d7a576004613d7d565b83515b9150600090505b81811015613ddf5780600183030360080260020a8482815181101515613da657fe5b90602001015160f860020a900460f860020a0260f860020a9004028360e060020a90040160e060020a0292508080600101915050613d84565b5050919050565b6000600160a060020a0383161515613dfd57600080fd5b33600090815260208190526040902054821115613e1957600080fd5b33600090815260208190526040902054613e39908363ffffffff613ba816565b3360009081526020819052604080822092909255600160a060020a03851681522054613e6b908363ffffffff613b9b16565b600160a060020a038416600081815260208181526040918290209390935580518581529051919233926000805160206147b08339815191529281900390910190a350600192915050565b6000818310613ec45781611ec8565b5090919050565b600160a060020a0381161515613ee057600080fd5b600754604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360078054600160a060020a031916600160a060020a0392909216919091179055565b600d54604080517fdc659907000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483015291516000938493849384938493929092169163dc65990791602480820192869290919082900301818387803b158015613fae57600080fd5b505af1158015613fc2573d6000803e3d6000fd5b5050505088945084600160a060020a03166315dae03e6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561400757600080fd5b505af115801561401b573d6000803e3d6000fd5b505050506040513d602081101561403157600080fd5b505160ff81166000908152601660205260409020549094506014116140a0576040805160e560020a62461bcd02815260206004820152601f60248201527f4c696d6974206f66204d4158204d4f44554c4553206973207265616368656400604482015290519081900360640190fd5b84600160a060020a0316637e363ffa6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156140de57600080fd5b505af11580156140f2573d6000803e3d6000fd5b505050506040513d602081101561410857600080fd5b505192508683111561418a576040805160e560020a62461bcd02815260206004820152602e60248201527f4d617820436f737420697320616c77617973206265206772656174657220746860448201527f616e206d6f64756c6520636f7374000000000000000000000000000000000000606482015290519081900360840190fd5b601054604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a038c81166004830152602482018790529151919092169163095ea7b39160448083019260209291908290030181600087803b1580156141f957600080fd5b505af115801561420d573d6000803e3d6000fd5b505050506040513d602081101561422357600080fd5b505115156142a1576040805160e560020a62461bcd02815260206004820152602360248201527f4e6f742061626c6520746f20617070726f766520746865206d6f64756c65206360448201527f6f73740000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6040517e7743600000000000000000000000000000000000000000000000000000000081526020600482018181528a5160248401528a51600160a060020a0389169362774360938d939283926044019185019080838360005b838110156143125781810151838201526020016142fa565b50505050905090810190601f16801561433f5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561435e57600080fd5b505af1158015614372573d6000803e3d6000fd5b505050506040513d602081101561438857600080fd5b5051601054604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a038085166004830152602482018b9052915193955091169163095ea7b3916044808201926020929091908290030181600087803b1580156143fb57600080fd5b505af115801561440f573d6000803e3d6000fd5b505050506040513d602081101561442557600080fd5b5051151561447d576040805160e560020a62461bcd02815260206004820152601e60248201527f4e6f742061626c6520746f20617070726f766520746865206275646765740000604482015290519081900360640190fd5b84600160a060020a03166317d7de7c6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156144bb57600080fd5b505af11580156144cf573d6000803e3d6000fd5b505050506040513d60208110156144e557600080fd5b505160ff8516600081815260166020908152604080832081518083018352868152600160a060020a0389811682860181815284546001808201875595895297879020935160029098029093019687559151959092018054600160a060020a031916958316959095179094558151868152908f16928101929092528181019290925260608101879052608081018a90524260a0820152905192935090917fc6c63fb8912a7f464252e66132ad69604864e7520f1bcf0dd77c8d51d810a6519160c0908290030190a2505050505050505050565b60095415156145c5576126e5565b8154151561460c57604080518082019091526009548152602080820183815284546001818101875560008781529390932093516002909102909301928355519101556126e5565b60095482548390600019810190811061462157fe5b906000526020600020906002020160000154141561463e576126e5565b6040805180820190915260095481526020808201928352835460018082018655600095865291909420915160029094029091019283559051910155565b815481835581811115610f4257600202816002028360005260206000209182019101610f429190614749565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106146e857805160ff1916838001178555614715565b82800160010185558215614715579182015b828111156147155782518255916020019190600101906146fa565b50614721929150614775565b5090565b815481835581811115610f4257600083815260209020610f42918101908301614775565b610ca491905b808211156147215760008155600181018054600160a060020a031916905560020161474f565b610ca491905b80821115614721576000815560010161477b56005472616e73666572206973206e6f742076616c69640000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058202d6c06423946250bafbbba195307748c46429e3561f18300b8ff25f5b9aea3f20029",
  "deployedBytecode": "0x6080604052600436106102c65763ffffffff60e060020a6000350416630150246081146102cb57806306fdde03146102e2578063095ea7b31461036c5780630c72a835146103a457806318160ddd146103c55780631b2ae899146103ec5780631bc125f31461040d578063210a8d0e14610422578063219371921461043a57806323b872dd1461044f5780632996f972146104795780632a858126146104aa578063313ce567146104bf57806331c420d4146104ea5780633876e6d3146104ff5780633feb5f2b1461051457806340c10f191461052c57806342966c681461055057806346b65ffd1461056857806346e4959d146105a75780634ee2cd7e146106355780635488cc8014610659578063556f0dc71461066e5780635f1e8c1b146106835780635fcc62771461069857806362a5af3b146106bc5780636604ca6b146106d157806366188463146106e65780636faa22a51461070a57806370a082311461071f578063715018a614610740578063729d20e21461075557806373826a931461077357806377282b70146107cc5780637e8937d9146107e15780638658b8b9146108125780638da5cb5b1461083c57806391415ce91461085157806395d89b4114610866578063981b24d01461087b5780639a4b1d5c146108935780639c3fe721146108bd5780639f45b45c146108d2578063a3f7e26d146108f0578063a8ef4b6614610905578063a9059cbb1461091a578063b0af768b1461093e578063b95459e41461095f578063bcddd64e14610974578063c5bac42114610989578063ce4dbdff146109a4578063d6abe110146109b9578063d73dd623146109ce578063d7e64c00146109f2578063dd62ed3e14610a07578063e3cc65e214610a2e578063f2fde38b14610a43578063f433262f14610a64578063f5efbd2d14610a79578063f8a4cc3314610aac578063fbaa401914610ac4578063ff0b9c9014610ae8575b600080fd5b3480156102d757600080fd5b506102e0610afd565b005b3480156102ee57600080fd5b506102f7610b97565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610331578181015183820152602001610319565b50505050905090810190601f16801561035e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561037857600080fd5b50610390600160a060020a0360043516602435610c25565b604080519115158252519081900360200190f35b3480156103b057600080fd5b50610390600160a060020a0360043516610c8b565b3480156103d157600080fd5b506103da610ca0565b60408051918252519081900360200190f35b3480156103f857600080fd5b506102e060ff60043581169060243516610ca7565b34801561041957600080fd5b506102e0610f47565b34801561042e57600080fd5b506102e0600435610fa2565b34801561044657600080fd5b50610390611052565b34801561045b57600080fd5b50610390600160a060020a0360043581169060243516604435611060565b34801561048557600080fd5b5061048e6110ee565b60408051600160a060020a039092168252519081900360200190f35b3480156104b657600080fd5b5061048e6110fd565b3480156104cb57600080fd5b506104d461110c565b6040805160ff9092168252519081900360200190f35b3480156104f657600080fd5b506102e0611115565b34801561050b57600080fd5b506103da6111ab565b34801561052057600080fd5b5061048e6004356111cf565b34801561053857600080fd5b50610390600160a060020a03600435166024356111f7565b34801561055c57600080fd5b506102e0600435611736565b34801561057457600080fd5b5061058660ff60043516602435611afc565b60408051928352600160a060020a0390911660208301528051918290030190f35b3480156105b357600080fd5b506040805160206004803580820135838102808601850190965280855261039095369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750611b9a9650505050505050565b34801561064157600080fd5b506103da600160a060020a0360043516602435611e9d565b34801561066557600080fd5b506103da611ecf565b34801561067a57600080fd5b506103da611ed5565b34801561068f57600080fd5b506104d4611edb565b3480156106a457600080fd5b506102e060ff60043581169060243516604435611ee0565b3480156106c857600080fd5b506103906123d2565b3480156106dd57600080fd5b506104d46123e2565b3480156106f257600080fd5b50610390600160a060020a03600435166024356123e7565b34801561071657600080fd5b5061048e6124d7565b34801561072b57600080fd5b506103da600160a060020a03600435166124e6565b34801561074c57600080fd5b506102e0612501565b34801561076157600080fd5b5061058660ff60043516602435612562565b34801561077f57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102e09436949293602493928401919081908401838280828437509497506125a69650505050505050565b3480156107d857600080fd5b5061048e6126e9565b3480156107ed57600080fd5b506107f96004356126fd565b6040805192835260208301919091528051918290030190f35b34801561081e57600080fd5b50610390600160a060020a0360043581169060243516604435612729565b34801561084857600080fd5b5061048e6128b0565b34801561085d57600080fd5b506104d46128bf565b34801561087257600080fd5b506102f76128c4565b34801561088757600080fd5b506103da60043561291f565b34801561089f57600080fd5b50610390600160a060020a0360043581169060243516604435612935565b3480156108c957600080fd5b50610390612c81565b3480156108de57600080fd5b5061058660ff60043516602435612c8a565b3480156108fc57600080fd5b506102e0612d8a565b34801561091157600080fd5b506104d4612de3565b34801561092657600080fd5b50610390600160a060020a0360043516602435612de8565b34801561094a57600080fd5b506102e0600160a060020a0360043516612e74565b34801561096b57600080fd5b5061048e612ead565b34801561098057600080fd5b506104d4612ebc565b34801561099557600080fd5b506102e0600435602435612ec1565b3480156109b057600080fd5b5061048e613006565b3480156109c557600080fd5b506102f7613015565b3480156109da57600080fd5b50610390600160a060020a0360043516602435613070565b3480156109fe57600080fd5b506103da613109565b348015610a1357600080fd5b506103da600160a060020a036004358116906024351661310f565b348015610a3a57600080fd5b506103da61313a565b348015610a4f57600080fd5b506102e0600160a060020a0360043516613140565b348015610a7057600080fd5b506102e0613163565b348015610a8557600080fd5b506102e060048035600160a060020a0316906024803590810191013560443560643561348d565b348015610ab857600080fd5b506102e0600435613510565b348015610ad057600080fd5b506107f9600160a060020a036004351660243561361b565b348015610af457600080fd5b506103da613656565b600754600160a060020a03163314610b1457600080fd5b60115460a060020a900460ff1615610b2b57600080fd5b6011805474ff0000000000000000000000000000000000000000191660a060020a90811791829055604080519190920460ff161515815242602082015281517fd057913b88ba41d6281d1ee94831a8a6166afd6b478ea9babb2c02b413f172b3929181900390910190a1565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c1d5780601f10610bf257610100808354040283529160200191610c1d565b820191906000526020600020905b815481529060010190602001808311610c0057829003601f168201915b505050505081565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60176020526000908152604090205460ff1681565b6001545b90565b600754600160a060020a03163314610cbe57600080fd5b60ff80831660009081526016602052604090205490821610610d50576040805160e560020a62461bcd02815260206004820152603960248201527f4d6f64756c6520696e64657820646f65736e277420657869737420617320706560448201527f72207468652063686f6f73656e206d6f64756c65207479706500000000000000606482015290519081900360840190fd5b60ff8083166000908152601660205260408120805491929091908416908110610d7557fe5b6000918252602090912060016002909202010154600160a060020a03161415610e0e576040805160e560020a62461bcd02815260206004820152602860248201527f4d6f64756c6520636f6e747261637420616464726573732073686f756c64206e60448201527f6f74206265203078000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60ff8083166000818152601660205260409020805491927fe69a96f148bcf365cf82241853ecbeb32c5b01500d98bf3d93ee870cd951162c92908516908110610e5357fe5b60009182526020918290206001600290920201015460408051600160a060020a039092168252429282019290925281519081900390910190a260ff8216600090815260166020526040902080546000198101908110610eae57fe5b9060005260206000209060020201601660008460ff1660ff1681526020019081526020016000208260ff16815481101515610ee557fe5b600091825260208083208454600290930201918255600193840154939091018054600160a060020a031916600160a060020a039094169390931790925560ff8416815260169091526040902080546000190190610f42908261467b565b505050565b600754600160a060020a03163314610f5e57600080fd5b6014805461ff0019166101001790556040805142815290517fc3f76bdabdaf2a3983623e5efddd4deb49a4acdca62642d61969164d2a4441259181900360200190a1565b600754600160a060020a03163314610fb957600080fd5b801515611010576040805160e560020a62461bcd02815260206004820152601860248201527f4772616e756c61726974792063616e206e6f7420626520300000000000000000604482015290519081900360640190fd5b600854604080519182526020820183905280517fd13c95c3e8cd875fc20a3da70637bcd9e053e0414035532577769470649507dc9281900390910190a1600855565b601454610100900460ff1681565b600061106d8484846138d3565b611078848484612935565b15156110bc576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614790833981519152604482015290519081900360640190fd5b6110c5846139fd565b6110ce836139fd565b6110d9848484613a27565b15156110e457600080fd5b5060019392505050565b601154600160a060020a031681565b600f54600160a060020a031681565b60055460ff1681565b600754600160a060020a0316331461112c57600080fd5b60115460a060020a900460ff16151561114457600080fd5b6011805474ff00000000000000000000000000000000000000001916908190556040805160a060020a90920460ff161515825242602083015280517fd057913b88ba41d6281d1ee94831a8a6166afd6b478ea9babb2c02b413f172b39281900390910190a1565b7f302e302e3200000000000000000000000000000000000000000000000000000081565b600b8054829081106111dd57fe5b600091825260209091200154600160a060020a0316905081565b60006003600182805b60ff808516600090815260166020526040902054908216101561126f578180611265575060ff808516600090815260166020526040902080543392841690811061124657fe5b6000918252602090912060016002909202010154600160a060020a0316145b9150600101611200565b82801561127a575081155b1561139d5760ff8416600314156113365760ff84166000908152601660205260409020541580156112b55750600754600160a060020a031633145b1515611331576040805160e560020a62461bcd02815260206004820152602d60248201527f53656e646572206973206e6f74206f776e6572206f722053544f206d6f64756c60448201527f6520697320617474616368656400000000000000000000000000000000000000606482015290519081900360840190fd5b611398565b600754600160a060020a03163314611398576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b61141a565b81151561141a576040805160e560020a62461bcd02815260206004820152602160248201527f53656e646572206973206e6f7420636f7272656374206d6f64756c652074797060448201527f6500000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b856008548181151561142857fe5b06156114a4576040805160e560020a62461bcd02815260206004820152603360248201527f556e61626c6520746f206d6f6469667920746f6b656e2062616c616e6365732060448201527f61742074686973206772616e756c617269747900000000000000000000000000606482015290519081900360840190fd5b600754600160a060020a03163314156115175760145460ff1615611512576040805160e560020a62461bcd02815260206004820152601e60248201527f4d696e74696e672069732066696e697368656420666f72204973737565720000604482015290519081900360640190fd5b611577565b601454610100900460ff1615611577576040805160e560020a62461bcd02815260206004820152601c60248201527f4d696e74696e672069732066696e697368656420666f722053544f7300000000604482015290519081900360640190fd5b600160a060020a03881615156115fd576040805160e560020a62461bcd02815260206004820152602160248201527f496e766573746f7220616464726573732073686f756c64206e6f74206265203060448201527f7800000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b611609600089896138d3565b61161560008989612935565b1515611659576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614790833981519152604482015290519081900360640190fd5b611662886139fd565b61166a613b8c565b60015461167d908863ffffffff613b9b16565b600155600160a060020a0388166000908152602081905260409020546116a9908863ffffffff613b9b16565b600160a060020a038916600081815260208181526040918290209390935580518a8152905191927f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe92918290030190a2604080518881529051600160a060020a038a16916000916000805160206147b08339815191529181900360200190a3506001979650505050505050565b806008548181151561174457fe5b06156117c0576040805160e560020a62461bcd02815260206004820152603360248201527f556e61626c6520746f206d6f6469667920746f6b656e2062616c616e6365732060448201527f61742074686973206772616e756c617269747900000000000000000000000000606482015290519081900360840190fd5b6117cc336000846138d3565b601154600160a060020a03161515611854576040805160e560020a62461bcd02815260206004820152602c60248201527f546f6b656e204275726e657220636f6e7472616374206164647265737320697360448201527f206e6f7420736574207965740000000000000000000000000000000000000000606482015290519081900360840190fd5b61186033600084612935565b15156118a4576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614790833981519152604482015290519081900360640190fd5b33600090815260208190526040902054821115611931576040805160e560020a62461bcd02815260206004820152603960248201527f56616c75652073686f756c64206e6f2062652067726561746572207468616e2060448201527f7468652062616c616e6365206f66206d73672e73656e64657200000000000000606482015290519081900360840190fd5b61193a336139fd565b611942613b8c565b33600090815260208190526040902054611962908363ffffffff613ba816565b336000818152602081815260408083209490945560115484517f9dc29fac0000000000000000000000000000000000000000000000000000000081526004810194909452602484018790529351600160a060020a0390941693639dc29fac93604480820194918390030190829087803b1580156119de57600080fd5b505af11580156119f2573d6000803e3d6000fd5b505050506040513d6020811015611a0857600080fd5b50511515611a86576040805160e560020a62461bcd02815260206004820152602560248201527f546f6b656e206275726e65722070726f63657373206973206e6f742076616c6960448201527f6461746564000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600154611a99908363ffffffff613ba816565b60015560408051838152905133917f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1919081900360200190a260408051838152905160009133916000805160206147b08339815191529181900360200190a35050565b60ff82166000908152601660205260408120548190811015611b8c5760ff84166000908152601660205260409020805484908110611b3657fe5b6000918252602080832060029092029091015460ff8716835260169091526040909120805485908110611b6557fe5b6000918252602090912060016002909202010154909250600160a060020a03169050611b93565b5060009050805b9250929050565b6000806003600182805b60ff8085166000908152601660205260409020549082161015611c13578180611c09575060ff8085166000908152601660205260409020805433928416908110611bea57fe5b6000918252602090912060016002909202010154600160a060020a0316145b9150600101611ba4565b828015611c1e575081155b15611d415760ff841660031415611cda5760ff8416600090815260166020526040902054158015611c595750600754600160a060020a031633145b1515611cd5576040805160e560020a62461bcd02815260206004820152602d60248201527f53656e646572206973206e6f74206f776e6572206f722053544f206d6f64756c60448201527f6520697320617474616368656400000000000000000000000000000000000000606482015290519081900360840190fd5b611d3c565b600754600160a060020a03163314611d3c576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b611dbe565b811515611dbe576040805160e560020a62461bcd02815260206004820152602160248201527f53656e646572206973206e6f7420636f7272656374206d6f64756c652074797060448201527f6500000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8651885114611e3d576040805160e560020a62461bcd02815260206004820152602560248201527f4d69732d6d6174636820696e20746865206c656e677468206f6620746865206160448201527f7272617973000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600094505b8751851015611e8f57611e838886815181101515611e5c57fe5b906020019060200201518887815181101515611e7457fe5b906020019060200201516111f7565b50600190940193611e42565b506001979650505050505050565b600160a060020a0382166000908152601260205260408120611ec89083611ec3866124e6565b613bba565b9392505050565b60095481565b60085481565b601481565b600754600090600160a060020a03163314611efa57600080fd5b60ff84161515611f54576040805160e560020a62461bcd02815260206004820152601a60248201527f4d6f64756c6520747970652063616e6e6f74206265207a65726f000000000000604482015290519081900360640190fd5b60ff80851660009081526016602052604090205490841610611fc0576040805160e560020a62461bcd02815260206004820152601760248201527f496e636f727272656374206d6f64756c6520696e646578000000000000000000604482015290519081900360640190fd5b60105460ff80861660009081526016602052604090208054600160a060020a039093169263dd62ed3e92309291908816908110611ff957fe5b60009182526020808320600160029093020191909101546040805160e060020a63ffffffff8816028152600160a060020a03958616600482015294909116602485015251604480850194929391928390030190829087803b15801561205d57600080fd5b505af1158015612071573d6000803e3d6000fd5b505050506040513d602081101561208757600080fd5b50519050808210156121f45760105460ff80861660009081526016602052604090208054600160a060020a039093169263661884639287169081106120c857fe5b6000918252602090912060016002909202010154600160a060020a03166120f5848663ffffffff613ba816565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561214757600080fd5b505af115801561215b573d6000803e3d6000fd5b505050506040513d602081101561217157600080fd5b505115156121ef576040805160e560020a62461bcd02815260206004820152602860248201527f496e73756666696369656e742062616c616e636520746f20646563726561736560448201527f417070726f76616c000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b612350565b60105460ff80861660009081526016602052604090208054600160a060020a039093169263d73dd62392871690811061222957fe5b6000918252602090912060016002909202010154600160a060020a0316612256858563ffffffff613ba816565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156122a857600080fd5b505af11580156122bc573d6000803e3d6000fd5b505050506040513d60208110156122d257600080fd5b50511515612350576040805160e560020a62461bcd02815260206004820152602860248201527f496e73756666696369656e742062616c616e636520746f20696e63726561736560448201527f417070726f76616c000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60ff8085166000818152601660205260409020805491927f56e65530d356ea53a7cecc9a37666884b4fe9f05a65df888abd3898548bc15f49290871690811061239557fe5b60009182526020918290206001600290920201015460408051600160a060020a03909216825291810186905281519081900390910190a250505050565b60115460a060020a900460ff1681565b600381565b336000908152600260209081526040808320600160a060020a03861684529091528120548083111561243c57336000908152600260209081526040808320600160a060020a0388168452909152812055612471565b61244c818463ffffffff613ba816565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b601054600160a060020a031681565b600160a060020a031660009081526020819052604090205490565b600754600160a060020a0316331461251857600080fd5b600754604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a260078054600160a060020a0319169055565b60166020528160005260406000208181548110151561257d57fe5b600091825260209091206002909102018054600190910154909250600160a060020a0316905082565b600754600160a060020a031633146125bd57600080fd5b6040805181815260068054600260001961010060018416150201909116049282018390527fcef6c04f6d4bada4c1a1fcbb22cadbe4d4fb609cea3788e920628a6186e587659290918491819060208201906060830190869080156126625780601f1061263757610100808354040283529160200191612662565b820191906000526020600020905b81548152906001019060200180831161264557829003601f168201915b5050838103825284518152845160209182019186019080838360005b8381101561269657818101518382015260200161267e565b50505050905090810190601f1680156126c35780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a180516126e59060069060208401906146a7565b5050565b600c546101009004600160a060020a031681565b601380548290811061270b57fe5b60009182526020909120600290910201805460019091015490915082565b6001600090815260166020527f4c4dc693d7db52f85fe052106f4b4b920e78e8ef37dee82878a60ab8585faf49548190151561276857600091506128a8565b5060005b600160005260166020527f4c4dc693d7db52f85fe052106f4b4b920e78e8ef37dee82878a60ab8585faf495460ff821610156128a857600160005260166020527f4c4dc693d7db52f85fe052106f4b4b920e78e8ef37dee82878a60ab8585faf49805460ff83169081106127dc57fe5b6000918252602080832060016002909302019190910154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152600160a060020a038a8116600483015289811660248301526044820189905291519190921693638658b8b993606480850194919392918390030190829087803b15801561286657600080fd5b505af115801561287a573d6000803e3d6000fd5b505050506040513d602081101561289057600080fd5b5051156128a057600191506128a8565b60010161276c565b509392505050565b600754600160a060020a031681565b600281565b6004805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c1d5780601f10610bf257610100808354040283529160200191610c1d565b600061292f601383611ec3610ca0565b92915050565b6000806000806000806000876008548181151561294e57fe5b06156129ca576040805160e560020a62461bcd02815260206004820152603360248201527f556e61626c6520746f206d6f6469667920746f6b656e2062616c616e6365732060448201527f61742074686973206772616e756c617269747900000000000000000000000000606482015290519081900360840190fd5b60115460a060020a900460ff161515612c6e576000965060156000612a1f6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750613d65945050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000016815260208101919091526040016000205460ff1615612a5f57600196505b600260005260166020527fcaff291fe014adc6b72a172705750b4cabe8f8667664d2924a166caab2885648541515612a9a5760019750612c73565b600095506000945060009350600092505b600260005260166020527fcaff291fe014adc6b72a172705750b4cabe8f8667664d2924a166caab28856485460ff84161015612c4c57600260005260166020527fcaff291fe014adc6b72a172705750b4cabe8f8667664d2924a166caab2885648805460ff8516908110612b1b57fe5b906000526020600020906002020160010160009054906101000a9004600160a060020a0316600160a060020a0316637915c9e08c8c8c8b6040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184600160a060020a0316600160a060020a0316815260200183815260200182151515158152602001945050505050602060405180830381600087803b158015612bc857600080fd5b505af1158015612bdc573d6000803e3d6000fd5b505050506040513d6020811015612bf257600080fd5b505191506000826003811115612c0457fe5b1415612c0f57600195505b6002826003811115612c1d57fe5b1415612c2857600194505b6003826003811115612c3657fe5b1415612c4157600193505b600190920191612aab565b83612c645785612c5c5784612c5f565b60005b612c67565b60015b9750612c73565b600097505b505050505050509392505050565b60145460ff1681565b60ff821660009081526016602052604081205481908190811015612d7a575060005b60ff8516600090815260166020526040902054811015612d7a5760ff85166000908152601660205260409020805485919083908110612ce757fe5b60009182526020909120600290910201541415612d725760ff85166000908152601660205260409020805482908110612d1c57fe5b6000918252602080832060029092029091015460ff8816835260169091526040909120805483908110612d4b57fe5b6000918252602090912060016002909202010154909350600160a060020a03169150612d82565b600101612cac565b600092508291505b509250929050565b600754600160a060020a03163314612da157600080fd5b6014805460ff191660011790556040805142815290517f10216e36c4b6dff3d74179d50b938f0f96afc610f073894ca04b4239299165679181900360200190a1565b600181565b6000612df53384846138d3565b612e00338484612935565b1515612e44576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614790833981519152604482015290519081900360640190fd5b612e4d336139fd565b612e56836139fd565b612e608383613de6565b1515612e6b57600080fd5b50600192915050565b600754600160a060020a03163314612e8b57600080fd5b60118054600160a060020a031916600160a060020a0392909216919091179055565b600d54600160a060020a031681565b600481565b600754600090600160a060020a03163314612edb57600080fd5b50815b612ef9612ef1848463ffffffff613b9b16565b600b54613eb5565b811015610f4257600b5481108015612f3a5750612f38600b82815481101515612f1e57fe5b600091825260209091200154600160a060020a03166124e6565b155b15612ffe57600060176000600b84815481101515612f5457fe5b600091825260208083209190910154600160a060020a031683528201929092526040019020805460ff1916911515919091179055600b80546000198101908110612f9a57fe5b600091825260209091200154600b8054600160a060020a039092169183908110612fc057fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600b805490612ffc906000198301614725565b505b600101612ede565b600e54600160a060020a031681565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c1d5780601f10610bf257610100808354040283529160200191610c1d565b336000908152600260209081526040808320600160a060020a03861684529091528120546130a4908363ffffffff613b9b16565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600a5481565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600b5490565b600754600160a060020a0316331461315757600080fd5b61316081613ecb565b50565b600754600160a060020a0316331461317a57600080fd5b600c546040805160e060020a63bf40fac1028152602060048201819052600e60248301527f4d6f64756c65526567697374727900000000000000000000000000000000000060448301529151610100909304600160a060020a03169263bf40fac1926064808401939192918290030181600087803b1580156131fb57600080fd5b505af115801561320f573d6000803e3d6000fd5b505050506040513d602081101561322557600080fd5b5051600d8054600160a060020a031916600160a060020a03928316179055600c546040805160e060020a63bf40fac1028152602060048201819052601560248301527f5365637572697479546f6b656e52656769737472790000000000000000000000604483015291516101009093049093169263bf40fac192606480830193928290030181600087803b1580156132bc57600080fd5b505af11580156132d0573d6000803e3d6000fd5b505050506040513d60208110156132e657600080fd5b5051600e8054600160a060020a031916600160a060020a03928316178155600c546040805160e060020a63bf40fac102815260206004820181905260248201949094527f5469636b65725265676973747279000000000000000000000000000000000000604482015290516101009092049093169263bf40fac19260648083019391928290030181600087803b15801561337f57600080fd5b505af1158015613393573d6000803e3d6000fd5b505050506040513d60208110156133a957600080fd5b5051600f8054600160a060020a031916600160a060020a03928316179055600c546040805160e060020a63bf40fac1028152602060048201819052600960248301527f506f6c79546f6b656e0000000000000000000000000000000000000000000000604483015291516101009093049093169263bf40fac192606480830193928290030181600087803b15801561344057600080fd5b505af1158015613454573d6000803e3d6000fd5b505050506040513d602081101561346a57600080fd5b505160108054600160a060020a031916600160a060020a03909216919091179055565b600754600160a060020a031633146134a457600080fd5b600c5460ff16156134b457600080fd5b600c805460ff19166001179055604080516020601f86018190048102820181019092528481526134ff9187919087908790819084018382808284378201915050505050508484613f3c565b5050600c805460ff19169055505050565b600754600160a060020a0316331461352757600080fd5b601054600754604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b15801561359957600080fd5b505af11580156135ad573d6000803e3d6000fd5b505050506040513d60208110156135c357600080fd5b50511515613160576040805160e560020a62461bcd02815260206004820152601560248201527f496e2d73756666696369656e742062616c616e63650000000000000000000000604482015290519081900360640190fd5b60126020528160005260406000208181548110151561363657fe5b600091825260209091206002909102018054600190910154909250905082565b60006004600182805b60ff80851660009081526016602052604090205490821610156136ce5781806136c4575060ff80851660009081526016602052604090208054339284169081106136a557fe5b6000918252602090912060016002909202010154600160a060020a0316145b915060010161365f565b8280156136d9575081155b156137fc5760ff8416600314156137955760ff84166000908152601660205260409020541580156137145750600754600160a060020a031633145b1515613790576040805160e560020a62461bcd02815260206004820152602d60248201527f53656e646572206973206e6f74206f776e6572206f722053544f206d6f64756c60448201527f6520697320617474616368656400000000000000000000000000000000000000606482015290519081900360840190fd5b6137f7565b600754600160a060020a031633146137f7576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b613879565b811515613879576040805160e560020a62461bcd02815260206004820152602160248201527f53656e646572206973206e6f7420636f7272656374206d6f64756c652074797060448201527f6500000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6009546000191161388957600080fd5b60098054600101908190556040805142815290517feb3befa36ea6638fc3379fe62edc59509b81aeca57cfbb0f444b1e72b8ac93fe9181900360200190a260095494505050505090565b8015806138f1575081600160a060020a031683600160a060020a0316145b156138fb57610f42565b613904826124e6565b1580156139195750600160a060020a03821615155b1561393657600a5461393290600163ffffffff613b9b16565b600a555b61393f836124e6565b81141561395e57600a5461395a90600163ffffffff613ba816565b600a555b600160a060020a03821660009081526017602052604090205460ff1615801561398f5750600160a060020a03821615155b15610f4257600b805460018181019092557f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9018054600160a060020a038516600160a060020a031990911681179091556000908152601760205260409020805460ff19169091179055505050565b600160a060020a038116600090815260126020526040902061316090613a22836124e6565b6145b7565b6000600160a060020a0383161515613a3e57600080fd5b600160a060020a038416600090815260208190526040902054821115613a6357600080fd5b600160a060020a0384166000908152600260209081526040808320338452909152902054821115613a9357600080fd5b600160a060020a038416600090815260208190526040902054613abc908363ffffffff613ba816565b600160a060020a038086166000908152602081905260408082209390935590851681522054613af1908363ffffffff613b9b16565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054613b33908363ffffffff613ba816565b600160a060020a03808616600081815260026020908152604080832033845282529182902094909455805186815290519287169391926000805160206147b0833981519152929181900390910190a35060019392505050565b613b996013613a22610ca0565b565b8181018281101561292f57fe5b600082821115613bb457fe5b50900390565b6000806000806009548611151515613bd157600080fd5b851515613be15760009350613d5b565b86541515613bf157849350613d5b565b85876000815481101515613c0157fe5b600091825260209091206002909102015410613c3f57866000815481101515613c2657fe5b9060005260206000209060020201600101549350613d5b565b8654869088906000198101908110613c5357fe5b9060005260206000209060020201600001541015613c7357849350613d5b565b8654869088906000198101908110613c8757fe5b9060005260206000209060020201600001541415613cb157865487906000198101908110613c2657fe5b8654600093506000190191505b82821115613d38576002828401049050858782815481101515613cdd57fe5b9060005260206000209060020201600001541415613cfd57809150613d38565b858782815481101515613d0c57fe5b9060005260206000209060020201600001541015613d2f57806001019250613d33565b8091505b613cbe565b8682815481101515613d4657fe5b90600052602060002090600202016001015493505b5050509392505050565b60008060006004845110613d7a576004613d7d565b83515b9150600090505b81811015613ddf5780600183030360080260020a8482815181101515613da657fe5b90602001015160f860020a900460f860020a0260f860020a9004028360e060020a90040160e060020a0292508080600101915050613d84565b5050919050565b6000600160a060020a0383161515613dfd57600080fd5b33600090815260208190526040902054821115613e1957600080fd5b33600090815260208190526040902054613e39908363ffffffff613ba816565b3360009081526020819052604080822092909255600160a060020a03851681522054613e6b908363ffffffff613b9b16565b600160a060020a038416600081815260208181526040918290209390935580518581529051919233926000805160206147b08339815191529281900390910190a350600192915050565b6000818310613ec45781611ec8565b5090919050565b600160a060020a0381161515613ee057600080fd5b600754604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360078054600160a060020a031916600160a060020a0392909216919091179055565b600d54604080517fdc659907000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483015291516000938493849384938493929092169163dc65990791602480820192869290919082900301818387803b158015613fae57600080fd5b505af1158015613fc2573d6000803e3d6000fd5b5050505088945084600160a060020a03166315dae03e6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561400757600080fd5b505af115801561401b573d6000803e3d6000fd5b505050506040513d602081101561403157600080fd5b505160ff81166000908152601660205260409020549094506014116140a0576040805160e560020a62461bcd02815260206004820152601f60248201527f4c696d6974206f66204d4158204d4f44554c4553206973207265616368656400604482015290519081900360640190fd5b84600160a060020a0316637e363ffa6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156140de57600080fd5b505af11580156140f2573d6000803e3d6000fd5b505050506040513d602081101561410857600080fd5b505192508683111561418a576040805160e560020a62461bcd02815260206004820152602e60248201527f4d617820436f737420697320616c77617973206265206772656174657220746860448201527f616e206d6f64756c6520636f7374000000000000000000000000000000000000606482015290519081900360840190fd5b601054604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a038c81166004830152602482018790529151919092169163095ea7b39160448083019260209291908290030181600087803b1580156141f957600080fd5b505af115801561420d573d6000803e3d6000fd5b505050506040513d602081101561422357600080fd5b505115156142a1576040805160e560020a62461bcd02815260206004820152602360248201527f4e6f742061626c6520746f20617070726f766520746865206d6f64756c65206360448201527f6f73740000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6040517e7743600000000000000000000000000000000000000000000000000000000081526020600482018181528a5160248401528a51600160a060020a0389169362774360938d939283926044019185019080838360005b838110156143125781810151838201526020016142fa565b50505050905090810190601f16801561433f5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561435e57600080fd5b505af1158015614372573d6000803e3d6000fd5b505050506040513d602081101561438857600080fd5b5051601054604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a038085166004830152602482018b9052915193955091169163095ea7b3916044808201926020929091908290030181600087803b1580156143fb57600080fd5b505af115801561440f573d6000803e3d6000fd5b505050506040513d602081101561442557600080fd5b5051151561447d576040805160e560020a62461bcd02815260206004820152601e60248201527f4e6f742061626c6520746f20617070726f766520746865206275646765740000604482015290519081900360640190fd5b84600160a060020a03166317d7de7c6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156144bb57600080fd5b505af11580156144cf573d6000803e3d6000fd5b505050506040513d60208110156144e557600080fd5b505160ff8516600081815260166020908152604080832081518083018352868152600160a060020a0389811682860181815284546001808201875595895297879020935160029098029093019687559151959092018054600160a060020a031916958316959095179094558151868152908f16928101929092528181019290925260608101879052608081018a90524260a0820152905192935090917fc6c63fb8912a7f464252e66132ad69604864e7520f1bcf0dd77c8d51d810a6519160c0908290030190a2505050505050505050565b60095415156145c5576126e5565b8154151561460c57604080518082019091526009548152602080820183815284546001818101875560008781529390932093516002909102909301928355519101556126e5565b60095482548390600019810190811061462157fe5b906000526020600020906002020160000154141561463e576126e5565b6040805180820190915260095481526020808201928352835460018082018655600095865291909420915160029094029091019283559051910155565b815481835581811115610f4257600202816002028360005260206000209182019101610f429190614749565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106146e857805160ff1916838001178555614715565b82800160010185558215614715579182015b828111156147155782518255916020019190600101906146fa565b50614721929150614775565b5090565b815481835581811115610f4257600083815260209020610f42918101908301614775565b610ca491905b808211156147215760008155600181018054600160a060020a031916905560020161474f565b610ca491905b80821115614721576000815560010161477b56005472616e73666572206973206e6f742076616c69640000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058202d6c06423946250bafbbba195307748c46429e3561f18300b8ff25f5b9aea3f20029",
  "sourceMap": "159:859:60:-;;;321:35:61;;;-1:-1:-1;;321:35:61;;;1223:26:59;;;-1:-1:-1;;;;;;1223:26:59;;;;1618:41;;-1:-1:-1;;1665:38:59;;;681:335:60;5:2:-1;;;;30:1;27;20:12;5:2;681:335:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;463:12:66;;681:335:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;463:12:66;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;481:16:66;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;503:8:66;:20;;;;;;-1:-1:-1;;503:20:66;;;;;;;;;-1:-1:-1;;567:5:64;:18;;-1:-1:-1;;;;;;567:18:64;575:10;567:18;;;-1:-1:-1;;;;;412:31:5;;;;404:40;;;;;;454:16;:36;;-1:-1:-1;;;;;454:36:5;;;;;-1:-1:-1;;;;;;454:36:5;;;;;;;;;5689:20:59;:18;;;;:20;:::i;:::-;5719:28;;;;:12;;:28;;;;;:::i;:::-;-1:-1:-1;;;5757:11:59;:26;-1:-1:-1;;5818:38:59;;;;;;;;;;;;;;;;5793:65;;;;;;;;:17;:65;;;;;;;:72;;-1:-1:-1;;5793:72:59;;;5861:4;5793:72;;;;;;5900:50;;;;;;;;;;;;;;;;;;5875:77;;;;;;;;;;:84;;;;;;;;5994:34;;;;;;;;;;;;;5969:61;;;;;;;;;;:68;;;;;;;;6072:26;;;;;;;;;;;;;;6047:53;;;;;;;;;;:60;;;;;;;;;;-1:-1:-1;159:859:60;;-1:-1:-1;;;;;;159:859:60;503:418:5;719:5:64;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;594:16:5;;577:63;;;;;;;;;;;;;;;;;;;;;;;;;594:16;;;;-1:-1:-1;;;;;594:16:5;;577:45;;:63;;;;;;;;;;;;;-1:-1:-1;594:16:5;577:63;;;5:2:-1;;;;30:1;27;20:12;5:2;577:63:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;577:63:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;577:63:5;560:14;:80;;-1:-1:-1;;;;;;560:80:5;-1:-1:-1;;;;;560:80:5;;;;;;691:16;;674:70;;;;;;577:63;674:70;;;;;;;;;;;;;;;;;;560:80;691:16;;;;;;;674:45;;:70;;;;;577:63;674:70;;;;;-1:-1:-1;691:16:5;674:70;;;5:2:-1;;;;30:1;27;20:12;5:2;674:70:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;674:70:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;674:70:5;650:21;:94;;-1:-1:-1;;;;;;650:94:5;-1:-1:-1;;;;;650:94:5;;;;;;788:16;;771:63;;;;;;674:70;771:63;;;;;;;;;;;;;;;;;;;;650:94;788:16;;;;;;;771:45;;:63;;;;;674:70;;771:63;;;;;-1:-1:-1;788:16:5;771:63;;;5:2:-1;;;;30:1;27;20:12;5:2;771:63:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;771:63:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;771:63:5;754:14;:80;;-1:-1:-1;;;;;;754:80:5;-1:-1:-1;;;;;754:80:5;;;;;;873:16;;856:58;;;;;;771:63;856:58;;;;;;;;;;;;;;;;;;754:80;873:16;;;;;;;856:45;;:58;;;;;771:63;856:58;;;;;-1:-1:-1;873:16:5;856:58;;;5:2:-1;;;;30:1;27;20:12;5:2;856:58:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;856:58:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;856:58:5;844:9;:70;;-1:-1:-1;;;;;;844:70:5;-1:-1:-1;;;;;844:70:5;;;;;;;;;503:418::o;159:859:60:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;159:859:60;;;-1:-1:-1;159:859:60;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "159:859:60:-;;;;;;;;;-1:-1:-1;;;159:859:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15391:146:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15391:146:59;;;;;;319:18:66;;8:9:-1;5:2;;;30:1;27;20:12;5:2;319:18:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;319:18:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1829:188:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1829:188:69;-1:-1:-1;;;;;1829:188:69;;;;;;;;;;;;;;;;;;;;;;;;;1902:47:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1902:47:59;-1:-1:-1;;;;;1902:47:59;;;;;371:83:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;371:83:65;;;;;;;;;;;;;;;;;;;;8909:729:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8909:729:59;;;;;;;;;;;;20378:126;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20378:126:59;;;;13116:236;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13116:236:59;;;;;1665:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1665:38:59;;;;18189:388;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18189:388:59;-1:-1:-1;;;;;18189:388:59;;;;;;;;;;;;1145:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1145:31:59;;;;;;;;-1:-1:-1;;;;;1145:31:59;;;;;;;;;;;;;;281:29:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;281:29:5;;;;365:21:66;;8:9:-1;5:2;;;30:1;27;20:12;5:2;365:21:66;;;;;;;;;;;;;;;;;;;;;;;15602:148:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15602:148:59;;;;207:54:60;;8:9:-1;5:2;;;30:1;27;20:12;5:2;207:54:60;;;;622:26:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;622:26:19;;;;;20865:704:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20865:704:59;-1:-1:-1;;;;;20865:704:59;;;;;;;23749:993;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23749:993:59;;;;;9907:373;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9907:373:59;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9907:373:59;;;;;;;;;;;;;;;;22025:355;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22025:355:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22025:355:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22025:355:59;;;;-1:-1:-1;22025:355:59;-1:-1:-1;22025:355:59;;-1:-1:-1;22025:355:59;;;;;;;;;-1:-1:-1;22025:355:59;;-1:-1:-1;22025:355:59;;-1:-1:-1;;;;;;;22025:355:59;27639:194;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;27639:194:59;-1:-1:-1;;;;;27639:194:59;;;;;;;471:34:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;471:34:19;;;;403:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;403:26:19;;;;1857:38:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1857:38:59;;;;11751:936;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11751:936:59;;;;;;;;;;;;;;1223:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1223:26:59;;;;318:33:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;318:33:19;;;;3701:425:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3701:425:69;-1:-1:-1;;;;;3701:425:69;;;;;;;316:24:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;316:24:5;;;;1131:99:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1131:99:65;-1:-1:-1;;;;;1131:99:65;;;;;827:111:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;827:111:64;;;;1804:46:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1804:46:59;;;;;;;;;12797:186;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12797:186:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12797:186:59;;-1:-1:-1;12797:186:59;;-1:-1:-1;;;;;;;12797:186:59;167:31:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;167:31:5;;;;1570:41:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1570:41:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;22864:463;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22864:463:59;-1:-1:-1;;;;;22864:463:59;;;;;;;;;;;;238:20:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;238:20:64;;;;267:45:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;267:45:19;;;;341:20:66;;8:9:-1;5:2;;;30:1;27;20:12;5:2;341:20:66;;;;25725:162:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25725:162:59;;;;;18861:1214;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18861:1214:59;-1:-1:-1;;;;;18861:1214:59;;;;;;;;;;;;1618:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1618:41:59;;;;10567:578;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10567:578:59;;;;;;;;;20160:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20160:135:59;;;;214:47:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;214:47:19;;;;17586:373:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17586:373:59;-1:-1:-1;;;;;17586:373:59;;;;;;;23497:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23497:120:59;-1:-1:-1;;;;;23497:120:59;;;;;204:29:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;204:29:5;;;;357:40:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;357:40:19;;;;14603:429:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14603:429:59;;;;;;;239:36:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;239:36:5;;;;303:26:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;303:26:17;;;;2946:293:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2946:293:69;-1:-1:-1;;;;;2946:293:69;;;;;;;558:28:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;558:28:19;;;;2336:153:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2336:153:69;-1:-1:-1;;;;;2336:153:69;;;;;;;;;;15230:99:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15230:99:59;;;;1100:103:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1100:103:64;-1:-1:-1;;;;;1100:103:64;;;;;503:418:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;503:418:5;;;;6491:230:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6491:230:59;;;;-1:-1:-1;;;;;6491:230:59;;;;;;;;;;;;;;;;;11404:148;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11404:148:59;;;;;1505:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1505:59:59;-1:-1:-1;;;;;1505:59:59;;;;;;;25272:295;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25272:295:59;;;;15391:146;719:5:64;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;15454:6:59;;-1:-1:-1;;;15454:6:59;;;;15453:7;15445:16;;;;;;15471:6;:13;;-1:-1:-1;;15471:13:59;-1:-1:-1;;;15471:13:59;;;;;;;15499:31;;;15518:6;;;;15471:13;15518:6;15499:31;;;;15526:3;15499:31;;;;;;;;;;;;;;;;;15391:146::o;319:18:66:-;;;;;;;;;;;;;;;-1:-1:-1;;319:18:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1829:188:69:-;1916:10;1896:4;1908:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;1908:29:69;;;;;;;;;;;:38;;;1957;;;;;;;1896:4;;1908:29;;1916:10;;1957:38;;;;;;;;-1:-1:-1;2008:4:69;1829:188;;;;:::o;1902:47:59:-;;;;;;;;;;;;;;;:::o;371:83:65:-;437:12;;371:83;;:::o;8909:729:59:-;719:5:64;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;9022:20:59;;;;;;;;:7;:20;;;;;:27;9007:42;;;;8999:120;;;;;-1:-1:-1;;;;;8999:120:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9137:20;;;;9197:1;9137:20;;;:7;:20;;;;;:34;;9197:1;;9137:20;;:34;;;;;;;;;;;;;;;;;;:48;:34;;;;;:48;;-1:-1:-1;;;;;9137:48:59;:62;;9129:123;;;;;-1:-1:-1;;;;;9129:123:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9376:84;;;;9406:20;;;;:7;:20;;;;;:34;;9376:84;;;;9406:34;;;;;;;;;;;;;;;;;;;:48;:34;;;;;:48;;9376:84;;;-1:-1:-1;;;;;9406:48:59;;;9376:84;;9456:3;9376:84;;;;;;;;;;;;;;;;;;9507:20;;;;;;;:7;:20;;;;;9528:27;;-1:-1:-1;;9528:31:59;;;9507:53;;;;;;;;;;;;;;;;9470:7;:20;9478:11;9470:20;;;;;;;;;;;;;;;9491:12;9470:34;;;;;;;;;;;;;;;;;;;;:90;;:34;;;;;:90;;;;;;;;;;;;;;-1:-1:-1;;;;;;9470:90:59;-1:-1:-1;;;;;9470:90:59;;;;;;;;;;9600:20;;;;;:7;:20;;;;;;:27;;-1:-1:-1;;9600:31:59;;9570:61;;9600:31;9570:61;:::i;:::-;;8909:729;;:::o;20378:126::-;719:5:64;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;20433:18:59;:25;;-1:-1:-1;;20433:25:59;;;;;20473:24;;;20493:3;20473:24;;;;;;;;;;;;;20378:126::o;13116:236::-;719:5:64;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;13200:17:59;;;13192:54;;;;;-1:-1:-1;;;;;13192:54:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;13283:11;;13261:48;;;;;;;;;;;;;;;;;;;;;;;;13319:11;:26;13116:236::o;1665:38::-;;;;;;;;;:::o;18189:388::-;18271:12;18295:39;18315:5;18322:3;18327:6;18295:19;:39::i;:::-;18352:34;18367:5;18374:3;18379:6;18352:14;:34::i;:::-;18344:68;;;;;;;-1:-1:-1;;;;;18344:68:59;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18344:68:59;;;;;;;;;;;;;;;18422:31;18447:5;18422:24;:31::i;:::-;18463:29;18488:3;18463:24;:29::i;:::-;18510:38;18529:5;18536:3;18541:6;18510:18;:38::i;:::-;18502:47;;;;;;;;-1:-1:-1;18566:4:59;18189:388;;;;;:::o;1145:31::-;;;-1:-1:-1;;;;;1145:31:59;;:::o;281:29:5:-;;;-1:-1:-1;;;;;281:29:5;;:::o;365:21:66:-;;;;;;:::o;15602:148:59:-;719:5:64;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;15666:6:59;;-1:-1:-1;;;15666:6:59;;;;15658:15;;;;;;;;15683:6;:14;;-1:-1:-1;;15683:14:59;;;;;15712:31;;;-1:-1:-1;;;15731:6:59;;;15683:14;15731:6;15712:31;;;;15739:3;15712:31;;;;;;;;;;;;;;;;15602:148::o;207:54:60:-;;;:::o;622:26:19:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;622:26:19;;-1:-1:-1;622:26:19;:::o;20865:704:59:-;21002:12;350:1:19;20942:4:59;21002:12;;3717:165;3739:20;;;;;;;;:7;:20;;;;;:27;3735:31;;;;3717:165;;;3802:12;:69;;;-1:-1:-1;3819:20:59;;;;;;;;:7;:20;;;;;:23;;3860:10;;3819:23;;;;;;;;;;;;;;;;;:37;:23;;;;;:37;;-1:-1:-1;;;;;3819:37:59;:51;3802:69;3787:84;-1:-1:-1;3768:3:59;;3717:165;;;3895:9;:26;;;;;3909:12;3908:13;3895:26;3891:389;;;3941:22;;;350:1:19;3941:22:59;3937:243;;;3989:20;;;;;;;:7;:20;;;;;:27;:32;:55;;;;-1:-1:-1;4039:5:59;;-1:-1:-1;;;;;4039:5:59;4025:10;:19;3989:55;3981:113;;;;;;;-1:-1:-1;;;;;3981:113:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3937:243;;;4151:5;;-1:-1:-1;;;;;4151:5:59;4137:10;:19;4129:51;;;;;-1:-1:-1;;;;;4129:51:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;3891:389;;;4219:12;4211:58;;;;;;;-1:-1:-1;;;;;4211:58:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20965:7;4374:11;;4364:7;:21;;;;;;;;:26;4356:90;;;;;-1:-1:-1;;;;;4356:90:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4731:5;;-1:-1:-1;;;;;4731:5:59;4717:10;:19;4713:206;;;4761:21;;;;4760:22;4752:65;;;;;-1:-1:-1;;;;;4752:65:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;4713:206;;;4857:18;;;;;;;4856:19;4848:60;;;;;-1:-1:-1;;;;;4848:60:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21034:23:59;;;;21026:69;;;;;-1:-1:-1;;;;;21026:69:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21105:51;21133:1;21137:9;21148:7;21105:19;:51::i;:::-;21174:46;21197:1;21201:9;21212:7;21174:14;:46::i;:::-;21166:80;;;;;;;-1:-1:-1;;;;;21166:80:59;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21166:80:59;;;;;;;;;;;;;;;21256:35;21281:9;21256:24;:35::i;:::-;21301:30;:28;:30::i;:::-;21356:12;;:25;;21373:7;21356:25;:16;:25;:::i;:::-;21341:12;:40;-1:-1:-1;;;;;21413:19:59;;:8;:19;;;;;;;;;;;:32;;21437:7;21413:32;:23;:32;:::i;:::-;-1:-1:-1;;;;;21391:19:59;;:8;:19;;;;;;;;;;;;:54;;;;21460:26;;;;;;;21391:19;;21460:26;;;;;;;;;21501:40;;;;;;;;-1:-1:-1;;;;;21501:40:59;;;21518:1;;-1:-1:-1;;;;;;;;;;;21501:40:59;;;;;;;;-1:-1:-1;21558:4:59;;20865:704;-1:-1:-1;;;;;;;20865:704:59:o;23749:993::-;23796:6;4374:11;;4364:7;:21;;;;;;;;:26;4356:90;;;;;-1:-1:-1;;;;;4356:90:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23821:51;23841:10;23861:1;23865:6;23821:19;:51::i;:::-;23890:11;;-1:-1:-1;;;;;23890:11:59;:25;;23882:82;;;;;-1:-1:-1;;;;;23882:82:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23982:46;23997:10;24017:1;24021:6;23982:14;:46::i;:::-;23974:80;;;;;;;-1:-1:-1;;;;;23974:80:59;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23974:80:59;;;;;;;;;;;;;;;24091:10;24082:8;:20;;;;;;;;;;;24072:30;;;24064:100;;;;;-1:-1:-1;;;;;24064:100:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24174:36;24199:10;24174:24;:36::i;:::-;24220:30;:28;:30::i;:::-;24472:10;24463:8;:20;;;;;;;;;;;:32;;24488:6;24463:32;:24;:32;:::i;:::-;24449:10;24440:8;:20;;;;;;;;;;;:55;;;;24513:11;;:36;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24513:11:59;;;;:16;;:36;;;;;;;;;;;;;:11;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;24513:36:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24513:36:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24513:36:59;24505:86;;;;;;;-1:-1:-1;;;;;24505:86:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24616:12;;:24;;24633:6;24616:24;:16;:24;:::i;:::-;24601:12;:39;24655:25;;;;;;;;24661:10;;24655:25;;;;;;;;;;24695:40;;;;;;;;24724:1;;24704:10;;-1:-1:-1;;;;;;;;;;;24695:40:59;;;;;;;;23749:993;;:::o;9907:373::-;10017:20;;;9985:7;10017:20;;;:7;:20;;;;;:27;9985:7;;10017:31;-1:-1:-1;10013:260:59;;;10089:20;;;;;;;:7;:20;;;;;:34;;10110:12;;10089:34;;;;;;;;;;;;;;;;;;;;;:39;10146:20;;;;;:7;:20;;;;;;;:34;;10167:12;;10146:34;;;;;;;;;;;;;;:48;:34;;;;;:48;;10064:144;;-1:-1:-1;;;;;;10146:48:59;;-1:-1:-1;10064:144:59;;10013:260;-1:-1:-1;10259:1:59;;-1:-1:-1;10259:1:59;10013:260;9907:373;;;;;:::o;22025:355::-;22128:12;;350:1:19;22113:4:59;22128:12;;3717:165;3739:20;;;;;;;;:7;:20;;;;;:27;3735:31;;;;3717:165;;;3802:12;:69;;;-1:-1:-1;3819:20:59;;;;;;;;:7;:20;;;;;:23;;3860:10;;3819:23;;;;;;;;;;;;;;;;;:37;:23;;;;;:37;;-1:-1:-1;;;;;3819:37:59;:51;3802:69;3787:84;-1:-1:-1;3768:3:59;;3717:165;;;3895:9;:26;;;;;3909:12;3908:13;3895:26;3891:389;;;3941:22;;;350:1:19;3941:22:59;3937:243;;;3989:20;;;;;;;:7;:20;;;;;:27;:32;:55;;;;-1:-1:-1;4039:5:59;;-1:-1:-1;;;;;4039:5:59;4025:10;:19;3989:55;3981:113;;;;;;;-1:-1:-1;;;;;3981:113:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3937:243;;;4151:5;;-1:-1:-1;;;;;4151:5:59;4137:10;:19;4129:51;;;;;-1:-1:-1;;;;;4129:51:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;3891:389;;;4219:12;4211:58;;;;;;;-1:-1:-1;;;;;4211:58:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22181:15;;22160:17;;:36;22152:86;;;;;-1:-1:-1;;;;;22152:86:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22265:1;22253:13;;22248:105;22272:10;:17;22268:1;:21;22248:105;;;22310:32;22315:10;22326:1;22315:13;;;;;;;;;;;;;;;;;;22330:8;22339:1;22330:11;;;;;;;;;;;;;;;;;;22310:4;:32::i;:::-;-1:-1:-1;22291:3:59;;;;;22248:105;;;-1:-1:-1;22369:4:59;;22025:355;-1:-1:-1;;;;;;;22025:355:59:o;27639:194::-;-1:-1:-1;;;;;27759:29:59;;27722:7;27759:29;;;:18;:29;;;;;27748:78;;27790:13;27805:20;27778:9;27805;:20::i;:::-;27748:10;:78::i;:::-;27741:85;27639:194;-1:-1:-1;;;27639:194:59:o;471:34:19:-;;;;:::o;403:26::-;;;;:::o;1857:38:59:-;1893:2;1857:38;:::o;11751:936::-;719:5:64;;12015:25:59;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;11870:16:59;;;;;11862:55;;;;;-1:-1:-1;;;;;11862:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;11950:20;;;;;;;;:7;:20;;;;;:27;11935:42;;;;11927:78;;;;;-1:-1:-1;;;;;11927:78:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;12050:9;;12086:20;;;;12050:9;12086:20;;;:7;:20;;;;;:34;;-1:-1:-1;;;;;12050:9:59;;;;12043:27;;12079:4;;12086:20;:34;;;;;;;;;;;;;;;;;;:48;:34;;;;;:48;;;;;12043:92;;;-1:-1:-1;;;12043:92:59;;;;;;-1:-1:-1;;;;;12043:92:59;;;;;;;12086:48;;;;12043:92;;;;;;;;;;12086:34;;12043:92;;;;;;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;12043:92:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12043:92:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12043:92:59;;-1:-1:-1;12149:27:59;;;12145:427;;;12207:9;;12235:20;;;;12207:9;12235:20;;;:7;:20;;;;;:34;;-1:-1:-1;;;;;12207:9:59;;;;12200:34;;12235;;;;;;;;;;;;;;;;;:48;:34;;;;;:48;;-1:-1:-1;;;;;12235:48:59;12285:30;:17;12307:7;12285:30;:21;:30;:::i;:::-;12200:116;;;;;-1:-1:-1;;;12200:116:59;;;;;;;-1:-1:-1;;;;;12200:116:59;-1:-1:-1;;;;;12200:116:59;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12200:116:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12200:116:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12200:116:59;12192:169;;;;;;;-1:-1:-1;;;;;12192:169:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12145:427;;;12407:9;;12435:20;;;;12407:9;12435:20;;;:7;:20;;;;;:34;;-1:-1:-1;;;;;12407:9:59;;;;12400:34;;12435;;;;;;;;;;;;;;;;;:48;:34;;;;;:48;;-1:-1:-1;;;;;12435:48:59;12485:30;:7;12497:17;12485:30;:11;:30;:::i;:::-;12400:116;;;;;-1:-1:-1;;;12400:116:59;;;;;;;-1:-1:-1;;;;;12400:116:59;-1:-1:-1;;;;;12400:116:59;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12400:116:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12400:116:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12400:116:59;12392:169;;;;;;;-1:-1:-1;;;;;12392:169:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12586:94;;;;12622:20;;;;:7;:20;;;;;:34;;12586:94;;;;12622:34;;;;;;;;;;;;;;;;;;;:48;:34;;;;;:48;;12586:94;;;-1:-1:-1;;;;;12622:48:59;;;12586:94;;;;;;;;;;;;;;;;;;;11751:936;;;;:::o;1223:26::-;;;-1:-1:-1;;;1223:26:59;;;;;:::o;318:33:19:-;350:1;318:33;:::o;3701:425:69:-;3842:10;3804:4;3834:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3834:29:69;;;;;;;;;;3873:27;;;3869:164;;;3918:10;3942:1;3910:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3910:29:69;;;;;;;;;:33;3869:164;;;3996:30;:8;4009:16;3996:30;:12;:30;:::i;:::-;3972:10;3964:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3964:29:69;;;;;;;;;:62;3869:164;4052:10;4074:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;4043:61:69;;4074:29;;;;;;;;;;;4043:61;;;;;;;;;4052:10;4043:61;;;;;;;;;;;-1:-1:-1;4117:4:69;;3701:425;-1:-1:-1;;;3701:425:69:o;316:24:5:-;;;-1:-1:-1;;;;;316:24:5;;:::o;1131:99:65:-;-1:-1:-1;;;;;1209:16:65;1187:7;1209:16;;;;;;;;;;;;1131:99::o;827:111:64:-;719:5;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;903:5;;884:25;;-1:-1:-1;;;;;903:5:64;;;;884:25;;903:5;;884:25;915:5;:18;;-1:-1:-1;;;;;;915:18:64;;;827:111::o;1804:46:59:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1804:46:59;;-1:-1:-1;1804:46:59;:::o;12797:186::-;719:5:64;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;12882:53:59;;;;;;12904:12;12882:53;;;-1:-1:-1;;12882:53:59;;;;;;;;;;;;;;;;;;;12904:12;;12918:16;;12882:53;;;;;;;;;;12904:12;;12882:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12882:53:59;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12882:53:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12945:31;;;;:12;;:31;;;;;:::i;:::-;;12797:186;:::o;167:31:5:-;;;;;;-1:-1:-1;;;;;167:31:5;;:::o;1570:41:59:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1570:41:59;:::o;22864:463::-;260:1:19;22960:4:59;22980:30;;;:7;:30;;;:37;22960:4;;22980:42;22976:85;;;23045:5;23038:12;;;;22976:85;-1:-1:-1;23086:1:59;23071:250;260:1:19;23093:30:59;;:7;:30;;;:37;:30;23089:41;;;23071:250;;;260:1:19;23174:30:59;;:7;:30;;;:33;;:30;:33;;;;;;;;;;;;;;;;;:47;:33;;;;;:47;;;;;23155:110;;;;;;-1:-1:-1;;;;;23155:110:59;;;;;;;;;;;;;;;;;;;;;;23174:47;;;;;23155:83;;:110;;;;;23174:33;;23155:110;;;;;;;;;23174:47;23155:110;;;5:2:-1;;;;30:1;27;20:12;5:2;23155:110:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23155:110:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23155:110:59;23151:160;;;23292:4;23285:11;;;;23151:160;23132:3;;23071:250;;;22864:463;;;;;;:::o;238:20:64:-;;;-1:-1:-1;;;;;238:20:64;;:::o;267:45:19:-;311:1;267:45;:::o;341:20:66:-;;;;;;;;;;;;;;;-1:-1:-1;;341:20:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25725:162:59;25791:7;25817:63;25828:21;25851:13;25866;:11;:13::i;25817:63::-;25810:70;25725:162;-1:-1:-1;;25725:162:59:o;18861:1214::-;18972:4;19015:15;19257:14;19293:12;19327:17;19371:7;19448:29;18954:7;4374:11;;4364:7;:21;;;;;;;;:26;4356:90;;;;;-1:-1:-1;;;;;4356:90:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18993:6;;-1:-1:-1;;;18993:6:59;;;;18992:7;18988:1061;;;19033:5;19015:23;;19056:17;:35;19074:16;19081:8;;19074:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19074:6:59;;-1:-1:-1;;;;;19074:16:59:i;:::-;19056:35;;;;;;;;;;;;;-1:-1:-1;19056:35:59;;;;19052:89;;;19122:4;19109:17;;19052:89;311:1:19;19158:28:59;;:7;:28;;;:35;:40;19154:90;;;19225:4;19218:11;;;;19154:90;19274:5;19257:22;;19308:5;19293:20;;19347:5;19327:25;;19381:1;19371:11;;19366:603;311:1:19;19388:28:59;;:7;:28;;;:35;:28;19384:39;;;19366:603;;;311:1:19;19497:28:59;;:7;:28;;;:31;;:28;:31;;;;;;;;;;;;;;;;;;;:45;;;;;;;;;;-1:-1:-1;;;;;19497:45:59;-1:-1:-1;;;;;19480:78:59;;19559:5;19566:3;19571:7;19580:10;19480:111;;;;;-1:-1:-1;;;19480:111:59;;;;;;;-1:-1:-1;;;;;19480:111:59;-1:-1:-1;;;;;19480:111:59;;;;;;-1:-1:-1;;;;;19480:111:59;-1:-1:-1;;;;;19480:111:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19480:111:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19480:111:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19480:111:59;;-1:-1:-1;19622:31:59;19613:5;:40;;;;;;;;;19609:103;;;19689:4;19677:16;;19609:103;19742:29;19733:5;:38;;;;;;;;;19729:99;;;19805:4;19795:14;;19729:99;19858:35;19849:5;:44;;;;;;;;;19845:110;;;19932:4;19917:19;;19845:110;19425:3;;;;;19366:603;;;19989:12;:51;;20012:9;:27;;20032:7;20012:27;;;20024:5;20012:27;19989:51;;;20004:4;19989:51;19982:58;;;;18988:1061;20063:5;20056:12;;4456:1;18861:1214;;;;;;;;;;;;:::o;1618:41::-;;;;;;:::o;10567:578::-;10679:20;;;10647:7;10679:20;;;:7;:20;;;;;:27;10647:7;;;;10679:31;-1:-1:-1;10675:464:59;;;-1:-1:-1;10743:1:59;10726:312;10750:20;;;;;;;:7;:20;;;;;:27;10746:31;;10726:312;;;10806:20;;;:37;:20;;;:7;:20;;;;;:23;;10838:5;;10806:20;10827:1;;10806:23;;;;;;;;;;;;;;;;;;;:28;:37;10802:222;;;10896:20;;;;;;;:7;:20;;;;;:23;;10917:1;;10896:23;;;;;;;;;;;;;;;;;;;;;:28;10948:20;;;;;:7;:20;;;;;;;:23;;10969:1;;10948:23;;;;;;;;;;;;;;:37;:23;;;;;:37;;10865:140;;-1:-1:-1;;;;;;10948:37:59;;-1:-1:-1;10865:140:59;;10802:222;10779:3;;10726:312;;;11071:1;;-1:-1:-1;11071:1:59;;-1:-1:-1;10675:464:59;10567:578;;;;;;:::o;20160:135::-;719:5:64;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;20218:21:59;:28;;-1:-1:-1;;20218:28:59;20242:4;20218:28;;;20261:27;;;20284:3;20261:27;;;;;;;;;;;;;20160:135::o;214:47:19:-;260:1;214:47;:::o;17586:373:59:-;17649:12;17673:44;17693:10;17705:3;17710:6;17673:19;:44::i;:::-;17735:39;17750:10;17762:3;17767:6;17735:14;:39::i;:::-;17727:73;;;;;;;-1:-1:-1;;;;;17727:73:59;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17727:73:59;;;;;;;;;;;;;;;17810:36;17835:10;17810:24;:36::i;:::-;17856:29;17881:3;17856:24;:29::i;:::-;17903:27;17918:3;17923:6;17903:14;:27::i;:::-;17895:36;;;;;;;;-1:-1:-1;17948:4:59;17586:373;;;;:::o;23497:120::-;719:5:64;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;23570:11:59;:40;;-1:-1:-1;;;;;;23570:40:59;-1:-1:-1;;;;;23570:40:59;;;;;;;;;;23497:120::o;204:29:5:-;;;-1:-1:-1;;;;;204:29:5;;:::o;357:40:19:-;396:1;357:40;:::o;14603:429:59:-;719:5:64;;14691:9:59;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;-1:-1:-1;14703:6:59;14686:340;14715:49;14727:18;:6;14738;14727:18;:10;:18;:::i;:::-;14747:9;:16;14715:11;:49::i;:::-;14711:1;:53;14686:340;;;14794:9;:16;14790:20;;14789:56;;;;;14816:23;14826:9;14836:1;14826:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14826:12:59;14816:9;:23::i;:::-;:28;14789:56;14785:231;;;14896:5;14865:14;:28;14880:9;14890:1;14880:12;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14880:12:59;14865:28;;;;;;;;;;;;:36;;-1:-1:-1;;14865:36:59;;;;;;;;;;14934:9;14944:16;;-1:-1:-1;;14944:20:59;;;14934:31;;;;;;;;;;;;;;;;14919:9;:12;;-1:-1:-1;;;;;14934:31:59;;;;14929:1;;14919:12;;;;;;;;;;;;;;;:46;;-1:-1:-1;;;;;;14919:46:59;-1:-1:-1;;;;;14919:46:59;;;;;;;;;;14983:9;:18;;;;;-1:-1:-1;;14983:18:59;;;:::i;:::-;;14785:231;14766:3;;14686:340;;239:36:5;;;-1:-1:-1;;;;;239:36:5;;:::o;303:26:17:-;;;;;;;;;;;;;;;-1:-1:-1;;303:26:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2946:293:69;3106:10;3044:4;3098:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3098:29:69;;;;;;;;;;:46;;3132:11;3098:46;:33;:46;:::i;:::-;3066:10;3058:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3058:29:69;;;;;;;;;;;;:87;;;3156:61;;;;;;3058:29;;3156:61;;;;;;;;;;;-1:-1:-1;3230:4:69;2946:293;;;;:::o;558:28:19:-;;;;:::o;2336:153:69:-;-1:-1:-1;;;;;2459:15:69;;;2435:7;2459:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;2336:153::o;15230:99:59:-;15306:9;:16;15230:99;:::o;1100:103:64:-;719:5;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;1169:29;1188:9;1169:18;:29::i;:::-;1100:103;:::o;503:418:5:-;719:5:64;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;594:16:5;;577:63;;;-1:-1:-1;;;;;577:63:5;;;;;;;;;;;;;;;;;;;;;594:16;;;;-1:-1:-1;;;;;594:16:5;;577:45;;:63;;;;;;;;;;;;;-1:-1:-1;594:16:5;577:63;;;5:2:-1;;;;30:1;27;20:12;5:2;577:63:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;577:63:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;577:63:5;560:14;:80;;-1:-1:-1;;;;;;560:80:5;-1:-1:-1;;;;;560:80:5;;;;;;691:16;;674:70;;;-1:-1:-1;;;;;674:70:5;;577:63;674:70;;;;;;;;;;;;;;;;;;560:80;691:16;;;;;;;674:45;;:70;;;;;577:63;674:70;;;;;-1:-1:-1;691:16:5;674:70;;;5:2:-1;;;;30:1;27;20:12;5:2;674:70:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;674:70:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;674:70:5;650:21;:94;;-1:-1:-1;;;;;;650:94:5;-1:-1:-1;;;;;650:94:5;;;;;;788:16;;771:63;;;-1:-1:-1;;;;;771:63:5;;674:70;771:63;;;;;;;;;;;;;;;;;;;;650:94;788:16;;;;;;;771:45;;:63;;;;;674:70;;771:63;;;;;-1:-1:-1;788:16:5;771:63;;;5:2:-1;;;;30:1;27;20:12;5:2;771:63:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;771:63:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;771:63:5;754:14;:80;;-1:-1:-1;;;;;;754:80:5;-1:-1:-1;;;;;754:80:5;;;;;;873:16;;856:58;;;-1:-1:-1;;;;;856:58:5;;771:63;856:58;;;;;;;;;;;;;;;;;;754:80;873:16;;;;;;;856:45;;:58;;;;;771:63;856:58;;;;;-1:-1:-1;873:16:5;856:58;;;5:2:-1;;;;30:1;27;20:12;5:2;856:58:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;856:58:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;856:58:5;844:9;:70;;-1:-1:-1;;;;;;844:70:5;-1:-1:-1;;;;;844:70:5;;;;;;;;;503:418::o;6491:230:59:-;719:5:64;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;782:14:61;;;;781:15;773:24;;;;;;803:14;:21;;-1:-1:-1;;803:21:61;820:4;803:21;;;6662:52:59;;;;;;;;;;;;;;;;;;;;;;;;6673:14;;6662:52;6689:5;;;;;;6662:52;;6689:5;;;;6662:52;;;;;;;;;;;6696:8;6706:7;6662:10;:52::i;:::-;-1:-1:-1;;837:14:61;:22;;-1:-1:-1;;837:22:61;;;-1:-1:-1;;;6491:230:59:o;11404:148::-;719:5:64;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;11484:9:59;;11504:5;;11478:41;;;;;;-1:-1:-1;;;;;11504:5:59;;;11478:41;;;;;;;;;;;;11484:9;;;;;11478:25;;:41;;;;;;;;;;;;;;11484:9;;11478:41;;;5:2:-1;;;;30:1;27;20:12;5:2;11478:41:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11478:41:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11478:41:59;11470:75;;;;;;;-1:-1:-1;;;;;11470:75:59;;;;;;;;;;;;;;;;;;;;;;;;;;;1505:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1505:59:59;-1:-1:-1;1505:59:59;:::o;25272:295::-;25348:7;396:1:19;25334:4:59;25348:7;;3717:165;3739:20;;;;;;;;:7;:20;;;;;:27;3735:31;;;;3717:165;;;3802:12;:69;;;-1:-1:-1;3819:20:59;;;;;;;;:7;:20;;;;;:23;;3860:10;;3819:23;;;;;;;;;;;;;;;;;:37;:23;;;;;:37;;-1:-1:-1;;;;;3819:37:59;:51;3802:69;3787:84;-1:-1:-1;3768:3:59;;3717:165;;;3895:9;:26;;;;;3909:12;3908:13;3895:26;3891:389;;;3941:22;;;350:1:19;3941:22:59;3937:243;;;3989:20;;;;;;;:7;:20;;;;;:27;:32;:55;;;;-1:-1:-1;4039:5:59;;-1:-1:-1;;;;;4039:5:59;4025:10;:19;3989:55;3981:113;;;;;;;-1:-1:-1;;;;;3981:113:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3937:243;;;4151:5;;-1:-1:-1;;;;;4151:5:59;4137:10;:19;4129:51;;;;;-1:-1:-1;;;;;4129:51:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;3891:389;;;4219:12;4211:58;;;;;;;-1:-1:-1;;;;;4211:58:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25375:19;;-1:-1:-1;;;25367:41:59;;;;;;25440:19;;;25462:1;25440:23;25418:45;;;;25478:46;;;25520:3;25478:46;;;;;;;;;;;;;25541:19;;25534:26;;25272:295;;;;;:::o;13553:685::-;13650:11;;;13649:31;;;13676:3;-1:-1:-1;;;;;13667:12:59;:5;-1:-1:-1;;;;;13667:12:59;;13649:31;13645:68;;;13696:7;;13645:68;13783:14;13793:3;13783:9;:14::i;:::-;:19;13782:44;;;;-1:-1:-1;;;;;;13808:17:59;;;;13782:44;13778:111;;;13858:13;;:20;;13876:1;13858:20;:17;:20;:::i;:::-;13842:13;:36;13778:111;13974:16;13984:5;13974:9;:16::i;:::-;13964:6;:26;13960:93;;;14022:13;;:20;;14040:1;14022:20;:17;:20;:::i;:::-;14006:13;:36;13960:93;-1:-1:-1;;;;;14103:19:59;;;;;;:14;:19;;;;;;;;14102:20;:43;;;;-1:-1:-1;;;;;;14127:17:59;;;;14102:43;14098:133;;;14161:9;27:10:-1;;39:1;23:18;;;45:23;;;14161:19:59;;;;-1:-1:-1;;;;;14161:19:59;;-1:-1:-1;;;;;;14161:19:59;;;;;;;;-1:-1:-1;14194:19:59;;;:14;14161:19;14194;;;;:26;;-1:-1:-1;;14194:26:59;;;;;;13553:685;;;:::o;16136:149::-;-1:-1:-1;;;;;16226:29:59;;;;;;:18;:29;;;;;16208:70;;16257:20;16245:9;16257;:20::i;:::-;16208:17;:70::i;736:470:69:-;842:4;-1:-1:-1;;;;;864:17:69;;;;856:26;;;;;;-1:-1:-1;;;;;906:15:69;;:8;:15;;;;;;;;;;;896:25;;;888:34;;;;;;-1:-1:-1;;;;;946:14:69;;;;;;:7;:14;;;;;;;;961:10;946:26;;;;;;;;936:36;;;928:45;;;;;;-1:-1:-1;;;;;998:15:69;;:8;:15;;;;;;;;;;;:27;;1018:6;998:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;980:15:69;;;:8;:15;;;;;;;;;;;:45;;;;1047:13;;;;;;;:25;;1065:6;1047:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;1031:13:69;;;:8;:13;;;;;;;;;;;:41;;;;1107:14;;;;;:7;:14;;;;;1122:10;1107:26;;;;;;;:38;;1138:6;1107:38;:30;:38;:::i;:::-;-1:-1:-1;;;;;1078:14:69;;;;;;;:7;:14;;;;;;;;1093:10;1078:26;;;;;;;;:67;;;;1156:28;;;;;;;;;;;1078:14;;-1:-1:-1;;;;;;;;;;;1156:28:69;;;;;;;;;;-1:-1:-1;1197:4:69;736:470;;;;;:::o;15852:121:59:-;15911:55;15929:21;15952:13;:11;:13::i;15911:55::-;15852:121::o;1214:123:63:-;1293:5;;;1311:6;;;;1304:14;;;1042:110;1100:7;1122:6;;;;1115:14;;;;-1:-1:-1;1142:5:63;;;1042:110::o;26149:1298:59:-;26271:7;26971:11;26996;27074;26315:19;;26298:13;:36;;26290:45;;;;;;;;26440:18;;26436:55;;;26479:1;26472:8;;;;26436:55;26504:18;;:23;26500:74;;;26550:13;26543:20;;;;26500:74;26618:13;26587:11;26599:1;26587:14;;;;;;;;;;;;;;;;;;;;;;;:27;:44;26583:102;;26654:11;26666:1;26654:14;;;;;;;;;;;;;;;;;;;;:20;;;26647:27;;;;26583:102;26710:18;;26749:13;;26698:11;;-1:-1:-1;;26710:22:59;;;26698:35;;;;;;;;;;;;;;;;:48;;;:64;26694:115;;;26785:13;26778:20;;;;26694:115;26834:18;;26874:13;;26822:11;;-1:-1:-1;;26834:22:59;;;26822:35;;;;;;;;;;;;;;;;:48;;;:65;26818:144;;;26922:18;;26910:11;;-1:-1:-1;;26922:22:59;;;26910:35;;;;;26818:144;27010:18;;26985:1;;-1:-1:-1;;;27010:22:59;;-1:-1:-1;27042:360:59;27055:3;27049;:9;27042:360;;;27102:1;27089:9;;;27088:15;27074:29;;27154:13;27121:11;27133:3;27121:16;;;;;;;;;;;;;;;;;;;;:29;;;:46;27117:117;;;27193:3;27187:9;;27214:5;;27117:117;27283:13;27251:11;27263:3;27251:16;;;;;;;;;;;;;;;;;;;;:29;;;:45;27247:145;;;27322:3;27328:1;27322:7;27316:13;;27247:145;;;27374:3;27368:9;;27247:145;27042:360;;;27418:11;27430:3;27418:16;;;;;;;;;;;;;;;;;;;;:22;;;27411:29;;26149:1298;;;;;;;;;:::o;24871:261::-;24923:10;24945:8;25006:6;24971:1;24956:5;:12;:16;:35;;24990:1;24956:35;;;24975:5;:12;24956:35;24945:46;;25015:1;25006:10;;25001:125;25022:3;25018:1;:7;25001:125;;;25110:1;25106;25100:3;:7;:11;25095:1;:17;25089:1;:24;25076:5;25082:1;25076:8;;;;;;;;;;;;;;;-1:-1:-1;;;25076:8:59;;-1:-1:-1;;;25076:8:59;-1:-1:-1;;;25071:14:59;;:43;25064:3;-1:-1:-1;;;25059:9:59;;:55;-1:-1:-1;;;25052:63:59;25046:69;;25027:3;;;;;;;25001:125;;;24871:261;;;;;:::o;608:321:65:-;671:4;-1:-1:-1;;;;;691:17:65;;;;683:26;;;;;;742:10;733:8;:20;;;;;;;;;;;723:30;;;715:39;;;;;;793:10;784:8;:20;;;;;;;;;;;:32;;809:6;784:32;:24;:32;:::i;:::-;770:10;761:8;:20;;;;;;;;;;;:55;;;;-1:-1:-1;;;;;838:13:65;;;;;;:25;;856:6;838:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;822:13:65;;:8;:13;;;;;;;;;;;;:41;;;;874:33;;;;;;;822:13;;883:10;;-1:-1:-1;;;;;;;;;;;874:33:65;;;;;;;;;-1:-1:-1;920:4:65;608:321;;;;:::o;409:101:62:-;470:7;496:1;492;:5;:13;;504:1;492:13;;;-1:-1:-1;500:1:62;;409:101;-1:-1:-1;409:101:62:o;1338:171:64:-;-1:-1:-1;;;;;1408:23:64;;;;1400:32;;;;;;1464:5;;1443:38;;-1:-1:-1;;;;;1443:38:64;;;;1464:5;;1443:38;;1464:5;;1443:38;1487:5;:17;;-1:-1:-1;;;;;;1487:17:64;-1:-1:-1;;;;;1487:17:64;;;;;;;;;;1338:171::o;7405:1273:59:-;7602:14;;7586:57;;;;;;-1:-1:-1;;;;;7586:57:59;;;;;;;;;7653:28;;;;;;;;;;7602:14;;;;;7586:41;;:57;;;;;7653:28;;7586:57;;;;;;;;7653:28;7602:14;7586:57;;;5:2:-1;;;;30:1;27;20:12;5:2;7586:57:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7586:57:59;;;;7699:14;7653:61;;7743:13;-1:-1:-1;;;;;7743:21:59;;:23;;;;;-1:-1:-1;;;7743:23:59;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7743:23:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7743:23:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7743:23:59;7784:40;:19;;;;;;:7;7743:23;7784:19;;;;:26;7743:23;;-1:-1:-1;1893:2:59;-1:-1:-1;7776:84:59;;;;;-1:-1:-1;;;;;7776:84:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;7891:13;-1:-1:-1;;;;;7891:23:59;;:25;;;;;-1:-1:-1;;;7891:25:59;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7891:25:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7891:25:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7891:25:59;;-1:-1:-1;7934:22:59;;;;7926:81;;;;;-1:-1:-1;;;;;7926:81:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8064:9;;8058:52;;;;;;-1:-1:-1;;;;;8058:52:59;;;;;;;;;;;;;;;8064:9;;;;;8058:24;;:52;;;;;;;;;;;;;;8064:9;;8058:52;;;5:2:-1;;;;30:1;27;20:12;5:2;8058:52:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8058:52:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8058:52:59;8050:100;;;;;;;-1:-1:-1;;;;;8050:100:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8227:27;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8227:20:59;;;;;8248:5;;8227:27;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8227:27:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8227:27:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8227:27:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8227:27:59;8311:9;;8305:41;;;;;;-1:-1:-1;;;;;8305:41:59;;;;;;;;;;;;;;;8227:27;;-1:-1:-1;8311:9:59;;;8305:24;;:41;;;;;8227:27;;8305:41;;;;;;;;8311:9;;8305:41;;;5:2:-1;;;;30:1;27;20:12;5:2;8305:41:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8305:41:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8305:41:59;8297:84;;;;;;;-1:-1:-1;;;;;8297:84:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;8454:13;-1:-1:-1;;;;;8454:21:59;;:23;;;;;-1:-1:-1;;;8454:23:59;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8454:23:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8454:23:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8454:23:59;8487:19;;;;;;;:7;8454:23;8487:19;;;;;;;8512:30;;;;;;;;;;-1:-1:-1;;;;;8512:30:59;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;8487:56:59;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8487:56:59;;;;;;;;;;;8583:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8667:3;8583:88;;;;;;8454:23;;-1:-1:-1;8487:19:59;;8583:88;;;;;;;;;;7405:1273;;;;;;;;;:::o;16492:907::-;16629:19;;:24;16625:61;;;16669:7;;16625:61;16778:19;;:24;16774:247;;;16853:123;;;;;;;;;16900:19;;16853:123;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;16818:172:59;;;;;;;;;;;;;;;;;;;;;;;17004:7;;16774:247;17135:19;;17094;;17081:12;;-1:-1:-1;;17094:23:59;;;17081:37;;;;;;;;;;;;;;;;:50;;;:73;17077:110;;;17170:7;;17077:110;17271:111;;;;;;;;;17314:19;;17271:111;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;17240:152:59;;;;;;;;;;;;;;;;;;;;;;;;16492:907::o;159:859:60:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;159:859:60;;;-1:-1:-1;159:859:60;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;159:859:60;;;;;;;;;;;;;;;;;;;;;;;;",
  "source": "pragma solidity ^0.4.24;\n\nimport \"./SecurityToken.sol\";\n\n\n/**\n* @title SecurityToken V2\n* @notice Mockup of how an upgrade of SecurityToken would look like\n*/\ncontract SecurityTokenV2 is SecurityToken {\n    bytes32 public constant securityTokenVersion = \"0.0.2\";\n\n     /**\n     * @notice Constructor\n     * @param _name Name of the SecurityToken\n     * @param _symbol Symbol of the Token\n     * @param _decimals Decimals for the securityToken\n     * @param _granularity granular level of the token\n     * @param _tokenDetails Details of the token that are stored offchain (IPFS hash)\n     * @param _securityTokenRegistry Contract address of the security token registry\n     */\n    constructor (\n        string _name,\n        string _symbol,\n        uint8 _decimals,\n        uint256 _granularity,\n        string _tokenDetails,\n        address _securityTokenRegistry\n    )\n    public\n    SecurityToken(\n    _name,\n    _symbol,\n    _decimals,\n    _granularity,\n    _tokenDetails,\n    _securityTokenRegistry)\n    {\n    }\n}\n",
  "sourcePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/tokens/SecurityTokenV2.sol",
  "ast": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/tokens/SecurityTokenV2.sol",
    "exportedSymbols": {
      "SecurityTokenV2": [
        22390
      ]
    },
    "id": 22391,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 22359,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:60"
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/tokens/SecurityToken.sol",
        "file": "./SecurityToken.sol",
        "id": 22360,
        "nodeType": "ImportDirective",
        "scope": 22391,
        "sourceUnit": 22358,
        "src": "26:29:60",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 22361,
              "name": "SecurityToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22357,
              "src": "187:13:60",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SecurityToken_$22357",
                "typeString": "contract SecurityToken"
              }
            },
            "id": 22362,
            "nodeType": "InheritanceSpecifier",
            "src": "187:13:60"
          }
        ],
        "contractDependencies": [
          676,
          10048,
          10159,
          22357,
          22413,
          22664,
          22760,
          22794,
          22837,
          22869,
          23116
        ],
        "contractKind": "contract",
        "documentation": "@title SecurityToken V2\n@notice Mockup of how an upgrade of SecurityToken would look like",
        "fullyImplemented": true,
        "id": 22390,
        "linearizedBaseContracts": [
          22390,
          22357,
          676,
          22413,
          10159,
          22664,
          10048,
          22794,
          23116,
          22760,
          22837,
          22869
        ],
        "name": "SecurityTokenV2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 22365,
            "name": "securityTokenVersion",
            "nodeType": "VariableDeclaration",
            "scope": 22390,
            "src": "207:54:60",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 22363,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "207:7:60",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "302e302e32",
              "id": 22364,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "254:7:60",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_b30367effb941b728181f67f3bd24a38a4fff408ee7fb3b074425c9fb5e9be74",
                "typeString": "literal_string \"0.0.2\""
              },
              "value": "0.0.2"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 22388,
              "nodeType": "Block",
              "src": "1009:7:60",
              "statements": []
            },
            "documentation": "@notice Constructor\n@param _name Name of the SecurityToken\n@param _symbol Symbol of the Token\n@param _decimals Decimals for the securityToken\n@param _granularity granular level of the token\n@param _tokenDetails Details of the token that are stored offchain (IPFS hash)\n@param _securityTokenRegistry Contract address of the security token registry",
            "id": 22389,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 22380,
                    "name": "_name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22367,
                    "src": "905:5:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 22381,
                    "name": "_symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22369,
                    "src": "916:7:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 22382,
                    "name": "_decimals",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22371,
                    "src": "929:9:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 22383,
                    "name": "_granularity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22373,
                    "src": "944:12:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 22384,
                    "name": "_tokenDetails",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22375,
                    "src": "962:13:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 22385,
                    "name": "_securityTokenRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22377,
                    "src": "981:22:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 22386,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 22379,
                  "name": "SecurityToken",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22357,
                  "src": "886:13:60",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_SecurityToken_$22357_$",
                    "typeString": "type(contract SecurityToken)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "886:118:60"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22367,
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 22389,
                  "src": "703:12:60",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22366,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "703:6:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22369,
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 22389,
                  "src": "725:14:60",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22368,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "725:6:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22371,
                  "name": "_decimals",
                  "nodeType": "VariableDeclaration",
                  "scope": 22389,
                  "src": "749:15:60",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 22370,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "749:5:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22373,
                  "name": "_granularity",
                  "nodeType": "VariableDeclaration",
                  "scope": 22389,
                  "src": "774:20:60",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22372,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "774:7:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22375,
                  "name": "_tokenDetails",
                  "nodeType": "VariableDeclaration",
                  "scope": 22389,
                  "src": "804:20:60",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22374,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "804:6:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22377,
                  "name": "_securityTokenRegistry",
                  "nodeType": "VariableDeclaration",
                  "scope": 22389,
                  "src": "834:30:60",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22376,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "834:7:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "693:177:60"
            },
            "payable": false,
            "returnParameters": {
              "id": 22387,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1009:0:60"
            },
            "scope": 22390,
            "src": "681:335:60",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 22391,
        "src": "159:859:60"
      }
    ],
    "src": "0:1019:60"
  },
  "legacyAST": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/tokens/SecurityTokenV2.sol",
    "exportedSymbols": {
      "SecurityTokenV2": [
        22390
      ]
    },
    "id": 22391,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 22359,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:60"
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/tokens/SecurityToken.sol",
        "file": "./SecurityToken.sol",
        "id": 22360,
        "nodeType": "ImportDirective",
        "scope": 22391,
        "sourceUnit": 22358,
        "src": "26:29:60",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 22361,
              "name": "SecurityToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22357,
              "src": "187:13:60",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SecurityToken_$22357",
                "typeString": "contract SecurityToken"
              }
            },
            "id": 22362,
            "nodeType": "InheritanceSpecifier",
            "src": "187:13:60"
          }
        ],
        "contractDependencies": [
          676,
          10048,
          10159,
          22357,
          22413,
          22664,
          22760,
          22794,
          22837,
          22869,
          23116
        ],
        "contractKind": "contract",
        "documentation": "@title SecurityToken V2\n@notice Mockup of how an upgrade of SecurityToken would look like",
        "fullyImplemented": true,
        "id": 22390,
        "linearizedBaseContracts": [
          22390,
          22357,
          676,
          22413,
          10159,
          22664,
          10048,
          22794,
          23116,
          22760,
          22837,
          22869
        ],
        "name": "SecurityTokenV2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 22365,
            "name": "securityTokenVersion",
            "nodeType": "VariableDeclaration",
            "scope": 22390,
            "src": "207:54:60",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 22363,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "207:7:60",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "302e302e32",
              "id": 22364,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "254:7:60",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_b30367effb941b728181f67f3bd24a38a4fff408ee7fb3b074425c9fb5e9be74",
                "typeString": "literal_string \"0.0.2\""
              },
              "value": "0.0.2"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 22388,
              "nodeType": "Block",
              "src": "1009:7:60",
              "statements": []
            },
            "documentation": "@notice Constructor\n@param _name Name of the SecurityToken\n@param _symbol Symbol of the Token\n@param _decimals Decimals for the securityToken\n@param _granularity granular level of the token\n@param _tokenDetails Details of the token that are stored offchain (IPFS hash)\n@param _securityTokenRegistry Contract address of the security token registry",
            "id": 22389,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 22380,
                    "name": "_name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22367,
                    "src": "905:5:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 22381,
                    "name": "_symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22369,
                    "src": "916:7:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 22382,
                    "name": "_decimals",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22371,
                    "src": "929:9:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 22383,
                    "name": "_granularity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22373,
                    "src": "944:12:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 22384,
                    "name": "_tokenDetails",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22375,
                    "src": "962:13:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 22385,
                    "name": "_securityTokenRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22377,
                    "src": "981:22:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 22386,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 22379,
                  "name": "SecurityToken",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22357,
                  "src": "886:13:60",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_SecurityToken_$22357_$",
                    "typeString": "type(contract SecurityToken)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "886:118:60"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22367,
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 22389,
                  "src": "703:12:60",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22366,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "703:6:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22369,
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 22389,
                  "src": "725:14:60",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22368,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "725:6:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22371,
                  "name": "_decimals",
                  "nodeType": "VariableDeclaration",
                  "scope": 22389,
                  "src": "749:15:60",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 22370,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "749:5:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22373,
                  "name": "_granularity",
                  "nodeType": "VariableDeclaration",
                  "scope": 22389,
                  "src": "774:20:60",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22372,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "774:7:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22375,
                  "name": "_tokenDetails",
                  "nodeType": "VariableDeclaration",
                  "scope": 22389,
                  "src": "804:20:60",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22374,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "804:6:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22377,
                  "name": "_securityTokenRegistry",
                  "nodeType": "VariableDeclaration",
                  "scope": 22389,
                  "src": "834:30:60",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22376,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "834:7:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "693:177:60"
            },
            "payable": false,
            "returnParameters": {
              "id": 22387,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1009:0:60"
            },
            "scope": 22390,
            "src": "681:335:60",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 22391,
        "src": "159:859:60"
      }
    ],
    "src": "0:1019:60"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-08-21T09:48:12.691Z"
}