code: def _get_all_combinations(input_dict):
      input_list = [(k, v) for k, v in input_dict.items()]
      len_list = [len(kv[1]) for kv in input_list]
  
      input_idx = [0] * len(input_dict)
      if len(input_dict) == 0:
          return [{}]
  
      output = []
  
      done = False
      while True:
          new_combination = {
              input_list[i][0]: input_list[i][1][idx]
              for i, idx in enumerate(input_idx)
          }
          output.append(new_combination)
  
          input_idx[-1] += 1
          carry_check_pos = -1
          while True:
              if (
                  input_idx[carry_check_pos]
                  == len_list[carry_check_pos]
              ):
                  if carry_check_pos == -len(input_dict):
                      done = True
                      break
                  input_idx[carry_check_pos] = 0
                  input_idx[carry_check_pos - 1] += 1
                  carry_check_pos -= 1
              else:
                  break
  
          if done:
              break
  
      return output
  
label_desc: Use image node_id 2 for calling a global function with example usage: _get_all_combinations(input_dict) and returns: output, list