text:
#include "defs.h"
#include "arch-utils.h"
#include <ctype.h>
#include <signal.h>
#include <sys/time.h>
#include <time.h>
#include "command.h"
#include "gdbcmd.h"
#include "symtab.h"
#include "block.h"
#include "gdbtypes.h"
#include "demangle.h"
#include "gdbcore.h"
#include "expression.h"		/* For language.h */
#include "language.h"
#include "symfile.h"
#include "objfiles.h"
#include "value.h"
#include "gdb_assert.h"
#include "top.h"
#include "timeval-utils.h"
#include "maint.h"

#include "cli/cli-decode.h"
#include "cli/cli-utils.h"
#include "cli/cli-setshow.h"

extern void _initialize_maint_cmds (void);

static void maintenance_command (char *, int);

static void maintenance_internal_error (char *args, int from_tty);

static void maintenance_demangle (char *, int);

static void maintenance_time_display (char *, int);

static void maintenance_space_display (char *, int);

static void maintenance_info_command (char *, int);

static void maintenance_info_sections (char *, int);

static void maintenance_print_command (char *, int);

static void maintenance_do_deprecate (char *, int);

/* Set this to the maximum number of seconds to wait instead of waiting forever
   in target_wait().  If this timer times out, then it generates an error and
   the command is aborted.  This replaces most of the need for timeouts in the
   GDB test suite, and makes it possible to distinguish between a hung target
   and one with slow communications.  */

int watchdog = 0;
static void
show_watchdog (struct ui_file *file, int from_tty,
	       struct cmd_list_element *c, const char *value)
{
  fprintf_filtered (file, _("Watchdog timer is %s.\n"), value);
}

/* Access the maintenance subcommands.  */

static void
maintenance_command (char *args, int from_tty)
{
  printf_unfiltered (_("\"maintenance\" must be followed by "
		       "the name of a maintenance command.\n"));
  help_list (maintenancelist, "maintenance ", -1, gdb_stdout);
}

#ifndef _WIN32
static void
maintenance_dump_me (char *args, int from_tty)
{
  if (query (_("Should GDB dump core? ")))
    {
#ifdef __DJGPP__
      /* SIGQUIT by default is ignored, so use SIGABRT instead.  */
      signal (SIGABRT, SIG_DFL);
      kill (getpid (), SIGABRT);
#else
      signal (SIGQUIT, SIG_DFL);
      kill (getpid (), SIGQUIT);
#endif
    }
}
#endif

/* Stimulate the internal error mechanism that GDB uses when an
   internal problem is detected.  Allows testing of the mechanism.
   Also useful when the user wants to drop a core file but not exit
   GDB.  */

static void
maintenance_internal_error (char *args, int from_tty)
{
  internal_error (__FILE__, __LINE__, "%s", (args == NULL ? "" : args));
}

/* Stimulate the internal error mechanism that GDB uses when an
   internal problem is detected.  Allows testing of the mechanism.
   Also useful when the user wants to drop a core file but not exit
   GDB.  */

static void
maintenance_internal_warning (char *args, int from_tty)
{
  internal_warning (__FILE__, __LINE__, "%s", (args == NULL ? "" : args));
}

/* Someday we should allow demangling for things other than just
   explicit strings.  For example, we might want to be able to specify
   the address of a string in either GDB's process space or the
   debuggee's process space, and have gdb fetch and demangle that
   string.  If we have a char* pointer "ptr" that points to a string,
   we might want to be able to given just the name and have GDB
   demangle and print what it points to, etc.  (FIXME)  */

static void
maintenance_demangle (char *args, int from_tty)
{
  char *demangled;

  if (args == NULL || *args == '\0')
    {
      printf_unfiltered (_("\"maintenance demangle\" takes "
			   "an argument to demangle.\n"));
    }
  else
    {
      demangled = language_demangle (current_language, args,
				     DMGL_ANSI | DMGL_PARAMS);
      if (demangled != NULL)
	{
	  printf_unfiltered ("%s\n", demangled);
	  xfree (demangled);
	}
      else
	{
	  printf_unfiltered (_("Can't demangle \"%s\"\n"), args);
	}
    }
}

static void
maintenance_time_display (char *args, int from_tty)
{
  if (args == NULL || *args == '\0')
    printf_unfiltered (_("\"maintenance time\" takes a numeric argument.\n"));
  else
    set_per_command_time (strtol (args, NULL, 10));
}

static void
maintenance_space_display (char *args, int from_tty)
{
  if (args == NULL || *args == '\0')
    printf_unfiltered ("\"maintenance space\" takes a numeric argument.\n");
  else
    set_per_command_space (strtol (args, NULL, 10));
}

/* The "maintenance info" command is defined as a prefix, with
   allow_unknown 0.  Therefore, its own definition is called only for
   "maintenance info" with no args.  */

static void
maintenance_info_command (char *arg, int from_tty)
{
  printf_unfiltered (_("\"maintenance info\" must be followed "
		       "by the name of an info command.\n"));
  help_list (maintenanceinfolist, "maintenance info ", -1, gdb_stdout);
}

/* Mini tokenizing lexer for 'maint info sections' command.  */

static int
match_substring (const char *string, const char *substr)
{
  int substr_len = strlen(substr);
  const char *tok;

  while ((tok = strstr (string, substr)) != NULL)
    {
      /* Got a partial match.  Is it a whole word?  */
      if (tok == string
	  || tok[-1] == ' '
	  || tok[-1] == '\t')
      {
	/* Token is delimited at the front...  */
	if (tok[substr_len] == ' '
	    || tok[substr_len] == '\t'
	    || tok[substr_len] == '\0')
	{
	  /* Token is delimited at the rear.  Got a whole-word match.  */
	  return 1;
	}
      }
      /* Token didn't match as a whole word.  Advance and try again.  */
      string = tok + 1;
    }
  return 0;
}

static int
match_bfd_flags (char *string, flagword flags)
{
  if (flags & SEC_ALLOC)
    if (match_substring (string, "ALLOC"))
      return 1;
  if (flags & SEC_LOAD)
    if (match_substring (string, "LOAD"))
      return 1;
  if (flags & SEC_RELOC)
    if (match_substring (string, "RELOC"))
      return 1;
  if (flags & SEC_READONLY)
    if (match_substring (string, "READONLY"))
      return 1;
  if (flags & SEC_CODE)
    if (match_substring (string, "CODE"))
      return 1;
  if (flags & SEC_DATA)
    if (match_substring (string, "DATA"))
      return 1;
  if (flags & SEC_ROM)
    if (match_substring (string, "ROM"))
      return 1;
  if (flags & SEC_CONSTRUCTOR)
    if (match_substring (string, "CONSTRUCTOR"))
      return 1;
  if (flags & SEC_HAS_CONTENTS)
    if (match_substring (string, "HAS_CONTENTS"))
      return 1;
  if (flags & SEC_NEVER_LOAD)
    if (match_substring (string, "NEVER_LOAD"))
      return 1;
  if (flags & SEC_COFF_SHARED_LIBRARY)
    if (match_substring (string, "COFF_SHARED_LIBRARY"))
      return 1;
  if (flags & SEC_IS_COMMON)
    if (match_substring (string, "IS_COMMON"))
      return 1;

  return 0;
}

static void
print_bfd_flags (flagword flags)
{
  if (flags & SEC_ALLOC)
    printf_filtered (" ALLOC");
  if (flags & SEC_LOAD)
    printf_filtered (" LOAD");
  if (flags & SEC_RELOC)
    printf_filtered (" RELOC");
  if (flags & SEC_READONLY)
    printf_filtered (" READONLY");
  if (flags & SEC_CODE)
    printf_filtered (" CODE");
  if (flags & SEC_DATA)
    printf_filtered (" DATA");
  if (flags & SEC_ROM)
    printf_filtered (" ROM");
  if (flags & SEC_CONSTRUCTOR)
    printf_filtered (" CONSTRUCTOR");
  if (flags & SEC_HAS_CONTENTS)
    printf_filtered (" HAS_CONTENTS");
  if (flags & SEC_NEVER_LOAD)
    printf_filtered (" NEVER_LOAD");
  if (flags & SEC_COFF_SHARED_LIBRARY)
    printf_filtered (" COFF_SHARED_LIBRARY");
  if (flags & SEC_IS_COMMON)
    printf_filtered (" IS_COMMON");
}

static void
maint_print_section_info (const char *name, flagword flags,
			  CORE_ADDR addr, CORE_ADDR endaddr,
			  unsigned long filepos, int addr_size)
{
  printf_filtered ("    %s", hex_string_custom (addr, addr_size));
  printf_filtered ("->%s", hex_string_custom (endaddr, addr_size));
  printf_filtered (" at %s",
		   hex_string_custom ((unsigned long) filepos, 8));
  printf_filtered (": %s", name);
  print_bfd_flags (flags);
  printf_filtered ("\n");
}

static void
print_bfd_section_info (bfd *abfd,
			asection *asect,
			void *arg)
{
  flagword flags = bfd_get_section_flags (abfd, asect);
  const char *name = bfd_section_name (abfd, asect);

  if (arg == NULL || *((char *) arg) == '\0'
      || match_substring ((char *) arg, name)
      || match_bfd_flags ((char *) arg, flags))
    {
      struct gdbarch *gdbarch = gdbarch_from_bfd (abfd);
      int addr_size = gdbarch_addr_bit (gdbarch) / 8;
      CORE_ADDR addr, endaddr;

      addr = bfd_section_vma (abfd, asect);
      endaddr = addr + bfd_section_size (abfd, asect);
      printf_filtered (" [%d] ", gdb_bfd_section_index (abfd, asect));
      maint_print_section_info (name, flags, addr, endaddr,
				asect->filepos, addr_size);
    }
}

static void
print_objfile_section_info (bfd *abfd,
			    struct obj_section *asect,
			    char *string)
{
  flagword flags = bfd_get_section_flags (abfd, asect->the_bfd_section);
  const char *name = bfd_section_name (abfd, asect->the_bfd_section);

  if (string == NULL || *string == '\0'
      || match_substring (string, name)
      || match_bfd_flags (string, flags))
    {
      struct gdbarch *gdbarch = gdbarch_from_bfd (abfd);
      int addr_size = gdbarch_addr_bit (gdbarch) / 8;

      maint_print_section_info (name, flags,
				obj_section_addr (asect),
				obj_section_endaddr (asect),
				asect->the_bfd_section->filepos,
				addr_size);
    }
}

static void
maintenance_info_sections (char *arg, int from_tty)
{
  if (exec_bfd)
    {
      printf_filtered (_("Exec file:\n"));
      printf_filtered ("    `%s', ", bfd_get_filename (exec_bfd));
      wrap_here ("        ");
      printf_filtered (_("file type %s.\n"), bfd_get_target (exec_bfd));
      if (arg && *arg && match_substring (arg, "ALLOBJ"))
	{
	  struct objfile *ofile;
	  struct obj_section *osect;

	  /* Only this function cares about the 'ALLOBJ' argument;
	     if 'ALLOBJ' is the only argument, discard it rather than
	     passing it down to print_objfile_section_info (which
	     wouldn't know how to handle it).  */
	  if (strcmp (arg, "ALLOBJ") == 0)
	    arg = NULL;

	  ALL_OBJFILES (ofile)
	    {
	      printf_filtered (_("  Object file: %s\n"),
			       bfd_get_filename (ofile->obfd));
	      ALL_OBJFILE_OSECTIONS (ofile, osect)
		{
		  print_objfile_section_info (ofile->obfd, osect, arg);
		}
	    }
	}
      else
	bfd_map_over_sections (exec_bfd, print_bfd_section_info, arg);
    }

  if (core_bfd)
    {
      printf_filtered (_("Core file:\n"));
      printf_filtered ("    `%s', ", bfd_get_filename (core_bfd));
      wrap_here ("        ");
      printf_filtered (_("file type %s.\n"), bfd_get_target (core_bfd));
      bfd_map_over_sections (core_bfd, print_bfd_section_info, arg);
    }
}

