function depositBulk (uint colorIndex, uint[] to, uint tokens)
        external 
        notZero(tokens)
    {
        
        require (colorIndex < coloredTokens.length, "Invalid color index");
        
        require (
            msg.sender == coloredTokens[colorIndex].creator,
            "Not authorized to deposit this color"
        );

        
        lock(2, tokens * to.length);

        for(uint i = 0; i < to.length; ++i){
            
            require (to[i] < UID_MAX, "Invalid UID");
            
            require(toy.ownerOf(to[i]) != address(0), "TOY Token does not exist");

            
            coloredTokens[colorIndex].balances[to[i]] += tokens;
            
            emit DepositColor(to[i], colorIndex, tokens);
        }
    }