code: def get_pagination(
      self,
      total_examples: int,
      page_sz: int,
      page_no: int,
      nav_group_sz: int = 3,
  ) -> Tuple[List[int], List[int], List[int], List[int]]:
      assert page_sz > 0 and page_no > 0
      n_pages = math.ceil(total_examples / page_sz)
      _page_no = min(max(1, page_no), n_pages)
  
      group1_end = min(nav_group_sz, _page_no - nav_group_sz - 1)
      group1 = list(range(1, group1_end + 1))
  
      group2_start = max(1, _page_no - nav_group_sz)
      group2_end = _page_no - 1
      group2 = list(range(group2_start, group2_end + 1))
  
      group3_start = _page_no + 1
      group3_end = min(n_pages, _page_no + nav_group_sz)
      group3 = list(range(group3_start, group3_end + 1))
  
      group4_start = max(
          _page_no + nav_group_sz + 1, n_pages - nav_group_sz + 1
      )
      group4 = list(range(group4_start, n_pages + 1))
  
      return group1, group2, group3, group4
  
imports: from typing import List, Tuple, Iterable
  import math
  import os
  import os.path
  from glob import glob
  import json
  from vizseq._data import VizSeqTaskConfigManager, VizSeqGlobalConfigManager, VizSeqStats, set_g_cred_path, VizSeqTableExporter, VizSeqNGrams, VizSeqTokenization
  from vizseq.scorers import get_scorer_name, get_scorer_ids_and_names
  from .data_view import VizSeqDataPageView, VizSeqPageData
  from .mem_cached_data_getters import _get_src, _get_ref, _get_tag, _get_hypo, _get_scores
label_desc: Use image node_id 13 for calling the VizSeqWebView obj's underlying member method code with example usage: obj.get_pagination(total_examples, page_sz, page_no, nav_group_sz) and returns: group1,  group2,  group3,  group4