static void
maintenance_print_statistics (char *args, int from_tty)
{
  print_objfile_statistics ();
  print_symbol_bcache_statistics ();
}

static void
maintenance_print_architecture (char *args, int from_tty)
{
  struct gdbarch *gdbarch = get_current_arch ();

  if (args == NULL)
    gdbarch_dump (gdbarch, gdb_stdout);
  else
    {
      struct cleanup *cleanups;
      struct ui_file *file = gdb_fopen (args, "w");

      if (file == NULL)
	perror_with_name (_("maintenance print architecture"));
      cleanups = make_cleanup_ui_file_delete (file);
      gdbarch_dump (gdbarch, file);
      do_cleanups (cleanups);
    }
}

/* The "maintenance print" command is defined as a prefix, with
   allow_unknown 0.  Therefore, its own definition is called only for
   "maintenance print" with no args.  */

static void
maintenance_print_command (char *arg, int from_tty)
{
  printf_unfiltered (_("\"maintenance print\" must be followed "
		       "by the name of a print command.\n"));
  help_list (maintenanceprintlist, "maintenance print ", -1, gdb_stdout);
}

/* The "maintenance translate-address" command converts a section and address
   to a symbol.  This can be called in two ways:
   maintenance translate-address <secname> <addr>
   or   maintenance translate-address <addr>.  */

static void
maintenance_translate_address (char *arg, int from_tty)
{
  CORE_ADDR address;
  struct obj_section *sect;
  char *p;
  struct bound_minimal_symbol sym;
  struct objfile *objfile;

  if (arg == NULL || *arg == 0)
    error (_("requires argument (address or section + address)"));

  sect = NULL;
  p = arg;

  if (!isdigit (*p))
    {				/* See if we have a valid section name.  */
      while (*p && !isspace (*p))	/* Find end of section name.  */
	p++;
      if (*p == '\000')		/* End of command?  */
	error (_("Need to specify <section-name> and <address>"));
      *p++ = '\000';
      p = skip_spaces (p);

      ALL_OBJSECTIONS (objfile, sect)
      {
	if (strcmp (sect->the_bfd_section->name, arg) == 0)
	  break;
      }

      if (!objfile)
	error (_("Unknown section %s."), arg);
    }

  address = parse_and_eval_address (p);

  if (sect)
    sym = lookup_minimal_symbol_by_pc_section (address, sect);
  else
    sym = lookup_minimal_symbol_by_pc (address);

  if (sym.minsym)
    {
      const char *symbol_name = SYMBOL_PRINT_NAME (sym.minsym);
      const char *symbol_offset
	= pulongest (address - SYMBOL_VALUE_ADDRESS (sym.minsym));

      sect = SYMBOL_OBJ_SECTION(sym.objfile, sym.minsym);
      if (sect != NULL)
	{
	  const char *section_name;
	  const char *obj_name;

	  gdb_assert (sect->the_bfd_section && sect->the_bfd_section->name);
	  section_name = sect->the_bfd_section->name;

	  gdb_assert (sect->objfile && objfile_name (sect->objfile));
	  obj_name = objfile_name (sect->objfile);

	  if (MULTI_OBJFILE_P ())
	    printf_filtered (_("%s + %s in section %s of %s\n"),
			     symbol_name, symbol_offset,
			     section_name, obj_name);
	  else
	    printf_filtered (_("%s + %s in section %s\n"),
			     symbol_name, symbol_offset, section_name);
	}
      else
	printf_filtered (_("%s + %s\n"), symbol_name, symbol_offset);
    }
  else if (sect)
    printf_filtered (_("no symbol at %s:%s\n"),
		     sect->the_bfd_section->name, hex_string (address));
  else
    printf_filtered (_("no symbol at %s\n"), hex_string (address));

  return;
}

/* When a command is deprecated the user will be warned the first time
   the command is used.  If possible, a replacement will be
   offered.  */

static void
maintenance_deprecate (char *args, int from_tty)
{
  if (args == NULL || *args == '\0')
    {
      printf_unfiltered (_("\"maintenance deprecate\" takes an argument,\n\
the command you want to deprecate, and optionally the replacement command\n\
enclosed in quotes.\n"));
    }

  maintenance_do_deprecate (args, 1);

}

static void
maintenance_undeprecate (char *args, int from_tty)
{
  if (args == NULL || *args == '\0')
    {
      printf_unfiltered (_("\"maintenance undeprecate\" takes an argument, \n\
the command you want to undeprecate.\n"));
    }

  maintenance_do_deprecate (args, 0);

}

/* You really shouldn't be using this.  It is just for the testsuite.
   Rather, you should use deprecate_cmd() when the command is created
   in _initialize_blah().

   This function deprecates a command and optionally assigns it a
   replacement.  */

static void
maintenance_do_deprecate (char *text, int deprecate)
{
  struct cmd_list_element *alias = NULL;
  struct cmd_list_element *prefix_cmd = NULL;
  struct cmd_list_element *cmd = NULL;

  char *start_ptr = NULL;
  char *end_ptr = NULL;
  int len;
  char *replacement = NULL;

  if (text == NULL)
    return;

  if (!lookup_cmd_composition (text, &alias, &prefix_cmd, &cmd))
    {
      printf_filtered (_("Can't find command '%s' to deprecate.\n"), text);
      return;
    }

  if (deprecate)
    {
      /* Look for a replacement command.  */
      start_ptr = strchr (text, '\"');
      if (start_ptr != NULL)
	{
	  start_ptr++;
	  end_ptr = strrchr (start_ptr, '\"');
	  if (end_ptr != NULL)
	    {
	      len = end_ptr - start_ptr;
	      start_ptr[len] = '\0';
	      replacement = xstrdup (start_ptr);
	    }
	}
    }

  if (!start_ptr || !end_ptr)
    replacement = NULL;

  /* If they used an alias, we only want to deprecate the alias.

     Note the MALLOCED_REPLACEMENT test.  If the command's replacement
     string was allocated at compile time we don't want to free the
     memory.  */
  if (alias)
    {
      if (alias->flags & MALLOCED_REPLACEMENT)
	xfree (alias->replacement);

      if (deprecate)
	alias->flags |= (DEPRECATED_WARN_USER | CMD_DEPRECATED);
      else
	alias->flags &= ~(DEPRECATED_WARN_USER | CMD_DEPRECATED);
      alias->replacement = replacement;
      alias->flags |= MALLOCED_REPLACEMENT;
      return;
    }
  else if (cmd)
    {
      if (cmd->flags & MALLOCED_REPLACEMENT)
	xfree (cmd->replacement);

      if (deprecate)
	cmd->flags |= (DEPRECATED_WARN_USER | CMD_DEPRECATED);
      else
	cmd->flags &= ~(DEPRECATED_WARN_USER | CMD_DEPRECATED);
      cmd->replacement = replacement;
      cmd->flags |= MALLOCED_REPLACEMENT;
      return;
    }
  xfree (replacement);
}

/* Maintenance set/show framework.  */

struct cmd_list_element *maintenance_set_cmdlist;
struct cmd_list_element *maintenance_show_cmdlist;

static void
maintenance_set_cmd (char *args, int from_tty)
{
  printf_unfiltered (_("\"maintenance set\" must be followed "
		       "by the name of a set command.\n"));
  help_list (maintenance_set_cmdlist, "maintenance set ", -1, gdb_stdout);
}

static void
maintenance_show_cmd (char *args, int from_tty)
{
  cmd_show_list (maintenance_show_cmdlist, from_tty, "");
}

/* Profiling support.  */

static int maintenance_profile_p;
static void
show_maintenance_profile_p (struct ui_file *file, int from_tty,
			    struct cmd_list_element *c, const char *value)
{
  fprintf_filtered (file, _("Internal profiling is %s.\n"), value);
}

#ifdef HAVE__ETEXT
extern char _etext;
#define TEXTEND &_etext
#elif defined (HAVE_ETEXT)
extern char etext;
#define TEXTEND &etext
#endif

#if defined (HAVE_MONSTARTUP) && defined (HAVE__MCLEANUP) && defined (TEXTEND)

static int profiling_state;

static void
mcleanup_wrapper (void)
{
  extern void _mcleanup (void);

  if (profiling_state)
    _mcleanup ();
}

static void
maintenance_set_profile_cmd (char *args, int from_tty,
			     struct cmd_list_element *c)
{
  if (maintenance_profile_p == profiling_state)
    return;

  profiling_state = maintenance_profile_p;

  if (maintenance_profile_p)
    {
      static int profiling_initialized;

      extern void monstartup (unsigned long, unsigned long);
      extern int main();

      if (!profiling_initialized)
	{
	  atexit (mcleanup_wrapper);
	  profiling_initialized = 1;
	}

      /* "main" is now always the first function in the text segment, so use
	 its address for monstartup.  */
      monstartup ((unsigned long) &main, (unsigned long) TEXTEND);
    }
  else
    {
      extern void _mcleanup (void);

      _mcleanup ();
    }
}
#else
static void
maintenance_set_profile_cmd (char *args, int from_tty,
			     struct cmd_list_element *c)
{
  error (_("Profiling support is not available on this system."));
}
#endif

/* If nonzero, display time usage both at startup and for each command.  */

static int per_command_time;

/* If nonzero, display space usage both at startup and for each command.  */

static int per_command_space;

/* If nonzero, display basic symtab stats for each command.  */

static int per_command_symtab;

/* mt per-command commands.  */

static struct cmd_list_element *per_command_setlist;
static struct cmd_list_element *per_command_showlist;

/* Records a run time and space usage to be used as a base for
   reporting elapsed time or change in space.  */

struct cmd_stats
{
  /* Zero if the saved time is from the beginning of GDB execution.
     One if from the beginning of an individual command execution.  */
  int msg_type;
  /* Track whether the stat was enabled at the start of the command
     so that we can avoid printing anything if it gets turned on by
     the current command.  */
  int time_enabled : 1;
  int space_enabled : 1;
  int symtab_enabled : 1;
  long start_cpu_time;
  struct timeval start_wall_time;
  long start_space;
  /* Total number of symtabs (over all objfiles).  */
  int start_nr_symtabs;
  /* Of those, a count of just the primary ones.  */
  int start_nr_primary_symtabs;
  /* Total number of blocks.  */
  int start_nr_blocks;
};

/* Set whether to display time statistics to NEW_VALUE
   (non-zero means true).  */

void
set_per_command_time (int new_value)
{
  per_command_time = new_value;
}

/* Set whether to display space statistics to NEW_VALUE
   (non-zero means true).  */

void
set_per_command_space (int new_value)
{
  per_command_space = new_value;
}

/* Count the number of symtabs and blocks.  */

