func (s *Set) Pop() [32]byte {
	for item := range s.m {
		delete(s.m, item)
		return item
	}
	return nonExistent
}
Pop deletes and returns an item from the Set. The underlying Set s is
modified. If Set is empty, the zero value is returned.
package b32set
import (
	"fmt"
	"strings"
)
var (
	keyExists   = struct{}{}
	nonExistent [32]byte
)
const maxInt = int(^uint(0) >> 1)
type Set struct {
	m map[[32]byte]struct{}
}
func New(ts ...[32]byte) *Set {
	s := NewWithSize(len(ts))
	s.Add(ts...)
	return s
}
func NewWithSize(size int) *Set {
	return &Set{make(map[[32]byte]struct{}, size)}
}
func (s *Set) Add(items ...[32]byte) {
	for _, item := range items {
		s.m[item] = keyExists
	}
}
func (s *Set) Remove(items ...[32]byte) {
	for _, item := range items {
		delete(s.m, item)
	}
}