code: func canPack(src []uint32, bits, n int) bool {
  	if len(src) < n {
  		return false
  	}
  
  	end := len(src)
  	if n < end {
  		end = n
  	}
  
  	max := uint32((2 << uint32(bits-1)) - 1)
  	for i := 0; i < end; i++ {
  		if src[i] > max {
  			return false
  		}
  	}
  
  	return true
  }
docs: // returns true if the next n values in in can be packed using bits bits
  // per value.