static void
count_symtabs_and_blocks (int *nr_symtabs_ptr, int *nr_primary_symtabs_ptr,
			  int *nr_blocks_ptr)
{
  struct objfile *o;
  struct symtab *s;
  int nr_symtabs = 0;
  int nr_primary_symtabs = 0;
  int nr_blocks = 0;

  ALL_SYMTABS (o, s)
    {
      ++nr_symtabs;
      if (s->primary)
	{
	  ++nr_primary_symtabs;
	  nr_blocks += BLOCKVECTOR_NBLOCKS (BLOCKVECTOR (s));
	}
    }

  *nr_symtabs_ptr = nr_symtabs;
  *nr_primary_symtabs_ptr = nr_primary_symtabs;
  *nr_blocks_ptr = nr_blocks;
}

/* As indicated by display_time and display_space, report GDB's elapsed time
   and space usage from the base time and space provided in ARG, which
   must be a pointer to a struct cmd_stat.  This function is intended
   to be called as a cleanup.  */

static void
report_command_stats (void *arg)
{
  struct cmd_stats *start_stats = (struct cmd_stats *) arg;
  int msg_type = start_stats->msg_type;

  if (start_stats->time_enabled)
    {
      long cmd_time = get_run_time () - start_stats->start_cpu_time;
      struct timeval now_wall_time, delta_wall_time, wait_time;

      gettimeofday (&now_wall_time, NULL);
      timeval_sub (&delta_wall_time,
		   &now_wall_time, &start_stats->start_wall_time);

      /* Subtract time spend in prompt_for_continue from walltime.  */
      wait_time = get_prompt_for_continue_wait_time ();
      timeval_sub (&delta_wall_time, &delta_wall_time, &wait_time);

      printf_unfiltered (msg_type == 0
			 ? _("Startup time: %ld.%06ld (cpu), %ld.%06ld (wall)\n")
			 : _("Command execution time: %ld.%06ld (cpu), %ld.%06ld (wall)\n"),
			 cmd_time / 1000000, cmd_time % 1000000,
			 (long) delta_wall_time.tv_sec,
			 (long) delta_wall_time.tv_usec);
    }

  if (start_stats->space_enabled)
    {
#ifdef HAVE_SBRK
      char *lim = (char *) sbrk (0);

      long space_now = lim - lim_at_start;
      long space_diff = space_now - start_stats->start_space;

      printf_unfiltered (msg_type == 0
			 ? _("Space used: %ld (%s%ld during startup)\n")
			 : _("Space used: %ld (%s%ld for this command)\n"),
			 space_now,
			 (space_diff >= 0 ? "+" : ""),
			 space_diff);
#endif
    }

  if (start_stats->symtab_enabled)
    {
      int nr_symtabs, nr_primary_symtabs, nr_blocks;

      count_symtabs_and_blocks (&nr_symtabs, &nr_primary_symtabs, &nr_blocks);
      printf_unfiltered (_("#symtabs: %d (+%d),"
			   " #primary symtabs: %d (+%d),"
			   " #blocks: %d (+%d)\n"),
			 nr_symtabs,
			 nr_symtabs - start_stats->start_nr_symtabs,
			 nr_primary_symtabs,
			 nr_primary_symtabs - start_stats->start_nr_primary_symtabs,
			 nr_blocks,
			 nr_blocks - start_stats->start_nr_blocks);
    }
}

/* Create a cleanup that reports time and space used since its creation.
   MSG_TYPE is zero for gdb startup, otherwise it is one(1) to report
   data for individual commands.  */

struct cleanup *
make_command_stats_cleanup (int msg_type)
{
  struct cmd_stats *new_stat;

  /* Early exit if we're not reporting any stats.  */
  if (!per_command_time
      && !per_command_space
      && !per_command_symtab)
    return make_cleanup (null_cleanup, 0);

  new_stat = XZALLOC (struct cmd_stats);

  new_stat->msg_type = msg_type;

  if (per_command_space)
    {
#ifdef HAVE_SBRK
      char *lim = (char *) sbrk (0);
      new_stat->start_space = lim - lim_at_start;
      new_stat->space_enabled = 1;
#endif
    }

  if (per_command_time)
    {
      new_stat->start_cpu_time = get_run_time ();
      gettimeofday (&new_stat->start_wall_time, NULL);
      new_stat->time_enabled = 1;
    }

  if (per_command_symtab)
    {
      int nr_symtabs, nr_primary_symtabs, nr_blocks;

      count_symtabs_and_blocks (&nr_symtabs, &nr_primary_symtabs, &nr_blocks);
      new_stat->start_nr_symtabs = nr_symtabs;
      new_stat->start_nr_primary_symtabs = nr_primary_symtabs;
      new_stat->start_nr_blocks = nr_blocks;
      new_stat->symtab_enabled = 1;
    }

  /* Initalize timer to keep track of how long we waited for the user.  */
  reset_prompt_for_continue_wait_time ();

  return make_cleanup_dtor (report_command_stats, new_stat, xfree);
}

/* Handle unknown "mt set per-command" arguments.
   In this case have "mt set per-command on|off" affect every setting.  */

static void
set_per_command_cmd (char *args, int from_tty)
{
  struct cmd_list_element *list;
  size_t length;
  int val;

  val = parse_cli_boolean_value (args);
  if (val < 0)
    error (_("Bad value for 'mt set per-command no'."));

  for (list = per_command_setlist; list != NULL; list = list->next)
    if (list->var_type == var_boolean)
      {
	gdb_assert (list->type == set_cmd);
	do_set_command (args, from_tty, list);
      }
}

/* Command "show per-command" displays summary of all the current
   "show per-command " settings.  */

static void
show_per_command_cmd (char *args, int from_tty)
{
  cmd_show_list (per_command_showlist, from_tty, "");
}

void
_initialize_maint_cmds (void)
{
  add_prefix_cmd ("maintenance", class_maintenance, maintenance_command, _("\
Commands for use by GDB maintainers.\n\
Includes commands to dump specific internal GDB structures in\n\
a human readable form, to cause GDB to deliberately dump core,\n\
to test internal functions such as the C++/ObjC demangler, etc."),
		  &maintenancelist, "maintenance ", 0,
		  &cmdlist);

  add_com_alias ("mt", "maintenance", class_maintenance, 1);

  add_prefix_cmd ("info", class_maintenance, maintenance_info_command, _("\
Commands for showing internal info about the program being debugged."),
		  &maintenanceinfolist, "maintenance info ", 0,
		  &maintenancelist);
  add_alias_cmd ("i", "info", class_maintenance, 1, &maintenancelist);

  add_cmd ("sections", class_maintenance, maintenance_info_sections, _("\
List the BFD sections of the exec and core files. \n\
Arguments may be any combination of:\n\
	[one or more section names]\n\
	ALLOC LOAD RELOC READONLY CODE DATA ROM CONSTRUCTOR\n\
	HAS_CONTENTS NEVER_LOAD COFF_SHARED_LIBRARY IS_COMMON\n\
Sections matching any argument will be listed (no argument\n\
implies all sections).  In addition, the special argument\n\
	ALLOBJ\n\
lists all sections from all object files, including shared libraries."),
	   &maintenanceinfolist);

  add_prefix_cmd ("print", class_maintenance, maintenance_print_command,
		  _("Maintenance command for printing GDB internal state."),
		  &maintenanceprintlist, "maintenance print ", 0,
		  &maintenancelist);

  add_prefix_cmd ("set", class_maintenance, maintenance_set_cmd, _("\
Set GDB internal variables used by the GDB maintainer.\n\
Configure variables internal to GDB that aid in GDB's maintenance"),
		  &maintenance_set_cmdlist, "maintenance set ",
		  0/*allow-unknown*/,
		  &maintenancelist);

  add_prefix_cmd ("show", class_maintenance, maintenance_show_cmd, _("\
Show GDB internal variables used by the GDB maintainer.\n\
Configure variables internal to GDB that aid in GDB's maintenance"),
		  &maintenance_show_cmdlist, "maintenance show ",
		  0/*allow-unknown*/,
		  &maintenancelist);

#ifndef _WIN32
  add_cmd ("dump-me", class_maintenance, maintenance_dump_me, _("\
Get fatal error; make debugger dump its core.\n\
GDB sets its handling of SIGQUIT back to SIG_DFL and then sends\n\
itself a SIGQUIT signal."),
	   &maintenancelist);
#endif

  add_cmd ("internal-error", class_maintenance,
	   maintenance_internal_error, _("\
Give GDB an internal error.\n\
Cause GDB to behave as if an internal error was detected."),
	   &maintenancelist);

  add_cmd ("internal-warning", class_maintenance,
	   maintenance_internal_warning, _("\
Give GDB an internal warning.\n\
Cause GDB to behave as if an internal warning was reported."),
	   &maintenancelist);

  add_cmd ("demangle", class_maintenance, maintenance_demangle, _("\
Demangle a C++/ObjC mangled name.\n\
Call internal GDB demangler routine to demangle a C++ link name\n\
and prints the result."),
	   &maintenancelist);

  add_prefix_cmd ("per-command", class_maintenance, set_per_command_cmd, _("\
Per-command statistics settings."),
		    &per_command_setlist, "set per-command ",
		    1/*allow-unknown*/, &maintenance_set_cmdlist);

  add_prefix_cmd ("per-command", class_maintenance, show_per_command_cmd, _("\
Show per-command statistics settings."),
		    &per_command_showlist, "show per-command ",
		    0/*allow-unknown*/, &maintenance_show_cmdlist);

  add_setshow_boolean_cmd ("time", class_maintenance,
			   &per_command_time, _("\
Set whether to display per-command execution time."), _("\
Show whether to display per-command execution time."),
			   _("\
If enabled, the execution time for each command will be\n\
displayed following the command's output."),
			   NULL, NULL,
			   &per_command_setlist, &per_command_showlist);

  add_setshow_boolean_cmd ("space", class_maintenance,
			   &per_command_space, _("\
Set whether to display per-command space usage."), _("\
Show whether to display per-command space usage."),
			   _("\
If enabled, the space usage for each command will be\n\
displayed following the command's output."),
			   NULL, NULL,
			   &per_command_setlist, &per_command_showlist);

  add_setshow_boolean_cmd ("symtab", class_maintenance,
			   &per_command_symtab, _("\
Set whether to display per-command symtab statistics."), _("\
Show whether to display per-command symtab statistics."),
			   _("\
If enabled, the basic symtab statistics for each command will be\n\
displayed following the command's output."),
			   NULL, NULL,
			   &per_command_setlist, &per_command_showlist);

  /* This is equivalent to "mt set per-command time on".
     Kept because some people are used to typing "mt time 1".  */
  add_cmd ("time", class_maintenance, maintenance_time_display, _("\
Set the display of time usage.\n\
If nonzero, will cause the execution time for each command to be\n\
displayed, following the command's output."),
	   &maintenancelist);

  /* This is equivalent to "mt set per-command space on".
     Kept because some people are used to typing "mt space 1".  */
  add_cmd ("space", class_maintenance, maintenance_space_display, _("\
Set the display of space usage.\n\
If nonzero, will cause the execution space for each command to be\n\
displayed, following the command's output."),
	   &maintenancelist);

  add_cmd ("type", class_maintenance, maintenance_print_type, _("\
Print a type chain for a given symbol.\n\
For each node in a type chain, print the raw data for each member of\n\
the type structure, and the interpretation of the data."),
	   &maintenanceprintlist);

  add_cmd ("statistics", class_maintenance, maintenance_print_statistics,
	   _("Print statistics about internal gdb state."),
	   &maintenanceprintlist);

  add_cmd ("architecture", class_maintenance,
	   maintenance_print_architecture, _("\
Print the internal architecture configuration.\n\
Takes an optional file parameter."),
	   &maintenanceprintlist);

  add_cmd ("translate-address", class_maintenance,
	   maintenance_translate_address,
	   _("Translate a section name and address to a symbol."),
	   &maintenancelist);

  add_cmd ("deprecate", class_maintenance, maintenance_deprecate, _("\
Deprecate a command.  Note that this is just in here so the \n\
testsuite can check the command deprecator. You probably shouldn't use this,\n\
rather you should use the C function deprecate_cmd().  If you decide you \n\
want to use it: maintenance deprecate 'commandname' \"replacement\". The \n\
replacement is optional."), &maintenancelist);

  add_cmd ("undeprecate", class_maintenance, maintenance_undeprecate, _("\
Undeprecate a command.  Note that this is just in here so the \n\
testsuite can check the command deprecator. You probably shouldn't use this,\n\
If you decide you want to use it: maintenance undeprecate 'commandname'"),
	   &maintenancelist);

  add_setshow_zinteger_cmd ("watchdog", class_maintenance, &watchdog, _("\
Set watchdog timer."), _("\
Show watchdog timer."), _("\
When non-zero, this timeout is used instead of waiting forever for a target\n\
to finish a low-level step or continue operation.  If the specified amount\n\
of time passes without a response from the target, an error occurs."),
			    NULL,
			    show_watchdog,
			    &setlist, &showlist);

  add_setshow_boolean_cmd ("profile", class_maintenance,
			   &maintenance_profile_p, _("\
Set internal profiling."), _("\
Show internal profiling."), _("\
When enabled GDB is profiled."),
			   maintenance_set_profile_cmd,
			   show_maintenance_profile_p,
			   &maintenance_set_cmdlist,
			   &maintenance_show_cmdlist);
}


