code: func DecodeUvarint(in io.Reader) (uint, error) {
  	var abuf [1]byte
  	buf := abuf[:]
  	var n uint
  	var shift uint
  	for shift < 32 {
  		c, err := in.Read(buf)
  		if c == 1 {
  			b := buf[0]
  			n |= (uint(b) & 0x7f) << shift
  			if (b & 0x80) == 0 {
  				return n, nil
  			}
  		}
  		if err != nil {
  			return 0, err
  		}
  		shift += 7
  	}
  	return 0, fmt.Errorf("Bad varint encoding")
  }
docs: // DecodeUvarint decodes the uvarint from the Reader.