code: func newWSClientFilter(addresses []string, unspentOutPoints []wire.OutPoint, params *chaincfg.Params) *wsClientFilter {
  	filter := &wsClientFilter{
  		pubKeyHashes:        map[[ripemd160.Size]byte]struct{}{},
  		scriptHashes:        map[[ripemd160.Size]byte]struct{}{},
  		compressedPubKeys:   map[[33]byte]struct{}{},
  		uncompressedPubKeys: map[[65]byte]struct{}{},
  		otherAddresses:      map[string]struct{}{},
  		unspent:             make(map[wire.OutPoint]struct{}, len(unspentOutPoints)),
  	}
  
  	for _, s := range addresses {
  		filter.addAddressStr(s, params)
  	}
  	for i := range unspentOutPoints {
  		filter.addUnspentOutPoint(&unspentOutPoints[i])
  	}
  
  	return filter
  }
docs: // newWSClientFilter creates a new, empty wsClientFilter struct to be used
  // for a websocket client.
  //
  // NOTE: This extension was ported from github.com/decred/dcrd