text:
@protocol TCHTTPRespValidator <NSObject>

@required

@property (nonatomic, strong) id data;
@property (nonatomic, assign) BOOL success;
@property (nonatomic, copy) NSString *successMsg;
@property (nonatomic, strong) NSError *error;

@property (nonatomic, strong) NSDictionary<NSString *, NSArray<NSNumber *> *> *errorFilter;

+ (NSDictionary<NSString *, NSArray<NSNumber *> *> *)errorFilter;

- (void)reset;
- (NSString *)promptToShow:(BOOL *)success;
- (NSString *)promptToShow;

@optional

@property (nonatomic, assign) NSUInteger totalNum;
@property (nonatomic, assign) NSUInteger pageIndex;
@property (nonatomic, assign) NSUInteger pageSize;

+ (BOOL)validateHTTPResponse:(id)obj fromCache:(BOOL)fromCache;
- (BOOL)validateHTTPResponse:(id)obj fromCache:(BOOL)fromCache;

@end

redpajama_set_name: RedPajamaGithub


text:
Q: Table in R with several row groups & sub-summation I need to make a balance sheet table and group (and sum) its values according to not one, but several categories simultaneously. ((Random) sample data at the end).
TL;DR: How can I make "pretty" tables with sub-groups and "sub-summation"?
What I have / can do
Using the gt() package I can easily sum for one category:
library(gt)
erg2 %>% gt(groupname_col = c("Kat_1")) %>%
  summary_rows(groups = TRUE,
               columns = 'Value',
               fns = list(Summe="sum")
  )

This looks good. However, I need to sum for several categories (which gt can do) but it stops looking good (for my needs).
I dislike that the order is not OK (Starts with B. Current Assets, C. Liabilities appears 2x instead of being grouped together).
erg2 %>% gt(groupname_col = c("Kat_1","Kat_2","Kat_3")) %>%
  summary_rows(groups = TRUE,
               columns = 'Value',
               fns = list(Summe="sum")
  )

