function startAuction(address t, uint auctionTime, uint revealDuration, uint checkDuration) external {
        require(msg.sender == operator);
        require(token[t].supported);
        
        require(revealingAuctionCount == 0);
        require(isExecutionTime(t) || token[t].nextAuctionTime == 0);
        require(!token[t].toBeExecuted);
        require(!token[t].activeAuction);
        require(auctionTime > block.timestamp || developmentTiming);
        require(auctionTime <= block.timestamp + 7 * 24 * 3600 || developmentTiming);
        require(revealDuration <= 24 * 3600);
        require(checkDuration <= 24 * 3600);
        require(checkDuration >= 5 * 60);
        token[t].nextAuctionTime = auctionTime;
        token[t].revealDuration = revealDuration;
        token[t].checkDuration = checkDuration;
        token[t].startedReveal = false;
        token[t].startedCheck = false;
        token[t].startedExecute = false;
        uint maxUInt = 0;
        maxUInt = maxUInt - 1;
        token[t].onchainBuyCount = maxUInt;
        token[t].onchainSellCount = maxUInt;
        token[t].publicBuyCount = maxUInt;
        token[t].publicSellCount = maxUInt;
        token[t].activeAuction = true;
        activeAuctionCount++;
    }