def visit_program_point(self, p):
    if (p.kind in ['Edge', 'BlockEntrance', 'BlockExit']):
        color = 'gold3'
    elif (p.kind in ['PreStmtPurgeDeadSymbols', 'PostStmtPurgeDeadSymbols']):
        color = 'red'
    elif (p.kind in ['CallEnter', 'CallExitBegin', 'CallExitEnd']):
        color = ('dodgerblue' if self._dark_mode else 'blue')
    elif (p.kind in ['Statement']):
        color = 'cyan4'
    else:
        color = 'forestgreen'
    self._dump(('<tr><td align="left">%s.</td>' % p.node_id))
    if (p.kind == 'Statement'):
        skip_pretty = ('PurgeDeadSymbols' in p.stmt_point_kind)
        stmt_color = 'cyan3'
        self._dump(('<td align="left" width="0">%s:</td><td align="left" width="0"><font color="%s">%s</font> </td><td align="left"><i>S%s</i></td><td align="left"><font color="%s">%s</font></td><td align="left">%s</td></tr>' % (self._make_sloc(p.loc), color, (('%s (%s)' % (p.stmt_kind, p.cast_kind)) if (p.cast_kind is not None) else p.stmt_kind), p.stmt_id, stmt_color, p.stmt_point_kind, (self._short_pretty(p.pretty) if (not skip_pretty) else ''))))
    elif (p.kind == 'Edge'):
        self._dump(('<td width="0"></td><td align="left" width="0"><font color="%s">%s</font></td><td align="left">[B%d] -\\> [B%d]</td></tr>' % (color, 'BlockEdge', p.src_id, p.dst_id)))
    elif (p.kind == 'BlockEntrance'):
        self._dump(('<td width="0"></td><td align="left" width="0"><font color="%s">%s</font></td><td align="left">[B%d]</td></tr>' % (color, p.kind, p.block_id)))
    else:
        self._dump(('<td width="0"></td><td align="left" width="0" colspan="2"><font color="%s">%s</font></td></tr>' % (color, p.kind)))
    if (p.tag is not None):
        self._dump(('<tr><td width="0"></td><td width="0"></td><td colspan="3" align="left"><b>Tag: </b> <font color="crimson">%s</font></td></tr>' % p.tag))
    if p.has_report:
        self._dump('<tr><td width="0"></td><td width="0"></td><td colspan="3" align="left"><font color="red"><b>Bug Report Attached</b></font></td></tr>')
    if p.is_sink:
        self._dump('<tr><td width="0"></td><td width="0"></td><td colspan="3" align="left"><font color="cornflowerblue"><b>Sink Node</b></font></td></tr>')
def visit_program_point(self, p):
    if (p.kind in ['Edge', 'BlockEntrance', 'BlockExit']):
        color = 'gold3'
    elif (p.kind in ['PreStmtPurgeDeadSymbols', 'PostStmtPurgeDeadSymbols']):
        color = 'red'
    elif (p.kind in ['CallEnter', 'CallExitBegin', 'CallExitEnd']):
        color = ('dodgerblue' if self._dark_mode else 'blue')
    elif (p.kind in ['Statement']):
        color = 'cyan4'
    else:
        color = 'forestgreen'
    self._dump(('<tr><td align="left">%s.</td>' % p.node_id))
    if (p.kind == 'Statement'):
        skip_pretty = ('PurgeDeadSymbols' in p.stmt_point_kind)
        stmt_color = 'cyan3'
        self._dump(('<td align="left" width="0">%s:</td><td align="left" width="0"><font color="%s">%s</font> </td><td align="left"><i>S%s</i></td><td align="left"><font color="%s">%s</font></td><td align="left">%s</td></tr>' % (self._make_sloc(p.loc), color, (('%s (%s)' % (p.stmt_kind, p.cast_kind)) if (p.cast_kind is not None) else p.stmt_kind), p.stmt_id, stmt_color, p.stmt_point_kind, (self._short_pretty(p.pretty) if (not skip_pretty) else ))))
    elif (p.kind == 'Edge'):
        self._dump(('<td width="0"></td><td align="left" width="0"><font color="%s">%s</font></td><td align="left">[B%d] -\\> [B%d]</td></tr>' % (color, 'BlockEdge', p.src_id, p.dst_id)))
    elif (p.kind == 'BlockEntrance'):
        self._dump(('<td width="0"></td><td align="left" width="0"><font color="%s">%s</font></td><td align="left">[B%d]</td></tr>' % (color, p.kind, p.block_id)))
    else:
        self._dump(('<td width="0"></td><td align="left" width="0" colspan="2"><font color="%s">%s</font></td></tr>' % (color, p.kind)))
    if (p.tag is not None):
        self._dump(('<tr><td width="0"></td><td width="0"></td><td colspan="3" align="left"><b>Tag: </b> <font color="crimson">%s</font></td></tr>' % p.tag))
    if p.has_report:
        self._dump('<tr><td width="0"></td><td width="0"></td><td colspan="3" align="left"><font color="red"><b>Bug Report Attached</b></font></td></tr>')
    if p.is_sink:
        self._dump('<tr><td width="0"></td><td width="0"></td><td colspan="3" align="left"><font color="cornflowerblue"><b>Sink Node</b></font></td></tr>')