What I want
I would like to have the table look as follows (I'll try to draw it here as an example). It is ok (and desired) to have some of the aggregation sums appear several times. I am especially keen on the slight indentation of the different categories and that they build "sub-groups".
B. Current Assets
----------------------------------------
       Assets
----------------------------------------
         IV. Cash on Hand
----------------------------------------
               2. Current bank accounts
                           1000_Description_1   111
total sum current bank accounts                 111
total sum cash on hand                          111
 ...etc...
--------------------------------------------
          II. Receivables[..]
--------------------------------------------
               4. other assets
                          Account x     95
                          Account y     59
                          Account z     77
                    [...]
Sum 4. other assets                     [its sum]
...etc...

I am not limited to using gt - any package / procedure than can solve the problem is welcome. However aggregation and summation should be automated as much as possible.
It would be great to be able to embbed the final result in an RMarkdown.
Example Data to play with:
erg2<-structure(list(main = c("Assets", "Equity & Liabilities", "Equity & Liabilities",
"Equity & Liabilities", "Equity & Liabilities", "Equity & Liabilities",
"Assets", "Assets", "Assets", "Assets", "Assets", "Assets", "Assets",
"Assets", "Assets", "Assets", "Assets", "Assets", "Equity & Liabilities",
"Equity & Liabilities", "Equity & Liabilities", "Equity & Liabilities",
"Equity & Liabilities", "Equity & Liabilities", "Equity & Liabilities"
), Kat_1 = c("B. Current Assets", "C. Liabilites", "A. Equity",
"C. Liabilites", "C. Liabilites", "C. Liabilites", "A. Fixed Assets",
"A. Fixed Assets", "A. Fixed Assets", "A. Fixed Assets", "A. Fixed Assets",
"A. Fixed Assets", "B. Current Assets", "B. Current Assets",
"B. Current Assets", "B. Current Assets", "B. Current Assets",
"C. Prepaid Expenses", "A. Equity", "A. Equity", "B. Accruals",
"E. Deferred Taxes", "B. Accruals", "C. Liabilites", "C. Liabilites"
), Kat_2 = c("IV. Cash on hand, bank balances", "No category",
"V. Profit / Loss of the year", "No category", "No category",
"No category", "I. Intangible Assets", "I. Intangible Assets",
"II. Tangible Assets", "II. Tangible Assets", "II. Tangible Assets",
"II. Tangible Assets", "II. Receivables and other assets", "II. Receivables and other assets",
"II. Receivables and other assets", "II. Receivables and other assets",
"II. Receivables and other assets", "No category", "I. Subscribed capital",
"IV. Profit / Loss carried forward", "No category", "No category",
"No category", "No category", "No category"), Kat_3 = c("2. Current bank accounts",
"3. Trade payables", "No category", "6. Other liabilities", "6. Other liabilities",
"6. Other liabilities", "1. Franchises", "1. Franchises", "3. Other equipment",
"3. Other equipment", "3. Other equipment", "3. Other equipment",
"2. Receivables from affiliated companies", "4. Other assets",
"4. Other assets", "4. Other assets", "4. Other assets", "No category",
"No category", "No category", "1. Tax accruals", "No category",
"2. Other accruals", "6. Other liabilities", "6. Other liabilities"
), `Acc-Nr` = c("1000_Description_1", "2000_Description_2", "3000_Description_3",
"4000_Description_4", "5000_Description_5", "6000_Description_6",
"7000_Description_7", "8000_Description_8", "9000_Description_9",
"10000_Description_10", "11000_Description_11", "12000_Description_12",
"13000_Description_13", "14000_Description_14", "15000_Description_15",
"16000_Description_16", "17000_Description_17", "18000_Description_18",
"19000_Description_19", "20000_Description_20", "21000_Description_21",
"22000_Description_22", "23000_Description_23", "24000_Description_24",
"25000_Description_25"), Value = c(111, 95, 78, 86, 87, 103,
100, 114, 93, 137, 94, 91, 125, 95, 59, 77, 85, 98, 90, 115,
59, 104, 110, 89, 75)), row.names = c(NA, -25L), class = "data.frame")

redpajama_set_name: RedPajamaStackExchange


text:
One Dance Drake Feat. Kyla & Wizkid
One Direction Home
One Direction To Open Chain Of Cafés Around The World?
4 February 2014, 09:19 | Updated: 27 March 2017, 16:31
Reports suggest the new ventures would be meeting points for the band's most die-hard fans.
One Direction are reportedly set to open up a chain of cafés around the world.
The 'What Makes You Beautiful' stars are five of the most famous stars in the world with their image on products and merchandise of all sorts.
The Daily Star reports the latest venture from the group are intended to act as a meeting point for some of their biggest fans.
The first café is expected to open in Japan, according to the publication, with London, New York, Paris and Berlin also pencilled in.
Speaking to the Daily Star, an insider said: "This could become the lads' version of Planet Hollywood. That chain was backed by stars such as Sylvester Stallone, Bruce Willis and Arnold Schwarzenegger when it launched in 1991.
"The cafés will be very child friendly for younger fans and they're sure to be stocked up with lots of 1D merchandise."
The reports come during the same week it is claimed the band are set to make one billion dollars from their upcoming 'Where We Are' 2014 world tour.
One Direction News
See more One Direction News
Louis Tomlinson Addresses X-Rated Euphoria Fantasy Scene Showing Him Getting Intimate With Harry Styles

redpajama_set_name: RedPajamaCommonCrawl


text:
Columns are the opinion of the author, and include both facts and the individual's personal perspective. Community members are encouraged to submit guest columns up to 600 words for consideration.
Thu., December 27, 2018
Adding up the bill for a tax credit spree
Iowa Gov. Kim Reynolds pauses as she delivers the Condition of the State Address to a joint assembly of the of state legislature at the Iowa State Capitol in Des Moines, Iowa, on Jan. 9, 2018. (Jim Slosiarek/The Gazette)
John Hendrickson and John Mozena, guest columnists
Iowa has a complex and extensive system of tax credits, all of which suffer from poor transparency and shaky justifications.
We're certainly not alone in this — whether Amazon, Foxconn, Apple, or other businesses, states are trying to attract economic development using tax credits. The problem is the majority of these deals simply do not create jobs or economic growth that wouldn't have existed otherwise.
That's because businesses make decisions on where to locate based on a range of factors, and subsidies rank very low in that calculation. Factors like the availability of customers, suppliers, workers, resources, infrastructure and utilities all outweigh subsidies. To see this in action, consider Amazon's recent selection of New York City and northern Virginia for its "HQ2" facilities — the company passed up billions in much larger subsidy offers from other states to locate its new offices where they made the most business sense.
Of course, Iowa uses tax credits not only for economic development, but for a variety of other purposes that include promotion of renewable energy and redressing socioeconomic inequalities. Regardless, Iowa's complex and extensive system of tax credits impose costs on other taxpayers — and that cost is growing. From 2007 to 2019, tax credits increased from $197.6 million to $422.9 million. This is a $225.3 million or 114 percent increase in just 12 years.
This trend is expected to continue. The Research Activities Tax Credit cost taxpayers $48 million in 2017. Within two years, that tax credit is expected to grow to $69.1 million, more than the $68 million projected cost of the Earned Income Tax Credit that supports low-income families.
Have Iowa's taxpayers gotten twice the results from these programs that they did a decade ago? Are we better off subsidizing corporate R & D or families that are going through tough times? It's time to find out, which is why we agree with Gov. Kim Reynolds that tax credit reform should be a priority of the upcoming legislative session.
Iowa's 12 percent corporate tax is the highest in the nation, even though that top rate will be lowered to a still-excessive 9.8 percent in 2021. A better solution to making Iowa a more competitive state is to work toward lower marginal tax rates for everyone. The Mercatus Center at George Mason University estimated that by reforming business tax credits, Iowa could see further tax reductions on corporate, individual, and sales taxes by close to 2 percent.
PINTS & POLITICS E-NEWSLETTER
A lighthearted look at Iowa political news right to your inbox.
The skyrocketing cost of tax credits demonstrates a taxpayer review is long overdue. If the legislature does nothing else, it should require more transparency on all tax credits, as well as stronger requirements for third-party review of the ridiculous "economic impact" calculations that justify so many of these deals. Iowa does have a tax credit review process, but it clearly needs to be strengthened to include more transparency and more independent analysis. If taxpayers are being asked to subsidize a business, then it's only appropriate they be given as much access to relevant information about the deal as any other investor.
But beyond transparency, it's time for Iowa's politicians and the voters who elect them to realize the continued path to good jobs, economic growth and competitiveness isn't from expanding tax credits or chasing high-profile deals. Rather, it's through low and fair marginal tax rates, simple and reasonable regulations, and a commitment to making Iowa an attractive place for anyone to start and grow a good business that creates good jobs.
• John Hendrickson is policy analyst at Iowans for Tax Relief and John Mozena is president of the Center for Economic Accountability.
MORE Guest Columnist ARTICLES TO READ NEXT ...
The key to ending Iowa's workforce shortage relies on expanding talent and skills
Bennett: Warren has the intelligence and courage necessary to lead
Why rural Iowa needs empowering
Older workers need unions and a $15 minimum wage
Presidential candidates - take the lead on aging issues


For other uses, see Pascal (disambiguation) and Pascal (surname).
Pascal is a common masculine Francophone given name, cognate of Italian name Pasquale, Spanish name Pascual, Catalan name Pasqual.
Pascal is common in French-speaking countries, Germany, Austria, and the Netherlands. Derived feminine forms include Pascale, Pascalle or Pascalina. Pascal is also common as a surname  in France, and in Italy (in Piedmont, Aosta Valley and, as De Pascal, in Friuli-Venezia Giulia).
Pascal derives from the Latin paschalis or pashalis, which means "relating to Easter", from the Latin term for "Easter", pascha, Greek Πάσχα, from the Aramaic pasḥā (Hebrew pesach) "Passover" (since the Hebrew holiday Passover coincides closely with the later Christian holiday of Easter, the Latin word came to be used for both occasions). The Christian given name is in origin from the meaning "one born on Easter day", or "born on Pentecost" (see below).
Variations of the given name include: Paschal, Pasqual, Pasquale, Paskal, Pascoal, Pascale, Pascha, Paschalis, Pascual, Pascoe, and Pasco.
The name arises in the early medieval period, in Latin spelled Paschalis. An early bearer is Antipope Paschal (fl. 687), and Pope Paschal I (d. 824). A variant Latin form of the name is Paschasius; this is the name of the 9th-century Frankish saint Paschasius Radbertus. Peter Pascual (Petrus Paschasius, d. 1299) was a bishop and martyr of medieval Andalusia. Saint Pascal (or San Pasqual) refers to Paschal Baylon (1540–1592), a Spanish friar and mystic. Baylon was born on 24 May 1540 to Aragonese peasants. His parents named him Pasqual because he was born on the day of the feast of Pentecost (not Easter), because Pentecost in Spain was known as "the Pasch (or Passover) of the Holy Ghost" at the time. After Pascual Baylon's beatification (1618) and canonization (1690), it became common to give the name Pascal to children born on the feast day of Saint Pascal (17 May) rather than on Easter or Pentecost, or independently of the child's date of birth.
^ "Pascal - Name Meaning and Origin". thinkbabynames.com. Retrieved 2007-12-20.
^ Staniforth, Oswald. "St. Pascal Baylon." The Catholic Encyclopedia. Vol. 11. New York: Robert Appleton Company, 1911..


text:
Hungary's legal changes rapped
Committee in the Council of Europe's political assembly says Hungary's constitution erodes democratic checks and balances.
By Andrew Gardner
April 26, 2013	4:01 am
Hungary yesterday moved a significant step closer to becoming the first European Union member state to be placed under a special monitoring regime by European politicians.
A committee at the Parliamentary Assembly of the Council of Europe (PACE) said that it was deeply concerned at "the erosion of democratic checks and balances" as a result of a completely new constitution introduced in 2012.
PACE brings together 318 national parliamentarians from the 47 member states of the Council of Europe, a body established after the Second World War to develop the rule of law across Europe.
The committee's report, which was authored by a Swedish liberal, Kerstin Lundgren, and a Czech centre-right politician, Jana Fischerová, concluded that the constitution was adopted in "in a hasty and opaque manner" and was "not based on a consensus between the widest possible range of political forces in Hungarian society".
It also argued that the constitutional was too wide-ranging in its scope, stating that "the excessive use of, and wide range of subjects regulated by, cardinal laws and provisions – which need a two-thirds majority to be changed – can be harmful to democratic principles".
The current centre-right government, Fidesz, has a two-thirds majority, the first time power has been so consolidated in Hungary's post-1989 history.
The party has since amended the constitution four times. That prompted another criticism. "The constant changing of the constitution for narrow party political interests undermines the required stability of the constitutional framework," the committee said.
Overall, Hungary's new constitutional "framework has excessively concentrated powers, increased discretion and reduced accountability and legal oversight of numerous government institutions and regulatory bodies in Hungary", it said.
Lundgen said that the "whole package" of constitutional changes "raises so many concerns, so it is not single paragraph, no single issue, it is the whole pattern as such" that led to the committee's recommendation. The changes introduced by the government "are establishing political controls at the same time as checks and balances are weakened", she said.
The committee's recommendation will now be considered by the assembly's leaders. They will issue an opinion in a matter of weeks. The committee's recommendation will then be debated by all PACE members, possibly when they next meet in plenary at the end of June.
The votes in thecommittee, on the overall recommendation and on specific elements, were very close, suggesting that the recommendation may struggle to win the backing of the full assembly.
Two previous recommendations to start monitoring processes against EU member states – Italy and the United Kingdom – have failed to win support.
Ten of the Council of Europe's 47 member states are currently subject to monitoring.
Hungary is currently awaiting three other, potentially more important assessments of its constitutional changes.
One is, like the PACE recommendation, an assessment being made by politicians. The European Parliament is currently working on a report on Hungary's legislative reforms. No date has been set for its completion and adoption.
Hungary, though, is likely to pay most heed to two pending legal appraisals.
Lawyers at the Council of Europe's Venice Commission currently considering the most recent set of constitutional amendments, made in March. It will announce its findings on 15-16 June. So too is the legal service of the European Commission. An initial assessment, announced on Friday (12 April), said there were grounds for "serious concern" about clauses relating to payment obligations, restrictions on political advertising and powers of the president of the National Office for the Judiciary. No date has been set for publication of the final assessment.
The Hungarian government has said that it will act on the Venice Commission's and European Commission's advice, or seek the opinion of the EU's highest court, the European Court of Justice.
More from ... Andrew Gardner
EU brings in new Belarus sanctions
By William Adkins
Norway's push for a change to 'bad deal' with EU
December 14, 2020	4:01 am
By Charlie Duxbury
Belarus opposition leader Tikhanovskaya: 'We can win by spring'
December 13, 2020	12:04 pm
By Hannah Brenton
Albanian protesters set fire to Christmas trees over police killing
By Nektaria Stamouli
Hungary	Italy	United Kingdom


Ноутбуки, нетбуки, планшеты, настольные ПК и многое другое Lenovo RU. Lenovo. Intel® product specifications, features and compatibility quick reference guide and code name decoder. Compare products including processors, desktop boards, server. About Lenovo + About Lenovo. Our Company; News; Investor Relations; Social Responsibility; Product Compliance; Legal Information; Jobs at Lenovo; Shop + Shop. Laptops.
Wireless Lan Driver for Windows 7 (32-bit, 64-bit) - Lenovo G470 and G570. Back Name. Operating System. Version. Release Date. Download Later. Download. Recommended for end users which includes release 19.50.1 driver with Intel® PROSet/Wireless WiFi Software for Windows® 10. Software Applications, 19.50.1. WiFi Adaptor problems with Windows 8.1 BIOS installed i guessed that any WLAN card should be three times per day with latest intel driver from lenovo. Download Lenovo G500 Notebook Windows 7, Windows 8, Windows 8.1 Drivers, Applications and Updates. The 15.6" Lenovo G480 laptop joins premium processing with an affordable price, making it an ideal entry-level laptop. WLAN Driver (Atheros, Broadcom, Realtek, Intel) for Windows 7 (32-bit, 64-bit) - Lenovo G40-70, G50-70. Click or the topic for details: What driver version do I have? Identify your Intel® Wireless Adapter and driver version. How do I download drivers and software. Части и Аксессуары. Просмотр Комплектующих. Просмотр Комплектующих. Broadcom NetXtreme Gigabit Ethernet Driver SE8500HW4_BCM57XX_WIN2K3_7100C.ZIP. Lenovo IdeaPad Y550P — мощный мультимедийный домашний ноутбук. В портфеле домашних ноутбуков. Intel WiFi Driver for Windows 8 (32-bit, 64-bit) - ThinkCentre, ThinkStation and Lenovo 62 Desktop. Lenovo — технологическая компания с капитализацией 21,6 млрд. Долларов США, чья продукция.
Download Lenovo G50-80 Notebook Win 7 64bit, Win 8.1 64bit, Win 10 64bit Drivers, Software and Updates. Downloads for Wireless Networking. Additional selections available. Intel® Wireless Products; Intel® PROSet/Wireless Software and Drivers for Windows. Назначение : система : ссылка на драйвер Intel VGA Driver Windows 7 (32-bit) Intel VGA Driver. Information. Ideas. Savings. Save On Wlan Intel. Download new and previously released drivers including support software, bios, utilities, firmware and patches for Intel products. This package installs the Intel WiFi Driver for Windows 7 (32-bit and 64-bit) for ThinkCentre M70z systems.
This page contains the list of Lenovo drivers available for download. To download the proper driver, please find the category of your Lenovo device and click Mar 24, 2017 This download installs network drivers. Release 22.1 includes Intel® PROSet for Windows Device Manager, advanced networking services. Aug 27, 2014 WLAN Driver (Atheros, Broadcom, Realtek, Intel) for Windows 7 (32-bit, 64-bit) - Lenovo G40-70, G50-70. Драйвера для МФУ Phaser 3100mfp от фирмы Xerox. Для принтера, сканера. Find the latest Wi-Fi and Bluetooth® drivers for your Intel® Wireless Adapter. This tool identifies your adapter and updates your driver to the latest version.
Intel® PROSet/Wireless Software and Drivers for Windows 7 download options for both driver-only and driver-with Intel® PROSet/Wireless WiFi Software. Intel WLAN Driver for Windows 8.1 Intel; Alias ID: Lenovo is committed to environmental leadership from operations to product design and recycling solutions. Intel® Ethernet Controllers support advanced features for I/O virtualization and unified networking. Intel® Network and I/O Products. Find support information, product highlights, featured content, downloads and more for Intel® Network and I/O Products.


text:
Chris McCabe's 6 top London nightwalkers
Blog / Kate Wilkinson
Published on October 30, 2019 | Comments (o)
To mark the publication of The East Edge: Nightwalks with the Dead Poets of Tower Hamlets, Chris McCabe shares his favourite nightwalkers…
Noctavigant or Noctambulant?
In his book Nightwalking: A Nocturnal History of London, Matthew Beaumont argues for a distinction between the Noctambulant, the one who is out walking with a purpose, and the Noctavigant, the one who walks with criminal intent. For a long period of London's history, just to be outdoors at night was to be considered criminal and many writers have crossed the threshold into Noctavigation, bringing back their experiences of the city after dark to their writing.
1. Thomas Dekker (ca. 1572 – 1632)
In Medieval England there was a curfew on being outside the confines of the City of London after 8pm in summer and 9pm in winter. This made nightwalking a transgression, a pursuit that turned the curious into the criminal. Although less strictly adhered to in the Early Modern period, the curfew bell continued to ring when Thomas Dekker, the unofficial Laureate of the London night began to write. Dekker's works are fascinated with the Elizabethan night, with titles including The Bellman of London and Langhorne and Candle-light.
In Dekker's work the night is called 'darkmans', London is renamed 'Romeville' and there is an appearance of the 'Moon-Men'. 'Give me leave', Dekker writes, 'to lead you by the hand into a wilderness where are none but monsters'. Dekker actually used the phrase 'Night-Walke' and is responsible for arguably our clearest depiction of the Early Modern nocturne, describing it as 'a vast, silent charnel-house hung, to make it more hideous, with lamps dimly and slowly burning in hollow and glimmering corners'.
Noctavigant: The curfew bell could still be heard in Elizabethan England and those like Dekker who walked the night were viewed with suspicion.
2. Charles Dickens (1812- 1870)
Some years ago, a temporary inability to sleep, referable to a
distressing impression, caused me to walk about the streets all night,
for a series of several nights.
So begins Charles Dickens' 'Night Walks', an essay written for his column as 'The Uncommercial Traveller' in the early 1860s. . Dickens invented a word for the people still out and about at night: 'houseless'. This accounts for the temporary homelessness of bodies outside of the confines – and safety – of four walls. Most vivid in Dickens' account of the Victorian city is the drear dripping on Waterloo Bridge, a drunk he names 'Dry Rot' and the Old Kent Road which he describes as existing in "expiring fits and starts of restlessness". Has London of a night changed much over the past 150 years? 'When one drunk staggers into the shutters of a shop', he writes, 'another will soon be along to fight with it'.
Noctambulant: Victorian London of a night was legal territory for men, and Dickens being Dickens had a free pass.
3. BV Thomson (1834 – 1882)
The title of BV Thomson's most celebrated work says everything about the angle from which he approached London: 'The City of Dreadful Night'. This long, surreal, macabre and unique poem has been described by Raymond Williams as 'a symbolic vision of the city as a condition of human life':
Although lamps burn along the silent streets,
Even when moonlight silvers empty squares
The dark holds countless lanes and close retreats
Thomson was born in Glasgow in 1834 but his family moved to East London when he was six. The poverty, bleakness and epic scale of what he saw would have played a massive part in his poetic development. Following the death of his mother and, later, a failed love affair, he experienced an adulthood of depression, insomnia, dipsomania (the Victorian term for alcoholism) and radical dissent.
Like Dickens, he put the night terrors of sleeplessness to good use and went out to walk the streets of London. These experiences informed his masterpiece 'The City of Dreadful Night' which is a precursor to Surrealism and existential philosophy. The narrator drifts through the London streets as if in a dream, at one point stumbling upon a scene which could have taken place in Tower Hamlets Cemetery Park: a sphinx and an angel appear facing each other:
The Angel's wings had fallen, stone on stone,
And lay there shattered; hence the sudden sound
Noctavigant: BV Thomson may have been held on suspicion for two reasons: he was rarely sober of an evening, and he was a Dissenter, with a published track record of writing radical texts.
4. William 'Spring' Onions (ca. 1834 – 1916)
William 'Spring' Onions was an East End legend. He is buried in Tower Hamlets Cemetery Park and is a main character in my book The East Edge. What's not to love about Onions? He was arrested for up to 500 offences for alcohol-fuelled petty misdemeanours (apart from the manslaughter…) before he gave up the life of crime by replacing it with two things. 1) Twenty cups of tea a day and 2) Poetry. Like black mould, he was a regular on the wall of the local constabulary, a meme long before the internet was dreamt of.
There was a phrase used in the East End to describe when a poor person had stayed out on the street all night: 'Carrying the Banner'. Onions carried the banner many times and it usually ended in prosecution. On the 20th November 1888 The Star wrote the following (the spelling of 'Onion' is true to the original report):
William Onion, the old man whom the Thames magistrate yesterday allowed to go free on a charge of drunkenness, went to the Shadwell Police-station last night and broke the window.
He told the magistrate that policemen followed him about to lock him up for being drunk, and that he smashed the window to save himself from being locked up. (Laughter)…
He would be sentenced to one month's hard labour.
Despite the report stating Onions was an 'old man' he would actually live for another 28 years, by which point his notoriety had transferred from criminal to local poet. He is the only poet I know to end-rhyme 'houses' with 'trousis' (the type you wear).
Noctavigant turned Noctambulant: Until the end of the 19th Century Onions was firmly in the noctavigant camp, but his transformation as a poet and tea-drinker saw him reform as a Noctambulant from the start of the 20th Century.
5. Jean Rhys (1890 – 1979)
Jean Rhys isn't usually cited amongst literary nightwalkers, but let's make the case for her. The history of the nocturnal city has been an unsafe and inaccessible terrain for women writers. Rhys' novels of the 1930s chart the progress of female characters in Paris and London who walk the streets at night, searching for purpose beneath the streetlamps and encountering disingenuous men whose initial promises disperse like a miasma over the river. In the grey mist of the city day creeps into night, which often comes as a relief to Rhys's characters: 'My new rooms were … not far from Chalk Farm Tube station', Anna says in Voyage in the Dark, 'there wasn't anything much to do all day'. Julia in After Leaving Mr Mackenzie frequents 'obscure Bloomsbury'. For Rhys's characters, drink distorts memory as another night is spent in a run-down hostel, on the brink of a bad night's sleep.
Rhys took the title for one of her novels from an Emily Dickinson poem: Good Morning, Midnight. Rhys wrote in her autobiography: 'went to the Crabtree [a club on Greek Street] nearly every night and stayed till breakfast time … There were nightclubs all over London, all sorts, all prices, and all full of an excitement that I had never known before and people dancing the Destiny waltz'. Rhys's destiny was to walk out into the London night and waltz it back into some of the most concentrated, vivid and memorable prose of the Modernist period.
Noctambulant: Rhys was drawn to the excitement of the London night at a time when it had (just about) become acceptable for women to walk the streets after dark. There was however a stigma attached to this, and it's worth remembering the cases of women such as Constance Smith, a sex worker who was murdered on Old Compton Street in 1936.
6. David Gascoyne (1916 – 2001)
David Gascoyne's Night Thoughts is my joint-favourite work about the night (the other being Joyce's Finnegans Wake). Gascoyne described this a 'radiophonic' poem which was broadcast by the BBC in 1955. In this poem a man suffering from insomnia takes flight to the imaginary, allowing his mind to drift out across the streets of London:
Let those who hear my voice become aware
That Night has fallen. We are in the dark.
I do not see you, but in my mind's eye
You sit in lighted rooms marooned by darkness.
My message is sent out upon the waves
Of a black boundless sea where you drift
The poem drew on Gascoyne's experience of tackling insomnia with night walks along the Thames. The strangeness of the work draws on Gascoyne's affinity with the Surrealist movement. He had lived in Paris, got to know André Breton and wrote the seminal A Short Survey of Surrealism (1935).
The Surrealists were advocates of the dreamlife, choosing to foreground the oddities we accept in our dreams, rethinking our everyday reality. At the 1936 London International Surrealist Exhibition Salavdor Dalí had delivered a lecture in a deep-sea diving suit and Gascoyne had to rescue the artist who was struggling for breath, rushing to find a spanner to remove the mask. Dalí's intention was to go to the depths of the human subconscious; Gascoyne's Night Thoughts plumbs the sleeping mind of London like nothing that has been written since.
Noctavigant: Gascoyne had an addiction to Benzedrine and was alienated as a gay man living in the UK before homosexuality was legalised in 1967.
The East Edge is out now, priced £9.99
Buy your copy online
Where I write: Gail McConnell
Penned in the Margins acquires Arji Manuelpillai's 'remarkable' poetry collection about extremism
Penned in the Margins acquires 'witty and exacting' poetry debut by Holly Hopkins
Return to the Blog


