private TagReader fromHexString(string str)
{
var chars = str.ToUpper().Where(c => Char.IsDigit(c) || (c >= 'A' && c <= 'F')).ToArray();
str = new string(chars);
var bytes = Enumerable.Range(0, str.Length)
.Where(x => x % 2 == 0)
.Select(x => Convert.ToByte(str.Substring(x, 2), 16))
.ToArray();
var ms = new MemoryStream(bytes);
return new TagReader(ms);
}