We all have a mobile device ( Tablet or mobile phone ) and it's a convenient way to browse the web and find services or products you need or want.
You may have experienced it yourself. You've been browsing the web and you came across a website but it just looks like a scaled down version of the website you would see on a PC or laptop. You then have to zoom in and drag the page around to view the whole site. So not very smooth and easy flowing or user friendly.
Even if you have an existing website that just needs updating to be more mobile friendly/ responsive this can be achieved.
Let me know if you need a hand by letting me know you web address I can then take a look and let you know what's required.
If this is something you would like me to take a look at then..
Do you need a website or some help with your current site, maybe just a tidy up?
Or even a brand new site?
Get in touch and see how I can help.
© 2019 Web Dev Kev.


The Beenius Interactive TV Platform presents Beenius DVB Hybrid Solution on Android STB Video. The Beenius Platform in the hybrid setup for IPTV, OTT, DVB-C/S/T supports local autonomy as a recovery mode of operation and is implemented on Android-based STBs.
If you want to learn more about Beenius DVB Hybrid solution on Android, book a meeting with Beenius Team at IBC 2018 or contact Beenius representatives today!


text:
Home ▶ Publications
Rethinking Conflict: Its Role in Building Peace
Wednesday, October 18, 2017 / By: Ann-Louise Colgan; Allison Sturma; Mena Ayazi
When you hear the word "conflict," what immediately comes to mind?
This is an exercise we often use with students at middle school and high school levels. Off the tops of their heads, their answers typically include "violence," "war," "fight," and sometimes "destruction" or even "hatred." Looking at these associations, it is clear what the words have in common: they are negative. The dominant connotation in many young people's minds is that conflict is inherently bad.
So we ask them next: When can conflict be positive?
Gradually, students begin to wrap their heads around this notion and offer responses. They can find examples from world history when struggles for civil rights and political rights led to positive change. They may cite examples from their own lives, when a disagreement with a friend led to a resolution that actually strengthened the relationship.
Our organization, the United States Institute of Peace (USIP), defines conflict as "an inevitable aspect of human interaction…when two or more individuals or groups pursue mutually incompatible goals." Importantly, the definition clarifies: "conflicts can be waged violently, as in a war, or nonviolently, as in an election or an adversarial legal process. When channeled constructively into processes of resolution, conflict can be beneficial."
Simply put, conflict in and of itself is neutral. It is a fact of life. People disagree, argue, even fight. It has been this way throughout human history. It is this way in our daily lives. We all know conflict, with our friends, our families, our co-workers. It is part of human nature.
But where it leads is not predefined. Conflict is neither intrinsically negative nor positive. In fact, how it plays out is determined entirely by how it is handled—by the attitudes and skills of those involved. Negative assumptions may cause us to try to avoid conflict, or they may lead us to become instantly combative, unwilling or unable to see any possibility of a constructive outcome. This is precisely why it matters that we rethink conflict in how we teach history and in how we prepare students for dealing with the world around them.
Conflict is not only inevitable, it is essential. Throughout history and still today, conflict is the expression of big fault lines and the seed of big changes in our world. If we understand that conflict can be managed without violence, and can in fact be transformed into an engine of positive change, we begin to see how conflict can actually be a critical part of building peace.
By holding up examples that show this throughout history, and by giving students the tools and the perspectives they need to understand and approach conflict in constructive ways, we can open their eyes and their minds to the many men, women, and young people making a difference, and we can open the possibilities for them to find their own roles as peacebuilders.
Some of history's most prominent examples of a different approach to conflict come from mass movements that organized across political, religious, ethnic, or age groups to effect positive change in their communities and countries. Many of these groups faced oppression, discrimination, and threats of (or actual) violence, but they remained committed to confronting conflict nonviolently and using peacebuilding tools to achieve their goals. Consider the following examples.
Protesting and Parading for the Right to Vote
One of the most successful social movements in United States history, women's suffrage is an example of how nonviolent resistance and peaceful activism in the face of discrimination can lead to effective social change.
/node/42911
Having initially gathered steam during the 1850s, the movement lost momentum during the Civil War. By building on the eradication of slavery and the inception of the 14th and 15th Amendments shortly after the war, women—who were some of the critical activists in the fight against slavery—seized the moment to include women's rights in the debate on equality. Activists began to unify in the late 1800s through the formation of the National American Woman Suffrage Association, which defended the exercise of free speech, the right to dissent, and free assembly through using innovative nonviolent means to publicize their cause. Influenced by British suffrage processions and the United States' tradition of parades, suffragists began demonstrating in the streets.1 Successful lobbying efforts and putting political pressure on politicians from state to national levels eventually led to the ratification of the 19th Amendment in 1920, granting women the right to vote
Solidarity in Poland
What started as a single strike at a shipyard in Gdansk, Poland, in 1980 quickly spread to other factories and, just over two weeks later, forced the Communist government to grant permission for what soon became the Self-Governing Trade Union Solidarity.2 It grew into a "genuinely popular movement" that pursued peaceful, nonviolent action to advance the cause of workers' rights.3 As the union evolved into a movement, the government became concerned and declared martial law. Yet, even though it was outlawed, Solidarity continued to operate through an independent, underground press in a language and manner that spoke to all Polish citizens. The media provided updates on imprisoned leaders, shared the messages of the movement and calls for next steps, and essentially gave the movement a collective identity. Support from the international community helped Solidarity influence the country's political discourse and made the press an important driving force of the revolution. This method has influenced modern social movements, where all forms of media are used as means to inform, to unify, and to mobilize in peaceful revolution.4
Reconciling After Conflict
Between 1948 and 1990, the white minority in South Africa used legal measures to establish racial segregation policies, which came to be known as apartheid. When a nonviolent resistance began to form, consisting of political action, mass demonstrations, and strikes, the South African government reacted violently.5 The international community began to respond with economic sanctions, ultimately pressuring the government to begin to repeal some apartheid laws and participate in a series of negotiations with opposing parties. A new constitution in 1994 resulted in the election of a government with a nonwhite majority, bringing apartheid to an end through a peaceful transition of power. The peacebuilding process following the end of apartheid centered on the Truth and Reconciliation Commission (TRC) led by Desmond Tutu and supported by Nelson Mandela, both leaders of the apartheid resistance. The TRC was a way to address human rights violations perpetrated during apartheid, providing a path toward healing for the victims.6
Though conflict has often been addressed by groups, it is most frequently at the individual level where choices are initially made about how to approach conflict. What motivates someone to choose nonviolent means? For those who have experienced violent conflict, how has that affected their views and their subsequent choices? What difference has this made in history?
Leaders in War, Advocates for Peace
Presidents George Washington and Abraham Lincoln both served in turbulent periods and led the country through violent conflicts on U.S. soil, but they remained committed to the principle and the pursuit of peace. In fact, George Washington frequently mentioned his preference for peace in his personal correspondence, and commissioned a weathervane in the shape of a dove, a symbol of peace, for his home in Mount Vernon.7 It still stands to this day. Abraham Lincoln ended his Second Inaugural Address with a plea for conflict resolution and reconciliation, saying: "…let us strive on to finish the work we are in, to bind up the nation's wounds…to do all which may achieve and cherish a just and lasting peace among ourselves and with all nations."8
Soldier, Lawmaker, Peacebuilder
Spark M. Matsunaga was a second lieutenant in the U.S. Army during World War II when he was detained in a Japanese internment camp. After petitioning President Roosevelt for release, he and other Japanese Americans formed the decorated 100th Infantry Battalion.9 Matsunaga, who later represented Hawaii in both the U.S. House of Representatives and the Senate, had believed from his youth that peacemaking is as much an art as making war, and that it can be learned. He was named chair of the Commission on Proposals for the National Academy of Peace and Conflict Resolution. The U.S. Institute of Peace Act of 1984 was based upon that commission's findings and recommendations.10
Leaders in Civil Disobedience
Mahatma Gandhi and Martin Luther King, Jr. are remembered as iconic figures because of their commitment and contribution to nonviolent civil disobedience. Although they lived around the world from each other, both led movements that relied on nonviolent tactics to achieve their goals. Mahatma Gandhi was the primary leader of India's independence movement against British rule that began in 1919 with his call for peaceful strikes, demonstrations, and boycotting British-run sectors in India.11 Beginning in the mid-1950s in the United States, Martin Luther King, Jr. led the Civil Rights Movement, which worked for equal rights and the end of segregation among blacks and whites through peaceful demonstrations that were heavily influenced by Gandhi's teachings and approach.12
Mediating Violent Conflict in Northern Ireland
In the mid-1900s, former U.S. Senator George Mitchell was invited by the British and Irish governments to lead peace talks to end the bloody conflict in Northern Ireland that had lasted for decades, based on complex religious and political factors. For two years he served as a mediator, devising the Mitchell Principles to set the requirement that the paramilitary organizations use only democratic and nonviolent methods to achieve political goals. Those efforts ultimately resulted in the Good Friday Agreement, regarded as the cornerstone of a commitment to peace and stability in Northern Ireland.13 As part of the U.S. Senate Leaders Lecture Series, Mitchell argued that "no matter how ancient the conflict, no matter how much harm has been done, peace can prevail."14
Tools for Teachers
The preceding examples illustrate the diversity of conflicts in history, and the range of tools that movements and individuals have used to address these conflicts through nonviolent means. This toolkit for peacebuilding includes skills in communication, collaboration, critical thinking, and creative problemsolving. These tools are, in fact, applicable at multiple levels and in many different contexts—from handling conflict inside the classroom to negotiating agreements in international settings. Explaining this toolkit and making it accessible to students can empower them to see and pursue the potential for conflict to be handled constructively.
There are also tools and frameworks that can help those of us who teach this aspect of history rethink conflict and how we unpack it with our students.
Conflict analysis is an essential skill in conflict management. It enables us to break down conflicts in ways that help us understand the players, the issues, the dynamics, and the broader context. All these pieces of information help explain what is happening, offer new perspectives and understandings, and can lead to new ideas and opportunities for problem-solving. In teaching history, conflict analysis helps us all look more deeply at how conflicts evolved, how they were handled, and why. More broadly, it enables us to learn from that history, to see opportunities that might have been missed, to look for pieces of the story that might really matter even though they don't usually get the attention they deserve, and ultimately to use this new perspective to better understand conflict in today's world.
The Curve of Conflict is another useful tool that helps us visualize the evolution of conflict—how it tends to escalate and recede over time—and to see opportunities to prevent it from becoming violent. By deconstructing the dynamic of conflict, we can seek to understand it and handle it more effectively. This is especially true because, along the curve, we can identify discrete stages where action can be taken to prevent, manage, or resolve conflict. In teaching history, the Curve of Conflict enables us to take the elements of conflict identified using conflict analysis, to see how a particular situation moved through stages, and to discover what was (or was not) done to address it as it unfolded. Again, helping students realize that the evolution of conflict may be understood, and can be addressed to avoid violence, is an important lesson in seeing new perspectives and new possibilities for problem-solving.
Sometimes it is the simplest ideas that are the most radical. The fact that conflict does not have to be violent—and that conflict can even be a force for positive change—is eye-opening for many young people. It offers a different perspective, not only on history, but also on life. Understanding that conflicts can be managed in ways that don't involve violence, and there are skills and attitudes that make this possible, is a fundamentally empowering proposition.
For educators, this is one of the areas in which history can most effectively be brought to life. By taking a new lens to what is by definition old content, it is possible to find and teach new perspectives on history, to broaden students' views and understandings, and ultimately to set them up to be better informed, critical thinkers, and real agents of positive change in today's world.
"The Fight for Women's Suffrage," HISTORY®, last modified 2017, accessed January 26, 2017, http://www.history.com/topics/womenshistory/the-fight-for-womens-suffrage.
Jeffrey Donovan, "Poland: Solidarity—The Trade Union that Changed the World," Radio Free Europe, August 24, 2005, accessed January 26, 2017, http://www.rferl.org/a/1060898.html.
Mark Kramer, "The Rise and Fall of Solidarity," New York Times, December 12, 2011, http://www.nytimes.com/2011/12/13/opinion/the-rise-and-fall-of-solidarity.html.
Arch Puddington, "How Solidarity Spoke to a Nation: Lessons for Today's Democratic Insurgents," Freedom House, July 17, 2012, accessed January 26, 2017, https://freedomhouse.org/blog/how-solidarity-spoke-nation-lessons-today's-democratic-insurgents.
"Apartheid," HISTORY®, last modified 2017, accessed January 26, 2017, http://www.history.com/topics/apartheid.
"Truth Commission: South Africa," U.S. Institute of Peace, 1995–2000, accessed January 26, 2017, http://www.usip.org/publications/truth-commission-south-africa.
"Letter from George Washington to Jonathan Boucher, August 15, 1798," Founders Online, National Archives and Records Administration, accessed January 26, 2017, http://founders.archives.gov/documents/Washington/06-02-02-0422.
Abraham Lincoln, "Second Inaugural Address" American Presidency Project, University of California at Santa Barbara, March 4, 1865, accessed January 26, 2017, http://www.presidency.ucsb.edu/ws/index.php?pid=25819.
Peter B. Flint, "Spark M. Matsunaga Dies at 73; Senator Led Fight for Reparations," New York Times, April 16, 1990, https://www.nytimes.com/1990/04/16/obituaries/spark-m-matsunaga-dies-at-73-senator-led-fight-for-reparations.html.
"Important Figures in Our History," U.S. Institute of Peace, http://www.usip.org/about/origins-usip.
"Mahatma Gandhi Biography," A&E Television Networks, last updated October 1, 2015, accessed January 26, 2017, http://www.biography.com/people/mahatma-gandhi-9305898.
"Martin Luther King, Jr. Biography," A&E Television Networks, last updated January 5, 2017, accessed January 26, 2017, http://www.biography.com/people/martin-luther-king-jr-9365086.
"George Mitchell Transcript: Building Peace in Northern Ireland," U.S. Institute of Peace, accessed January 26, 2017, https://www.usip.org/public-education/george-mitchell-transcript.
"Address by Senator George J. Mitchell," U.S. Senate, June 16, 1999, http://www.senate.gov/artandhistory/history/common/generic/ Leaders_Lecture_Series_Mitchell.htm
Images & Downloads
Education & Training Youth Conflict Analysis & Prevention Reconciliation
USIP has a variety of newsletters and announcements with the latest analysis, publications and events.
Megan Chabalowski on USIP's Peace Teachers Program
By: Megan Chabalowski
Young people are hungry for examples of people working for peace in some of the world's most violent conflicts, and they are curious about ways they too can make a positive difference. Megan Chabalowski explains how USIP's Peace Teachers Program provides educators with the in-depth training and resources needed to incorporate peacebuilding into their classrooms and communities.
Peace Teachers Program
USIP's Peace Teachers Program is rooted in the conviction that educators can be pivotal in bringing peace themes into their classrooms, schools, and communities.
Education & Training; Youth
Participatory Action Research for Advancing Youth-Led Peacebuilding in Kenya
By: Illana M. Lancaster; Sahlim Charles Amambia, Felix Bivens, Munira Hamisi, Olivia Ogada, Gregory Ochieng Okumu, Nicholas Songora, Rehema Zaid
One-third of today's generation of youth—those ages ten to twenty-four—live in fragile or conflicted countries and are susceptible to the sway of ideological narratives of violent extremism. Evidence suggests, however, that they also play active and valuable roles as agents of positive and constructive change.
Youth; Education & Training; Democracy & Governance; Violent Extremism
Montana Students Take on the World
By: Allison Sturma
The students from Gardiner, Montana's high school didn't have much experience in the world beyond "little towns among farmland," as one of them put it. So, when the mayor of the state capital, Helena, spoke to them as a 1994 refugee from Liberia's civil war, the link between distant conflict zones and pastoral Montana took on a captivating human form.
Education & Training; Peace Processes
Taking Practical Ideas on Peace and Conflict to U.S. High Schools
At West Central High School in Hartford, South Dakota,...
World Refugee Day: A Young Refugee Reflects on Meeting the Dalai Lama
Mahmoud Khalil, a refugee living in Lebanon, is a Syrian-Palestinian-Algerian...
Violent Extremists Find Traction Among Kosovo's Youth
Last month, police arrested 25 people for allegedly...
Can Afghanistan Write New Future in Calligraphy?
Sughra Hussainy didn't want to be a doctor like so...


text:
Read the Full Transcript of Jesse Williams' Powerful Speech on Race at the BET Awards
Kevin Winter/BET—Getty Images for BETHonoree Jesse Williams accepts the Humanitarian Award onstage during the 2016 BET Awards at the Microsoft Theater on June 26, 2016 in Los Angeles, California.
"Just because we're magic doesn't mean we're not real"
Grey's Anatomy actor JesseWilliams was awarded BET's Humanitarian Award on Sunday night. The outspoken human rights activist—who executive produced the recent documentary,Stay Woke: The Black Lives Matter Movement— delivered a powerful and political speech about the cause he's worked so hard on.
Referencing recent victims of police brutality, Williams discussed the violence against black people and the struggles they've faced throughout history: "There has been no war that we have not fought and died on the front lines of. There has been no job we haven't done. There is no tax they haven't leveed against us," he said.
The speech received a standing ovation by the audience, who went on to praise Williams on Twitter. A transcript of it has been published in multiple places, including The Washington Post and Bustle. Below, Genius's account of the speech:
Peace peace. Thank you, Debra. Thank you, BET. Thank you Nate Parker, Harry and Debbie Allen for participating in that .
Before we get into it, I just want to say I brought my parents out tonight. I just want to thank them for being here, for teaching me to focus on comprehension over career, and that they make sure I learn what the schools were afraid to teach us. And also thank my amazing wife for changing my life.
Now, this award – this is not for me. This is for the real organizers all over the country – the activists, the civil rights attorneys, the struggling parents, the families, the teachers, the students that are realizing that a system built to divide and impoverish and destroy us cannot stand if we do.
It's kind of basic mathematics – the more we learn about who we are and how we got here, the more we will mobilize.
Now, this is also in particular for the black women in particular who have spent their lifetimes dedicated to nurturing everyone before themselves. We can and will do better for you.
Now, what we've been doing is looking at the data and we know that police somehow manage to deescalate, disarm and not kill white people everyday. So what's going to happen is we are going to have equal rights and justice in our own country or we will restructure their function and ours.
Now… I got more y'all – yesterday would have been young Tamir Rice's 14th birthday so I don't want to hear anymore about how far we've come when paid public servants can pull a drive-by on 12 year old playing alone in the park in broad daylight, killing him on television and then going home to make a sandwich. Tell Rekia Boyd how it's so much better than it is to live in 2012 than it is to live in 1612 or 1712. Tell that toEric Garner. Tell that to Sandra Bland. Tell that to Dorian Hunt.
Now the thing is, though, all of us in here getting money – that alone isn't gonna stop this. Alright, now dedicating our lives, dedicating our lives to getting money just to give it right back for someone's brand on our body when we spent centuries praying with brands on our bodies, and now we pray to get paid for brands on our bodies.
There has been no war that we have not fought and died on the front lines of. There has been no job we haven't done. There is no tax they haven't leveed against us – and we've paid all of them. But freedom is somehow always conditional here. "You're free," they keep telling us. But she would have been alive if she hadn't acted so… free.
Now, freedom is always coming in the hereafter, but you know what, though, the hereafter is a hustle. We want it now.
And let's get a couple things straight, just a little sidenote – the burden of the brutalized is not to comfort the bystander.That's not our job, alright – stop with all that. If you have a critique for the resistance, for our resistance, then you better have an established record of critique of our oppression. If you have no interest, if you have no interest in equal rights for black people then do not make suggestions to those who do. Sit down.
We've been floating this country on credit for centuries, yo, and we're done watching and waiting while this invention called whiteness uses and abuses us, burying black people out of sight and out of mind while extracting our culture, our dollars, our entertainment like oil – black gold, ghettoizing and demeaning our creations then stealing them, gentrifying our genius and then trying us on like costumes before discarding our bodies like rinds of strange fruit. The thing is though… the thing is that just because we're magic doesn't mean we're not real.
@jeffpiontek, @usdoe, #access, #changethequestion, #equity, #presentation, 21st century, BET awards, Creativity and Innovation, ed-justice, ed-policy, ed-reform, ed-tech, Education, education planning, education reform, Educator, ELA, empathy, empowerment, english, ethic of care, gaming, goals, google "jeff piontek", Hawaii, humility, innovation, Inquiry, instagram, ipad, ipads, Jeff Piontek, jeffrey, Jeffrey Piontek, jesse williams, john oliver, racism, Science, science and jeff piontek, STEAM, STEM, trump


Insitute Assistant / Project Management: Marco Döttlinger MA.
The Institute for New Music is coordinating all study related programs in the field of new music at the Mozarteum, from coaching individual students to cooperations between several classes, departments and other internal and external institutions. A special focus is given to the exchange between the instrumental and the composition classes.
Students learning an instrument experience the music between the early 20th century and the present in theory and practice.
Students are playing the Doppler Concerts with the Ensemble for New Music.
The composition classes develop and rehearse their works in direct exchange with both, student ensembles as well as with invited experts.
Renowned performers of new music augment the concert programs at the Mozarteum.
Selected composers from Austria and abroad complement the overall activities in contemporary music with presentations and seminars.
Additionally the Institute for New Music initiates and promotes activities beyond the curriculum by taking part in the international discourse with selected concert programs, workshops and other teaching cooperations.


text:
Kaftans & Tunics
Trousers, Shorts & Jumpsuits
Sarongs & Accessories
How it's Dunn
The process by which you end up with a Juliet Dunn is startling in this age of mass consumerism and impatience but what begins as an idea and a pattern in London, moves to India or South East Asia and then from region to region.
At each stop in its journey something is added, details particular to the area. It then comes back to London before moving on to its final destination be that the turquoise waters of the Caribbean or the bright city lights of Tokyo.
Everything is handmade!
The collections are hand made in and inspired by various regions of India. They draw on ancient skills in printing and embroidering featherweight silk and cotton.
The materials are so essential to the success of the range that the designers spend over four months of the year working with the artisans, encouraging those skills to stay alive and helping to boost local economies.
The dying process is incredible to witness.
The collections, designs and colour charts have to be ready for when the sun is strongest otherwise the vibrant colours don't develop enough to be Juliet Dunn – these fabrics really are sun drenched.
The block printing is a true art that has been used for centuries, wonderful to still be using wood to carve patterns and use for adornment. The paisley is a traditional theme and this can be developed to create the most fabulous motifs.
Labelled the 'Kaftan Queen', Juliet is inspired by sun drenched colours, a look which is glamorous but not glitzy.
Receive 10% off your first order!
© 2020 Juliet Dunn Online.
Built by AgilityWeb.
We use cookies to offer you a better browsing experience & analyze site traffic. If you continue to use this site you consent to our use of cookies. More Info


Bank of Jamaica announces its decision to lower the policy interest rate (the rate offered on overnight placements with Bank of Jamaica) by 25 basis points to 1.75 per cent.
This decision reflects the Bank's most recent assessment that inflation could now fall below the lower limit of the 4.0 per cent to 6.0 per cent target in the latter half of 2019 and early 2020. There is also some risk that inflation could fall below 4.0 per cent at December 2018.
The inflation rate at November 2018, as reported by the Statistical Institute of Jamaica, was 4.1 per cent, lower than the 4.7 per cent recorded at October 2018 and the 4.9 per cent at November 2017.
At the Bank's last assessment in November 2018, inflation was projected to approach the upper end of the 4.0 per cent to 6.0 per cent target by June 2019 and trend thereafter to the middle of the target range. Over the short term, the key sources of upward price pressures were expected to emanate from (1) continued improvements in domestic demand and (2) increases in utility rates consequent on an assumption that international oil prices would remain elevated for the next two quarters. One of the main downside risks to the November 2018 forecast that would cause inflation to be lower than projected was that international oil prices could be lower than anticipated.
Those downside risks have since materialised, with crude oil prices for October and November 2018 falling significantly below the Bank's forecast. In addition, the likelihood is increasing that oil prices will remain at their current low levels (approximately 30 per cent below the previous forecast) and this intensifies the risk of inflation breaching the lower limit of the Bank's target over the near term. Declines in domestic agricultural prices, associated with an expected recovery in crop production in the December 2018 quarter, could intensify this risk over the very short term.
Meanwhile, all measures of underlying inflation at November 2018 continued to be low, lending support to an assessment that recent improvements in domestic demand have not stimulated inflationary pressures in Jamaica.
Over the near term, the domestic economy is likely to continue to reflect some slack (i.e., projected GDP growth is less than the Bank's estimate of potential GDP growth). In the medium term, growth prospects are heavily contingent on the continued expansion of construction and agriculture, which both carry some downside risk. There is a downside risk to domestic growth from potentially weaker external demand signaled by the revision downwards in the US Federal Reserve's growth outlook, notwithstanding its decision this week to increase its policy rate. There is also a downside risk to domestic growth as the pace of expansion in private sector credit extended by deposit-taking institutions in October 2018 was lower than Bank of Jamaica's forecast and showed signs of weakening. Credit to the private sector expanded year over year by 16.3 per cent at October 2018, slightly lower than the growth of 16.4 per cent at September 2018 but above the 11.6 per cent at October 2017.
Bank of Jamaica's decision to lower the policy rate is therefore aimed at stimulating a pick-up in the rate of expansion in private sector credit, which should lead to higher economic activity, which will support inflation being maintained in the target range of 4.0 per cent to 6.0 per cent. Other macroeconomic indicators continue to be positive. Foreign reserves are above the level deemed to be adequate, market interest rates are low, labour market conditions are improving and fiscal performance continues to be strong.
The next policy decision announcement date is 20 February 2019.