Complete.Org: Mailing Lists: Archives: freeciv-dev: September 2001:
[Freeciv-Dev] Re: [PATCH] Leftover unhappiness (PR#656)
Home

[Freeciv-Dev] Re: [PATCH] Leftover unhappiness (PR#656)

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: freeciv-dev@xxxxxxxxxxx
Cc: bugs@xxxxxxxxxxxxxxxxxxx
Subject: [Freeciv-Dev] Re: [PATCH] Leftover unhappiness (PR#656)
From: Davide Pagnin <nightmare@xxxxxxxxxx>
Date: Sun, 2 Sep 2001 02:27:45 -0700 (PDT)

        Hi All!
Content-Type: multipart/mixed; boundary="------------BBA2ACDAA42AC91C7F071561"

This is a multi-part message in MIME format.
--------------BBA2ACDAA42AC91C7F071561
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

        Hi All!

This is the mail with the patches that introduces angry citizen.
I tested it with mine friends, of the italian freeciv team, and it seems
reliable.

The patch introduces a new server parameter that is set to 0 by default
so that old games and players that aren't interested can ignore
completely the new parameter.

Remember that to see effect of angryness of citizen, it is needed that
parameter
of empire_size_inc in government ruleset are set different of zero!

Thanks for your attention and don't hesitate to comment this patches.

        Ciao, Davide
--------------BBA2ACDAA42AC91C7F071561
Content-Type: text/plain; charset=us-ascii;
 name="angry-citizen-added-capstr.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="angry-citizen-added-capstr.diff"

diff -urN -Xfreeciv/diff_ignore freeciv.orig/common/capstr.c 
freeciv/common/capstr.c
--- freeciv.orig/common/capstr.c        Wed Aug 29 13:58:35 2001
+++ freeciv/common/capstr.c     Sat Sep  1 14:34:59 2001
@@ -70,7 +70,7 @@
  * are not directly related to the capability strings discussed here.)
  */
 
-#define CAPABILITY "+1.11.6 conn_info pop_cost turn"
+#define CAPABILITY "+1.11.6 conn_info pop_cost turn angrycitizen"
   
 /* "+1.11.6" is protocol for 1.11.6 beta release.
   
@@ -82,6 +82,10 @@
    cities.
 
    "turn" additionally transfers game.turn to the client.
+
+   "angrycitizen" introduces angry citizen, they are like superunhappy citizen
+   in civilization II, they are saved in ppl_residue[], and you must dealt 
with 
+   them before any citizens in a city can become unhappy.
 */
 
 void init_our_capability(void)

--------------BBA2ACDAA42AC91C7F071561
Content-Type: text/plain; charset=us-ascii;
 name="angry-citizen-added-1.12.1-devel.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="angry-citizen-added-1.12.1-devel.diff"

diff -urN -Xfreeciv/diff_ignore freeciv.orig/client/packhand.c 
freeciv/client/packhand.c
--- freeciv.orig/client/packhand.c      Wed Aug 29 13:58:26 2001
+++ freeciv/client/packhand.c   Sat Sep  1 18:14:51 2001
@@ -21,6 +21,7 @@
 #include <assert.h>
 
 #include "capstr.h"
+#include "capability.h"
 #include "events.h"
 #include "fcintl.h"
 #include "game.h"
@@ -276,6 +277,9 @@
   
   pcity->size=packet->size;
   for (i=0;i<5;i++) {
+    if (has_capability("angrycitizen", aconnection.capability))
+      pcity->ppl_residue[i]=packet->ppl_residue[i];
+    else pcity->ppl_residue[i]=0;
     pcity->ppl_happy[i]=packet->ppl_happy[i];
     pcity->ppl_content[i]=packet->ppl_content[i];
     pcity->ppl_unhappy[i]=packet->ppl_unhappy[i];
diff -urN -Xfreeciv/diff_ignore freeciv.orig/common/city.c freeciv/common/city.c
--- freeciv.orig/common/city.c  Sat Sep  1 18:02:45 2001
+++ freeciv/common/city.c       Sat Sep  1 18:14:51 2001
@@ -1416,6 +1416,7 @@
 **************************************************************************/
 static void happy_copy(struct city *pcity, int i)
 {
+  pcity->ppl_residue[i + 1] = pcity->ppl_residue[i];
   pcity->ppl_unhappy[i + 1] = pcity->ppl_unhappy[i];
   pcity->ppl_content[i + 1] = pcity->ppl_content[i];
   pcity->ppl_happy[i + 1] = pcity->ppl_happy[i];
@@ -1433,6 +1434,10 @@
   pcity->ppl_content[0] = MAX(0, MIN(workers, tmp));
   pcity->ppl_unhappy[0] = workers - pcity->ppl_content[0];
   pcity->ppl_happy[0] = 0;     /* no one is born happy */
+  if (game.angrycitizen == 0)
+    pcity->ppl_residue[0] = 0;
+  else
+    pcity->ppl_residue[0] = MIN(MAX(0, -tmp), pcity->size);
 }
 
 /**************************************************************************
@@ -1442,9 +1447,15 @@
 {
   int x = pcity->luxury_total;
   happy_copy(pcity, 0);
-  /* make people happy, content are made happy first, then unhappy content,
-     etc.  each conversions costs 2 luxuries. */
-  while (x >= 2 && (pcity->ppl_content[1])) {
+  /* make people happy: 
+     angry citizen (residue) are eliminated first,
+     then content are made happy, then unhappy content, etc.  
+     each conversions costs 2 luxuries. */
+  while (x >= 2 && pcity->ppl_residue[1]) {
+    pcity->ppl_residue[1]--;
+    x -= 2;
+  }
+  while (x >= 2 && pcity->ppl_content[1]) {
     pcity->ppl_content[1]--;
     pcity->ppl_happy[1]++;
     x -= 2;
@@ -1468,26 +1479,26 @@
 **************************************************************************/
 static void citizen_happy_units(struct city *pcity, int unhap)
 {
-  int step;
-
+  while (unhap > 0 && pcity->ppl_content[3]) {
+    pcity->ppl_content[3]--;
+    pcity->ppl_unhappy[3]++;
+    unhap--;
+  }
+  while (unhap >= 2 && pcity->ppl_happy[3]) {
+    pcity->ppl_happy[3]--;
+    pcity->ppl_unhappy[3]++;
+    unhap -= 2;
+  }
   if (unhap > 0) {
-    step = MIN(unhap, pcity->ppl_content[3]);
-    pcity->ppl_content[3] -= step;
-    pcity->ppl_unhappy[3] += step;
-    unhap -= step;
-    if (unhap > 0) {
-      step = MIN((unhap / 2), pcity->ppl_happy[3]);
-      pcity->ppl_happy[3] -= step;
-      pcity->ppl_unhappy[3] += step;
-      unhap -= step * 2;
-      if ((unhap > 0) && pcity->ppl_happy[3]) {
-       pcity->ppl_happy[3]--;
-       pcity->ppl_content[3]++;
-       unhap--;
-      }
-    }
+    if (pcity->ppl_happy[3] > 0) { /* 1 unhap left */
+      pcity->ppl_happy[3]--;
+      pcity->ppl_content[3]++;
+      unhap--;
+    } 
+    /* everyone is unhappy now, add unhap to residue */
+    if (game.angrycitizen == 1)
+      pcity->ppl_residue[3] = MIN(pcity->ppl_residue[3] + unhap, pcity->size);
   }
-  /* MAKE VERY UNHAPPY CITIZENS WITH THE REST, but that is not documented */
 }
 
 /**************************************************************************
@@ -1510,6 +1521,12 @@
     faces += get_colosseum_power(pcity);
   if (city_got_effect(pcity, B_CATHEDRAL))
     faces += get_cathedral_power(pcity);
+  /* make people content (but not happy):
+     get rid of residue first, then make unhappy content. */
+  while (faces && pcity->ppl_residue[2]) {
+    pcity->ppl_residue[2]--;
+    faces--;
+  }
   while (faces && pcity->ppl_unhappy[2]) {
     pcity->ppl_unhappy[2]--;
     pcity->ppl_content[2]++;
@@ -1534,7 +1551,7 @@
 {
   int bonus = 0;
   happy_copy(pcity, 3);
-  bonus = 0;
+
   if (city_affected_by_wonder(pcity, B_HANGING)) {
     bonus += 1;
     if (city_got_building(pcity, B_HANGING))
@@ -1551,12 +1568,18 @@
     bonus += 2;
   if (city_affected_by_wonder(pcity, B_CURE))
     bonus += 1;
+  /* get rid of residue first, then make unhappy content */
+  while (bonus && pcity->ppl_residue[4]) {
+    pcity->ppl_residue[4]--;
+    bonus--;
+  }
   while (bonus && pcity->ppl_unhappy[4]) {
     pcity->ppl_unhappy[4]--;
     pcity->ppl_content[4]++;
     bonus--;
   }
   if (city_affected_by_wonder(pcity, B_SHAKESPEARE)) {
+    pcity->ppl_residue[4] = 0;
     pcity->ppl_content[4] += pcity->ppl_unhappy[4];
     pcity->ppl_unhappy[4] = 0;
   }
@@ -1682,9 +1705,16 @@
     }
     unit_list_iterate_end;
     city_units *= g->martial_law_per;
-    city_units = MIN(city_units, pcity->ppl_unhappy[3]);
-    pcity->ppl_unhappy[3] -= city_units;
-    pcity->ppl_content[3] += city_units;
+    /* get rid of residue first, then make unhappy content */
+    while (city_units > 0 && pcity->ppl_residue[3]) {
+      pcity->ppl_residue[3]--;
+      city_units--;
+    }
+    while (city_units > 0 && pcity->ppl_unhappy[3]) {
+      pcity->ppl_unhappy[3]--;
+      pcity->ppl_content[3]++;
+      city_units--;
+    }
   }
 
   /* loop over units, subtracting appropriate amounts of food, shields,
@@ -1696,7 +1726,7 @@
     int food_cost = utype_food_cost(ut, g);
     int gold_cost = utype_gold_cost(ut, g);
 
-    /* Save old values so ve can decide if the unit info should be resent */
+    /* Save old values so we can decide if the unit info should be resent */
     int old_unhappiness = this_unit->unhappiness;
     int old_upkeep = this_unit->upkeep;
     int old_upkeep_food = this_unit->upkeep_food;
diff -urN -Xfreeciv/diff_ignore freeciv.orig/common/city.h freeciv/common/city.h
--- freeciv.orig/common/city.h  Mon Aug 27 13:58:56 2001
+++ freeciv/common/city.h       Sat Sep  1 18:14:51 2001
@@ -212,6 +212,7 @@
      ppl_*[2] is distribution after after building effects.
      ppl_*[3] is distribution after units enfored martial order.
      ppl_*[4] is distribution after wonders. (final result.) */
+  int ppl_residue[5]; /* angry citizen */
   int ppl_happy[5], ppl_content[5], ppl_unhappy[5];
 
   /* Specialists */
diff -urN -Xfreeciv/diff_ignore freeciv.orig/common/game.c freeciv/common/game.c
--- freeciv.orig/common/game.c  Fri Aug 31 13:56:42 2001
+++ freeciv/common/game.c       Sat Sep  1 18:14:51 2001
@@ -699,6 +699,7 @@
   game.cityfactor  = GAME_DEFAULT_CITYFACTOR;
   game.civilwarsize= GAME_DEFAULT_CIVILWARSIZE;
   game.unhappysize = GAME_DEFAULT_UNHAPPYSIZE;
+  game.angrycitizen= GAME_DEFAULT_ANGRYCITIZEN;
   game.foodbox     = GAME_DEFAULT_FOODBOX;
   game.aqueductloss= GAME_DEFAULT_AQUEDUCTLOSS;
   game.killcitizen = GAME_DEFAULT_KILLCITIZEN;
diff -urN -Xfreeciv/diff_ignore freeciv.orig/common/game.h freeciv/common/game.h
--- freeciv.orig/common/game.h  Fri Aug 31 13:56:42 2001
+++ freeciv/common/game.h       Sat Sep  1 18:14:51 2001
@@ -80,6 +80,7 @@
   int nbarbarians;
   int occupychance;
   int unhappysize;
+  int angrycitizen;
   char *startmessage;
   int conn_id;                 /* client-only: id client known to server as */
   int player_idx;
@@ -265,6 +266,10 @@
 #define GAME_DEFAULT_UNHAPPYSIZE 4
 #define GAME_MIN_UNHAPPYSIZE     1
 #define GAME_MAX_UNHAPPYSIZE     6
+
+#define GAME_DEFAULT_ANGRYCITIZEN 0
+#define GAME_MIN_ANGRYCITIZEN     0
+#define GAME_MAX_ANGRYCITIZEN     1
 
 #define GAME_DEFAULT_END_YEAR    2000
 #define GAME_MIN_END_YEAR        GAME_START_YEAR
diff -urN -Xfreeciv/diff_ignore freeciv.orig/common/packets.c 
freeciv/common/packets.c
--- freeciv.orig/common/packets.c       Sat Sep  1 18:02:37 2001
+++ freeciv/common/packets.c    Sat Sep  1 18:15:10 2001
@@ -1796,6 +1796,8 @@
   cptr=put_uint8(cptr, pinfo->freecost);
   cptr=put_uint8(cptr, pinfo->conquercost);
   cptr=put_uint8(cptr, pinfo->unhappysize);
+  if (pc && has_capability("angrycitizen", pc->capability))
+    cptr=put_uint8(cptr, pinfo->angrycitizen);
   
   for(i=0; i<A_LAST/*game.num_tech_types*/; i++)
     cptr=put_uint8(cptr, pinfo->global_advances[i]);
@@ -1851,6 +1853,10 @@
   iget_uint8(&iter, &pinfo->freecost);
   iget_uint8(&iter, &pinfo->conquercost);
   iget_uint8(&iter, &pinfo->unhappysize);
+  if (pc && has_capability("angrycitizen", pc->capability))
+    iget_uint8(&iter, &pinfo->angrycitizen);
+  else
+    pinfo->angrycitizen = 0;
   
   for(i=0; i<A_LAST/*game.num_tech_types*/; i++)
     iget_uint8(&iter, &pinfo->global_advances[i]);
@@ -2091,6 +2097,8 @@
   cptr=put_uint8(cptr, req->size);
 
   for(data=0;data<5;data++) {
+    if (pc && has_capability("angrycitizen", pc->capability))
+      cptr=put_uint8(cptr, req->ppl_residue[data]);
     cptr=put_uint8(cptr, req->ppl_happy[data]);
     cptr=put_uint8(cptr, req->ppl_content[data]);
     cptr=put_uint8(cptr, req->ppl_unhappy[data]);
@@ -2174,6 +2182,9 @@
   
   iget_uint8(&iter, &packet->size);
   for(data=0;data<5;data++) {
+    if (pc && has_capability("angrycitizen", pc->capability))
+      iget_uint8(&iter, &packet->ppl_residue[data]);
+    else packet->ppl_residue[data]=0;
     iget_uint8(&iter, &packet->ppl_happy[data]);
     iget_uint8(&iter, &packet->ppl_content[data]);
     iget_uint8(&iter, &packet->ppl_unhappy[data]);
diff -urN -Xfreeciv/diff_ignore freeciv.orig/common/packets.h 
freeciv/common/packets.h
--- freeciv.orig/common/packets.h       Wed Aug 29 13:58:36 2001
+++ freeciv/common/packets.h    Sat Sep  1 18:15:10 2001
@@ -325,6 +325,7 @@
   char name[MAX_LEN_NAME];
 
   int size;
+  int ppl_residue[5];
   int ppl_happy[5], ppl_content[5], ppl_unhappy[5];
   int ppl_elvis, ppl_scientist, ppl_taxman;
   int food_prod, food_surplus;
@@ -799,6 +800,7 @@
   int cooling;
   int cityfactor;
   int unhappysize;
+  int angrycitizen;
   int diplcost,freecost,conquercost;
   int global_advances[A_LAST];
   int global_wonders[B_LAST];
diff -urN -Xfreeciv/diff_ignore freeciv.orig/server/citytools.c 
freeciv/server/citytools.c
--- freeciv.orig/server/citytools.c     Fri Aug 31 13:56:52 2001
+++ freeciv/server/citytools.c  Sat Sep  1 18:14:51 2001
@@ -828,6 +828,7 @@
   pcity->size=1;
   pcity->ppl_elvis=1;
   pcity->ppl_scientist=pcity->ppl_taxman=0;
+  pcity->ppl_residue[4]=0;
   pcity->ppl_happy[4]=0;
   pcity->ppl_content[4]=1;
   pcity->ppl_unhappy[4]=0;
@@ -1385,6 +1386,7 @@
 
   packet->size=pcity->size;
   for (i=0;i<5;i++) {
+    packet->ppl_residue[i]=pcity->ppl_residue[i];
     packet->ppl_happy[i]=pcity->ppl_happy[i];
     packet->ppl_content[i]=pcity->ppl_content[i];
     packet->ppl_unhappy[i]=pcity->ppl_unhappy[i];
diff -urN -Xfreeciv/diff_ignore freeciv.orig/server/gamehand.c 
freeciv/server/gamehand.c
--- freeciv.orig/server/gamehand.c      Wed Aug 29 13:58:45 2001
+++ freeciv/server/gamehand.c   Sat Sep  1 18:15:10 2001
@@ -219,6 +219,7 @@
   ginfo.civstyle = game.civstyle;
   ginfo.spacerace = game.spacerace;
   ginfo.unhappysize = game.unhappysize;
+  ginfo.angrycitizen = game.angrycitizen;
   ginfo.cityfactor = game.cityfactor;
   for (i = 0; i < A_LAST /*game.num_tech_types */ ; i++)
     ginfo.global_advances[i] = game.global_advances[i];
diff -urN -Xfreeciv/diff_ignore freeciv.orig/server/savegame.c 
freeciv/server/savegame.c
--- freeciv.orig/server/savegame.c      Fri Aug 31 13:56:53 2001
+++ freeciv/server/savegame.c   Sat Sep  1 18:14:51 2001
@@ -1853,6 +1853,7 @@
     game.nuclearwinter = secfile_lookup_int_default(file, 0, 
"game.nuclearwinter");
     game.coolinglevel  = secfile_lookup_int_default(file, 8, 
"game.coolinglevel");
     game.unhappysize   = secfile_lookup_int(file, "game.unhappysize");
+    game.angrycitizen = secfile_lookup_int_default(file, 0, 
"game.angrycitizen");
 
     if (game.version >= 10100) {
       game.cityfactor  = secfile_lookup_int(file, "game.cityfactor");
@@ -2204,6 +2205,7 @@
   secfile_insert_int(file, game.nuclearwinter, "game.nuclearwinter");
   secfile_insert_int(file, game.coolinglevel, "game.coolinglevel");
   secfile_insert_int(file, game.unhappysize, "game.unhappysize");
+  secfile_insert_int(file, game.angrycitizen, "game.angrycitizen");
   secfile_insert_int(file, game.cityfactor, "game.cityfactor");
   secfile_insert_int(file, game.civilwarsize, "game.civilwarsize");
   secfile_insert_int(file, game.diplcost, "game.diplcost");
diff -urN -Xfreeciv/diff_ignore freeciv.orig/server/stdinhand.c 
freeciv/server/stdinhand.c
--- freeciv.orig/server/stdinhand.c     Mon Aug 27 13:59:09 2001
+++ freeciv/server/stdinhand.c  Sat Sep  1 18:14:51 2001
@@ -498,6 +498,16 @@
        "city are content, and subsequent citizens are unhappy.  "
        "See also cityfactor.") },
 
+  { "angrycitizen", &game.angrycitizen, NULL, NULL,
+    SSET_RULES, SSET_TO_CLIENT,
+    GAME_MIN_ANGRYCITIZEN, GAME_MAX_ANGRYCITIZEN,
+    GAME_DEFAULT_ANGRYCITIZEN,
+    N_("Whether angry citizens are present"),
+    N_("Introduces angry citizens, they are equivalent to superunhappy "
+       "citizen of civilization II. Angry citizens have to become unhappy " 
+       "before any other class of citizens may be considered. \n"
+       "See also unhappysize, cityfactor and governments.") },
+
   { "cityfactor", &game.cityfactor, NULL, NULL,
     SSET_RULES, SSET_TO_CLIENT,
     GAME_MIN_CITYFACTOR, GAME_MAX_CITYFACTOR, GAME_DEFAULT_CITYFACTOR,

--------------BBA2ACDAA42AC91C7F071561
Content-Type: text/plain; charset=us-ascii;
 name="angry-citizen-misc-data-modified.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="angry-citizen-misc-data-modified.diff"

Binary files freeciv.orig/data/misc/.xvpics/small.xpm and 
freeciv/data/misc/.xvpics/small.xpm differ
diff -Nur -Xfreeciv/diff_ignore freeciv.orig/data/misc/small.spec 
freeciv/data/misc/small.spec
--- freeciv.orig/data/misc/small.spec   Mon Jul 10 13:27:22 2000
+++ freeciv/data/misc/small.spec        Wed Apr 25 18:12:13 2001
@@ -9,6 +9,7 @@
 artists = "
     Alexandre Beraud <a_beraud@xxxxxxxx>
     Jeff Mallatt <jjm@xxxxxxxxxxxx> (cooling flakes)
+    Davide Pagnin <nightmare@xxxxxxxxxx>
 "
 
 [file]
@@ -39,46 +40,48 @@
   0,  8, "gov.anarchy"
   0,  9, "gov.despotism"
   0, 10, "gov.monarchy"
-  0, 11, "gov.communism"
-  0, 12, "gov.republic"
-  0, 13, "gov.democracy"
+  0, 11, "gov.republic"
+  0, 12, "gov.communism"
+  0, 14, "gov.fundamentalism"  ;for civII compatibility!
+  0, 15, "gov.democracy"
 
 ; Global warming progress indicators:
 
-  0, 14, "s.warming_sun_0"
-  0, 15, "s.warming_sun_1"
-  0, 16, "s.warming_sun_2"
-  0, 17, "s.warming_sun_3"
-  0, 18, "s.warming_sun_4"
-  0, 19, "s.warming_sun_5"
-  0, 20, "s.warming_sun_6"
-  0, 21, "s.warming_sun_7"
+  0, 16, "s.warming_sun_0"
+  0, 17, "s.warming_sun_1"
+  0, 18, "s.warming_sun_2"
+  0, 19, "s.warming_sun_3"
+  0, 20, "s.warming_sun_4"
+  0, 21, "s.warming_sun_5"
+  0, 22, "s.warming_sun_6"
+  0, 23, "s.warming_sun_7"
 
 ; Nuclear winter progress indicators:
 
-  0, 31, "s.cooling_flake_0"
-  0, 32, "s.cooling_flake_1"
-  0, 33, "s.cooling_flake_2"
-  0, 34, "s.cooling_flake_3"
-  0, 35, "s.cooling_flake_4"
-  0, 36, "s.cooling_flake_5"
-  0, 37, "s.cooling_flake_6"
-  0, 38, "s.cooling_flake_7"
+  0, 35, "s.cooling_flake_0"
+  0, 36, "s.cooling_flake_1"
+  0, 37, "s.cooling_flake_2"
+  0, 38, "s.cooling_flake_3"
+  0, 39, "s.cooling_flake_4"
+  0, 40, "s.cooling_flake_5"
+  0, 41, "s.cooling_flake_6"
+  0, 42, "s.cooling_flake_7"
 
 ; Citizen icons:
 
-  0, 22, "citizen.entertainer"
-  0, 23, "citizen.scientist"
-  0, 24, "citizen.tax_collector",
-        "gov.fundamentalism"    ; ?? need something...
-  0, 25, "citizen.content_0"
-  0, 26, "citizen.content_1"
-  0, 27, "citizen.happy_0"
-  0, 28, "citizen.happy_1"
-  0, 29, "citizen.unhappy_0", 
-        "citizen.unhappy_1"     ; Allow for two
+  0, 24, "citizen.entertainer"
+  0, 25, "citizen.scientist"
+  0, 26, "citizen.tax_collector"
+  0, 27, "citizen.content_0"
+  0, 28, "citizen.content_1"
+  0, 29, "citizen.happy_0"
+  0, 30, "citizen.happy_1"
+  0, 31, "citizen.unhappy_0" 
+  0, 32, "citizen.unhappy_1" 
+  0, 33, "citizen.angry_0" 
+  0, 34, "citizen.angry_1" 
 
 ; Right arrow icon:
 
-  0, 30, "s.right_arrow"
+  0, 43, "s.right_arrow"
 }
diff -Nur -Xfreeciv/diff_ignore freeciv.orig/data/misc/small.xpm 
freeciv/data/misc/small.xpm
--- freeciv.orig/data/misc/small.xpm    Mon Jul 10 13:27:23 2000
+++ freeciv/data/misc/small.xpm Wed Apr 25 18:27:42 2001
@@ -1,87 +1,87 @@
 /* XPM */
 static char * small_xpm[] = {
-"585 20 64 1",
+"660 20 64 1",
 "      c None",
-".     c #030408",
-"+     c #248C59",
-"@     c #899A68",
-"#     c #A30409",
-"$     c #8DD167",
-"%     c #134B54",
-"&     c #D69013",
-"*     c #CFCFB3",
-"=     c #9C5127",
-"-     c #5A0206",
-";     c #EDE92B",
-">     c #172F40",
-",     c #E45128",
-"'     c #624D32",
-")     c #AEA651",
-"!     c #3AC644",
-"~     c #E7B106",
-"{     c #2EAC52",
-"]     c #D4E6E2",
-"^     c #0305F5",
-"/     c #EFEADF",
-"(     c #EDD496",
-"_     c #A46D31",
-":     c #5F7373",
-"<     c #2230DA",
-"[     c #93AABB",
-"}     c #FDFDFA",
-"|     c #1C724A",
-"1     c #D16E23",
-"2     c #AEAEB2",
-"3     c #ED927B",
-"4     c #2C0E0F",
-"5     c #54D83C",
-"6     c #F90308",
-"7     c #AAEC2F",
-"8     c #70EB2A",
-"9     c #1EFE04",
-"0     c #5E9070",
-"a     c #5BB770",
-"b     c #5E331C",
-"c     c #9F3724",
-"d     c #F93621",
-"e     c #9594B2",
-"f     c #1753AD",
-"g     c #5453DA",
-"h     c #0A72EA",
-"i     c #6574DD",
-"j     c #98EBE0",
-"k     c #5B93E4",
-"l     c #308FD6",
-"m     c #EDB1AA",
-"n     c #03F2F2",
-"o     c #77EAFA",
-"p     c #6ECDF0",
-"q     c #E8797C",
-"r     c #A4D1D0",
-"s     c #AE7396",
-"t     c #2AAECD",
-"u     c #59ACF5",
-"v     c #B15A9D",
-"w     c #0DCEDE",
-"x     c #B18D27",
-"y     c #304E52",
-"^^^^^khiuk^^^^^^^^^^khiuk^^^^^^^^^^khiuk^^^^^^^^^^khiuk^^^^^^^^^^khiuk^^^^^^^^^^khiuk^^^^^^^^^^khiuk^^^^^^^g*gkliuk^g*<^~~~~~~~~~~~~~~~...............^^^^^^^^^^^^^^^666666666666666nnnnnn...wwwwtt<<gie2*/}(m3q,d........................................................................................................................hhhhh>..fhhhhhhy)33syyyyyyyyyyhhhhhl...hhhhhh}}}}}*c=c_}}}}}}}}}}}}}}}}}}}}}}}}}*c=c_}}}}}}}}}}}}}}}}}}}}}3m}}*c=c_}}}}}}}}}}}}}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!",
-"^^^^kf^f^<k^^^^^^^^kf^f^<k^^^^^^^^leeei<k^^^^^^^^iki[i<k^^^^^^^^ike2i<k^^^^^^^^ik****k^^^^^^^^ik****k^^^^^g]eir/}}/u^e*^~~~~~~~~~~~~~~~...1q11=_===...^>^>^>^>^>^>^>^66&6666&d66,&,6nnnnnn...wwtttl<<iie2*//(m3qqd........................................................................................................................hhh>>....fhhhhh:*(m3q>by'e(***hhhhh.....hhhhh}}}}}c=s1c}}}}}}}}}}}*..]}}}}}}}}}}c=s1c}}}}}}}}}}}*..]}}}}}}33q}c=s1c}}}}}}}}}}}}}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!!!!!}}}!!!!!!",
-"^^^k<uph^^hk^^^^^^k<uph^^hk^^^^^^uirpi<^hk^^^^^^uirri^^hk<^^^^^uerrr<^hk<^^^^^ue*]r((*k<^^^^^ue*/]/;*k^^^^/eu*}}/}}/u<*e~~~~_'4'bx~~~~~.41&==(~&=11=..^<^^<^^<^^<^^^<6&~&66&~~66&~~6nnnnnn...wtt3tl^ggie**//(m3q,d.............................................................................................................--#6#--....hh>...._=>hhhhhy((m3xyy@@['@yyhhhhhic1clhhhhh}}}}}m3331}}}}}}}}}}*.==.}}}}}}}}}}m3331}}}}}}}}}}*.==.}}}}}}(311m3331}}}}}}}*2}}}}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!!!!!!}!!!!!!!!!!!!!!}!!!!!!!",
-"^^^uuog^^^^p<^^^^^uuog^^^^p<^^^^^p*of^^^^p<^^^^^2roi<^^^u<^^^^^pr]r*(2^u<^^^^^p;r**;((p<^^^^^$]/]/}/(p<^^g]^r}}}}}}/]^g]~~~'>'.__'b~~~~.&11=c(~&=c1==.^>~^^>^^>^^>x>^6d~6666~d666~66nnnnn.....tt3+l<<gie2*/}(m3q,d.................................................................................>.>...........44444.......-#-.....-#-..hhf>f3=4qbhhhhhy((33'by[*0y20*hhhhhh33qhhhhhh}}}}}}33q(}}}}}}}}}}/q33v}}}}}}}}}}}qqq(}}}}}}}}}}/q33v}}}}}}}m3q>33q(}}}}}}}222/}}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!!!!!!}!!!!!!!}!!!!!!}!!!!!!}}!!}!!!}!!!}!!}",
-"^^k<ol^^^^^^l^^^^k<ol^^^^^^l^^^^kerk^^^^^^l^^^^k[oki)2<^^l^^^^k2rr(;(;*^l^^^^k**j(;((;*l^^^^k*]]}}}}}*l^^22k/}}}}}}}/k<*~~b'~'b>~~''~~~.=_1==~~x_=_==.^'~>^^>^^^><1y^66d6666666661d6nnnwww=1=tl33hl^ggie2]//(m3qqd................................................................>>>>>>.........>>%%%>>.......4>bybyb>4....--..44-44..--.hhhhh33'3=kklhhy'm3s'y>'/'y'*ehhhhh%[*mfhhhhh}}}}m##,c,3/}}}}}}}}._33='}}}}}}}}}31d,ss/}}}}}}}}._33='}}}}}}/33.....>:}}}}}2222/}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!}!!!!}}}!!!!}!!}}!!!}}}!!!}}!!}}!!!}}}!!!}}!",
-"^^ihu<^^^^^^u^^^^ihu<^^^^^^u^^^^hru<^^^^^^u^^^^h2ue(((*^^u^^^^ir]*;((((gk^^^^hr]*;//(((u^^^^hr//}}}}}(k^^]eh]}/}}}}}}u^/~xb~~bx'_~~''~~..1111m~&====..^:~'<^^^>^^<&_^666666666666666nnnwwwqq1tl**lf<<iie2*/}(m3q,d.................................................>>%%%>>.......>>%y|f%%>.....>>yfgy:f%>>....4>bb='c'b>4..-#.4-------4.#4hhik..33q222[hhy'//2:yyy:y}yyyhhhhf.>.'.hhhhh}}}3#######,}}}}}}}}>4334.}}}}}}}}es*v3ssv/}}}}}}}>4334.}}}}}}}3b......4e}}}}22[22/}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!}!!!}}}!!!}!!!!}!!!}}}!!!}!!!}}!!!}}}!!!}}!!}}!!!}}}!!!}}!",
-"^^u<f^^^^^^^u^^^^u<f^^^^^^^u^^^^kefgies^<^u^^^^u2i*(**()^u^^^^urr/}];(*eu^^^^kr*/}}};**u^^^^u*}}}}}}}*u^^*gk/}}}}}/}}p^]~b_~~bxx>&~~>_~...==1(~x===...^:~g^y^>^^>'x:^666666666666666nwwwtt1bq+h..|g<qgi22=//(m3q,d......................>.............>>>.........>>||l||>>.....>>f0:00:y%>....>f|:0::::%>...4b'==v=v=='b4.#..---###---..#he3_.>h[22222hhy*}}/*yby=3e>*:hhhh>.e.e.>hhhh}},#########s}}}}}}>|6||#|b}}}}}/sssmdmvsvv}}}}}}>p333el:}}}}}}}>4......3/}}}22e222}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!!}!!!}!!!}!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!}!!}}!!}!!}}!!}",
-"^^u^^g<^^<i<u^^^^u^^)(2i<i<u^^^^ug<2;(2eigu^^^^k:<(;/(*2eu^^^^u2*;//}}*ru^^^^u[];}}}/*ru^^^^u[]}}}}//*u^^[gu]}}}}}}/}u<e~yx~~>~~='~~&b&.=1111~~&=1=14.^y~x>x<^^x<x&'^666666666666166wwtwtt*b*+l..|g^qgie2c}/(m3qqd.......>>...........%%|%%.........>f|++%>.......%|0aaa0|%.....%y00@@@0:f>>..>%:::e_e::yf>..>b'=,,,,,='b>.-.4-#######--.-h'32lhl22*22e[hy*}}/2:y@(33ye2hhh>..>....fhhh}=##q1#######(}}}}r||6||#|+}}}}/3svv3#mvssv3}}}}]ptt3)ttt/}}}}}//>.4..>333}}}2[)e222/}}}}}!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!!!}!!}!!}!!!!!!!!}!!}!!}!!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!",
-"^^u^^eg^^ek<p^^^^u^^ee)**u<p^^^^u<<m;(;([kp^^^^u^i((;/;[ep^^^^u^;(;(;/]*p^^^^u*((}/};**p^^^^u*/}}}}}/*p^^ieu]}}}}}/}/peg~bx~~>~~~>&x_.b.1&1_1m~&=1_c'4^'~)x&x^_&_&x'^666,d1~d6666d~6wwtt.........ff<qq,e2==b(m33qd.....%%%%>.........%|+{+|>........|+{a{+f......>|ua$$$a{|>...>%:0@)))@0:%>.>>f::s_1_s@:y%.4b'=,,,,,,,='b4.4--##6#6##--...>222k2222222[hy//}}]22/*2:by:hhf....>....fhh},#v/m####1###}}}]|+|66##||$}}}msvsss#qvsssv*}}/3)tttttt[3/}}}}/}'..../33q(}}22ee[222/}}}}!!!!!!!}!!!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!",
-"^^^l<ie^<lkl<^^^^^l<ge^<kkl<^^^^^k<i2***2u<^^^^^k<22(*[[[<^^^^^u(;((;r][<^^^^^k;;(;/r]2<^^^^^k;}/}/}][<^^g2^[}}/}}}}*<e<~bx_b4'b>4.''>_.q1_1=(~&==_=c>^y~)~&x>x&x&&:^6d~~~&,66666&~dttt....}.....fy^qqqe2==c(m33qd....>%+{+%>........%+!5!+|.......>|{585{+>.....%|a$777$u+%...>f0@)x&))@0f>..%::xs111_s0y%>>bc=,,,d,,,v'b4.4-###6666##-4.fhk2222[[222e@iy]}}2/*/**@y___hh..>.....>..hh}/,#q3####}m##c}}3+{|66##+||r}}ssv(ss,sv/ssvv}}333ptttlr33m}}}}}}2..../}33m}}2[2)ee[22/}}}!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!",
-"^^^u^^2^kp^u^^^^^^u^<e^kp^u^^^^^^u^<@^[p:u^^^^^^u^<@(*$2p^^^^^^u2;];*](p^^^^^^u*(;*]**p^^^^^^u*(;}/](p^^^^2gp(}}/}}}p<2^..4b>_x&~~.~~'x.1111=~~&1=1=bb>g~~~)&&&&&&&_^6~~~~16d&,,&~~6ttl.........yfy<q1,e2='b(m333d....>|{9{|>.......>|{!85{f>......>+a878a+>.....%+a$7;7$a:%...%y0@)&&&)@0y>.>%g:s_1,11s::>.4y==,,d,,d,==b4.4-##666#6##--.>hhl*2e322222[[x/}}}****ssxsxeh%..h.....h..fh}}},3q4<--r},##/33q}|66##+++{}}ssq/ssssv(}ssvm33q/pttltp/33}}}}}}2..../}m3q}}2)ee2eee@}}}}!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!",
-"^^^^l<e<[ip<^^^^^^^k<e<[ip<^^^^^^^l<e<[2r<^^^^^^^l<@e[2p<^^^^^^^l)(r*(p<^^^^^^^l2(*]*r<^^^^^^^l2**](p<^^^^<e^l]}/}/r<ei^~yx~b)~~~~_'~bx.1_111(~&11='=4^y~)~~&&&&&x&:<6~~~&~16d~~~~d6tll..}.}..fyfy<<}}}e2;;;(mb-bd.....%+{|%>........%{!5!+%.......>|{585{|>....4>|a$777$a+%>..>f:@)&~&@@0f%..%|:e1111_s0f%>4b'=,,,,,,,v'y4.4-###666###-4.f%hhhk33222222eh]/}//2khhhhhhhh>.>h.....h%.sh}}}}m<<<<.g}}##(33/}6666##j|+}}33}/sssvv/}/svm33m}patttl}33}}}}/2.....2}}3q}/22e)@ee:/}}}}!!!!!!!}!!!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!",
-"^^^^^ukeeo^^^^^^^^^^ueeeo^^^^^^^^^^ukeeo^^^^^^^^^^uke2j^^^^^^^^^^uke*r^^^^^^^^^^u@e*r^^^^^^^^^^u@e*j^^^^^^^g*^u]/}j^ie^^~=_x>~~~~~xb)bx.1=~(~m~~~(&=c>4:~0)~1#1&x:x_^6d&d6,~~~&d,d66l+l...*3..yfyfy^...e2...(m...d.....>%|%>.........%|+{+|%.......>%+aa{+f>.....>|0a$$$a0|>...>%:0@)))@0:%>.>>y::_s1_e::y%.4>c=,,,,d,,=c>4.4--###6###--4.h>fhhhhl[2222)kh]/]}]rhhhhhhhhh33lh.....hhs3l}}}}e44^><.}}333q/}}6666##}|+}}33}mvvvsv(}}333q/}ruttltl]m3}}}}}'4:(..y}}3q}/22eees@*}}}}}!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!!!}!!}!!}!!!!!!!!}!!}!!}!!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!",
-"^^^^^^r[e^^^^^^^^^^^^p[e^^^^^^^^^^^^r[e^^^^^^^^^^^^r[e^^^^^^^^^^^^r@[^^^^^^^^^^^^p[@^^^^^^^^^^^^p@e^^^^^^^^^^^^p[e^^^^^^~&>__~~~~~~bb>~.c_m~~~~~~~&'bb^:@+0)6#6&:|::^66d6661~~666666lb-b-b-b-bbb-b><...e2...(m...d.......>>...........>%|%%.........>f|+|%>......>%|{aaa0|%.....%f00@@@00y%...>%::e:xs:::%>.4>''=,,,,===b>.-.--#######-4.-hhf>hhh[2222[ehhr}//]2hhhhhhhhhiehhf...%hh4'h}}}}g<^'<>^}}m333}}}6666##}33}}}}}ssv3sv*}}m333}}pattttta33/}}}/}/*2b..2=b3}/22)e:e/}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!!}!!!}!!!}!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!}!!}}!!}!!}}!!}",
-"^^^^^^pep^^^^^^^^^^^^p[p^^^^^^^^^^^^p@p^^^^^^^^^^^^p[p^^^^^^^^^^^^pep^^^^^^^^^^^^pep^^^^^^^^^^^^p2p^^^^^^^^^^^^p)p^^^^^^~~>'&~~~~~~).4~.4_~&x(~x&x&bc4^:~0)&16=&&|x_^66666,~&~,66666|h11111111,11%><...e2...(m...d.....................>.>...........>>>>>........>>|:++|%>.....>%y:0:0:f%>....>fy:::0::%>>..4bb======='b4.#..--####---4.#hhhf>h2[222)ehhh]}}}**hhhhhhhhhhhhhh...fh>..h}}}}<44]g4^2}}}}}}}}6666##}3q}}}}}svs3vv(}}}}}}}}uttttltl3q}}}}**sgs24bc=}}}/2eee@/}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!}!!!}}}!!!}!!!!}!!!}}}!!!}!!!}}!!!}}}!!!}}!!}}!!!}}}!!!}}!",
-"^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^~~~._~~~~~~b'~~..==_1m~&=='bb4^:~~~~&~&&&&xx^66661~16d~,6666||_=========1<><...e2...(m...d.................................................>>>%>>........>>fyfy%>>.....>>%:f:yyf>.....4>b'==c'b>4..-#..4------..#4hhhhh[222[2[[hhhr}}]*rhhhhhhhhhhhhhh...fh..>h}}}2<^<}e<4<}}}}}}}}66####}}}}}}}/svs2sv}}}}}}}}]pttttttl}}}}}}b)iyee=b.]}}}/2e0s/}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!}!!!!}}}!!!!}!!}}!!!}}}!!!}}!!}}!!!}}}!!!}}!",
-"^^^^^^*22^^^^^^^^^^^^*2e^^^^^^^^^^^^*2[^^^^^^^^^^^^*2e^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*2e^^^^^^^^^^^^*22^^^^^^~~~~byxxx'>'~~~..b=1=&&&=cbb4.^y_:xxxx)xx:'^^666d&,666d~d666gf1=1_1_1_111>>^...e2...(m...d................................................................>>>>>>........>>>%%%>>>......4>bbbyb4>....--..44-44..#-.hhhhk22[eh22e_hh]}}}2*hhhhhhhhhhhhhh...hh...h}}}<>42}]<4<}}}}}}}}}mq3q}}}}}}}}ssvmqsv}}}}}}}}uatttttt+t}}}}}.>mige_..e}}}/2ee/}}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!!!!!!}!!!!!!!}!!!!!!}!!!!!!}}!!}!!!}!!!}!!}",
-"^^^^^^*2[^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*2[^^^^^^^^^^^^*2[^^^^^^^^^^^^*22^^^^^^^^^^^^*2e^^^^^^~~~~~_'b''x~~~~...=1===c'c'4..^^^^^^^^^^^<^>^6666666666dd666|f1=,_,1=1_1_>><<gie2*//(m3q,d...................................................................>.............>.>............4444.......-#-.....-#4..hhhhc#=ehhhe##chhur*[hhhhhhhhhhhhhhh...fh...h}}}<^</}}<<./}}}}}}}}3333}}}}}}}}ssv/msv}}}}}}}}ptuuttuttu}}}}}.>22)e[..:}}}/e0/}}}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!!!!!}}}!!!!!!",
-"^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*2e^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^~~~~~~~~~~~~~~~...b===='c'b4..<^>^>^>^>^^^^^<666666666666666fy1=1x1111111>><<iie2*}/(m3q,d.............................................................................................................--#6#--....hhfb###f%hhhv##hhh]2hhhhhhhhhhhhhhhh...hh>.>h}_=>4i}}}sbbe}}}}}}}}(3qm}}}}}}}'4>v/s'b:}}}}}}}}}}(33/}}}}}}_=..m2g<e=be}}}}}}}}}}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!",
-"^^^^^^^2^^^^^^^^^^^^^^2^^^^^^^^^^^^^^2^^^^^^^^^^^^^^[^^^^^^^^^^^^^^e^^^^^^^^^^^^^^2^^^^^^^^^^^^^^[^^^^^^^^^^^^^^2^^^^^^^~~~~~~~~~~~~~~~........444....^^<^^^^^>^>^>^^666666666666666f%1_11_111_11>>^ggie2*//(m3qqd........................................................................................................................hg####bhf%h####hhh...hhhhhhhhhhhhhh.....hhfhh}cbcb_}}}=bb=}}}}}}}}....}}}}}}/...b}24.'}}}}}}}}}}..4.}}}}}}bcbb_)e/=bb=}}}}}}}}}}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"};
+".     c #0305F5",
+"+     c #5B93E4",
+"@     c #0A72EA",
+"#     c #6574DD",
+"$     c #59ACF5",
+"%     c #5453DA",
+"&     c #CFCFB3",
+"*     c #308FD6",
+"=     c #2230DA",
+"-     c #E7B106",
+";     c #030408",
+">     c #03F2F2",
+",     c #0DCEDE",
+"'     c #2AAECD",
+")     c #F90308",
+"!     c #FDFDFA",
+"~     c #9594B2",
+"{     c #AEAEB2",
+"]     c #EFEADF",
+"^     c #EDD496",
+"/     c #EDB1AA",
+"(     c #ED927B",
+"_     c #E8797C",
+":     c #E45128",
+"<     c #F93621",
+"[     c #172F40",
+"}     c #1753AD",
+"|     c #304E52",
+"1     c #AEA651",
+"2     c #AE7396",
+"3     c #9F3724",
+"4     c #9C5127",
+"5     c #A46D31",
+"6     c #3AC644",
+"7     c #93AABB",
+"8     c #D4E6E2",
+"9     c #A4D1D0",
+"0     c #D16E23",
+"a     c #D69013",
+"b     c #5F7373",
+"c     c #5E331C",
+"d     c #624D32",
+"e     c #6ECDF0",
+"f     c #EDE92B",
+"g     c #2C0E0F",
+"h     c #B18D27",
+"i     c #5A0206",
+"j     c #A30409",
+"k     c #899A68",
+"l     c #77EAFA",
+"m     c #8DD167",
+"n     c #248C59",
+"o     c #5E9070",
+"p     c #B15A9D",
+"q     c #98EBE0",
+"r     c #134B54",
+"s     c #1C724A",
+"t     c #5BB770",
+"u     c #2EAC52",
+"v     c #54D83C",
+"w     c #70EB2A",
+"x     c #AAEC2F",
+"y     c #1EFE04",
+".....+@#$+..........+@#$+..........+@#$+..........+@#$+..........+@#$+..........+@#$+..........+@#$+.......%&%+*#$+.%&=.---------------;;;;;;;;;;;;;;;...............>>>>>>;;;,,,,'')))))))))))))))!!!!!!!!!!!!!!!@@@@@*;;;@@@@@@==%#~{&]!^/(_:<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@[;;}@@@@@@|1((2||||||||||@@@@@*;;;@@@@@@!!!!!&3435!!!!!!!!!!!!!!!!!!!!!!!!!&3435!!!!!!!!!!!!!!!!!!!!!(/!!&3435!!!!!!!!!!!!!!!!!!!!!(/!!&3435!!!!!!!!!!!!!!!!!!!!6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666!6666666!!!!!!!!!!!!!!!",
+"....+}.}.=+........+}.}.=+........*~~~#=+........#+#7#=+........#+~{#=+........#+&&&&+........#+&&&&+.....%8~#9]!!]$.~&.---------------;;;0_0045444;;;.[.[.[.[.[.[.[.>>>>>>;;;,,'''*))a))))a<)):a:)!!!!!!!!!!!!!!!@@@@@;;;;;@@@@@==##~{&]]^/(__<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@[[;;;;}@@@@@b&^/(_[c|d~^&&&@@@@@;;;;;@@@@@!!!!!34203!!!!!!!!!!!&;;8!!!!!!!!!!34203!!!!!!!!!!!&;;8!!!!!!((_!34203!!!!!!!!!!!&;;8!!!!!!((_!34203!!!!!!!!!!!&;;8!!!!!6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666!6666666666666!!!666666!!!!!!!!!!!!!!!",
+"...+=$e@..@+......+=$e@..@+......$#9e#=.@+......$#99#..@+=.....$~999=.@+=.....$~&89^^&+=.....$~&]8]f&+....]~$&!!]!!]$=&~----5dgdch-----;g0a44^-a4004;;.=..=..=..=...=>>>>>>;;;,''('*)a-a))a--))a--)!!!!!!!!!!!!!!!@@@@@#303*@@@@@.%%#~&&]]^/(_:<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iij)jii;;;;@@[;;;;54[@@@@@|^^/(h||kk7dk||@@@@@#303*@@@@@!!!!!/(((0!!!!!!!!!!&;44;!!!!!!!!!!/(((0!!!!!!!!!!&;44;!!!!!!^(00/(((0!!!!!!!!!!&;44;!!!!!!^(00/(((0!!!!!!!!!!&;44;!!!!!6666666666666666666666666666666666666666666666666666666666666666666666666666666666!66666666666666!66666666666666!6666666!&{!!!!!!!!!!!!",
+"...$$l%....e=.....$$l%....e=.....e&l}....e=.....{9l#=...$=.....e989&^{.$=.....ef9&&f^^e=.....m8]8]!]^e=..%8.9!!!!!!]8.%8---d[d;55dc----;a0043^-a43044;.[-..[..[..[h[.>>>>>;;;;;''(n*)<-))))-<)))-))!!!!!!!!!!!!!!!@@@@@@((_@@@@@@==%#~{&]!^/(_:<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[;[;;;;;;;;;;;ggggg;;;;;;;iji;;;;;iji;;@@}[}(4g_c@@@@@|^^((dc|7&o|{o&@@@@@@((_@@@@@@!!!!!!((_^!!!!!!!!!!]_((p!!!!!!!!!!!___^!!!!!!!!!!]_((p!!!!!!!/(_[((_^!!!!!!!!!!]_((p!!!!!!!/(_j((_^!!!!!!!!!!]_((p!!!!!6666666666666666666666666666666666666666666666666666666666666666666!66666666666666!6666666!666666!666666!!66!666!666!66!!{{{]!!!!!!!!!!",
+"..+=l*......*....+=l*......*....+~9+......*....+7l+#1{=..*....+{99^f^f&.*....+&&q^f^^f&*....+&88!!!!!&*..{{+]!!!!!!!]+=&--cd-dc[--dd---;45044--h54544;.d-[..[...[=0|.>>>,,,404'*((@*))<)))))))))0<)!!!!!!!!!!!!!!!@@@@@r7&/}@@@@@.%%#~{8]]^/(__<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[[[[[[;;;;;;;;;[[rrr[[;;;;;;;g[c|c|c[g;;;;ii;;ggigg;;ii;@@@@@((d(4++*@@|d/(2d|[d]d|d&~@@@@@r7&/}@@@@@!!!!/jj:3:(]!!!!!!!!;5((4d!!!!!!!!!(0<:22]!!!!!!!!;5((4d!!!!!!]((;;;;;[b!!!!!!!!;5((4d!!!!!!]((jjjjjjb!!!!!!!!;5((4d!!!!6666666666666666666666666666666666666666666666666666666666666666666!66666666!6666!!!6666!66!!666!!!666!!66!!666!!!666!!6!{{{{]!!!!!!!!!",
+"..#@$=......$....#@$=......$....@9$=......$....@{$~^^^&..$....#98&f^^^^%+....@98&f]]^^^$....@9]]!!!!!^+..8~@8!]!!!!!!$.]-hc--chd5--dd--;;0000/-a4444;;.b-d=...[..=a5.>>>,,,__0'*&&*})))))))))))))))!!!!!!!!!!!!!!!@@@@};[;d;@@@@@==##~{&]!^/(_:<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[[rrr[[;;;;;;;[[r|s}rr[;;;;;[[|}%|b}r[[;;;;g[cc4d3dc[g;;ij;giiiiiiig;jg@@#+;;((_{{{7@@|d]]{b|||b|!|||@@@@};[;d;@@@@@!!!(jjjjjjj:!!!!!!!![g((g;!!!!!!!!~2&p(22p]!!!!!!![g((g;!!!!!!!(c;;;;;;g~!!!!!!![g((g;!!!!!!!(j))))))j~!!!!!!![g((g;!!!!6666666666666666666666666666666666666666666666666666!666666666!666!!!666!6666!666!!!666!666!!666!!!666!!66!!666!!!666!!6!{{7{{]!!!!!!!!",
+"..$=}.......$....$=}.......$....+~}%#~2.=.$....${#&^&&^1.$....$99]!8f^&~$....+9&]!!!f&&$....$&!!!!!!!&$..&%+]!!!!!]!!e.8-c5--chh[a--[5-;;;440^-h444;;;.b-%.|.[..[dhb.>,,,''0c_n@;;s%)))))))))))))))!!!!!!!!!!!!!!!@@@@[;~;~;[@@@@=_%#{{4]]^/(_:<;;;;;;;;;;;;;;;;;;;;;;[;;;;;;;;;;;;;[[[;;;;;;;;;[[ss*ss[[;;;;;[[}oboob|r[;;;;[}sbobbbbr[;;;gcd44p4p44dcg;j;;iiijjjiii;;j@~(5;[@7{{{{{@@|&!!]&|c|4(~[&b@@@@[;~;~;[@@@@!!:jjjjjjjjj2!!!!!![sjssjsc!!!!!]222/</p2pp!!!!!![e(((~*b!!!!!!![g;;;;;;(]!!!!![s;ss;sc!!!!!!!jj)))))j(]!!!!![s)ss)sc!!!6666666666666666666666666666666666666!6666666666!666!666!666666!!66!66!!666666!!66!66!!666666!!66!66!!666!66!!66!66!!66!!{{~{{{!!!!!!!!",
+"..$..%=..=#=$....$..1^{#=#=$....$%={f^{~#%$....+b=^f]^&{~$....${&f]]!!&9$....$78f!!!]&9$....$78!!!!]]&$..7%$8!!!!!!]!$=~-|h--[--4d--aca;40000--a4040g;.|-h[h=..h=had.,,',''&c&n*;;s%))))))))))))0))!!!!!!!!!!!!!!!@@@[;;[;;;;}@@@._%#~{3!]^/(__<;;;;;;;[[;;;;;;;;;;;rrsrr;;;;;;;;;[}snnr[;;;;;;;rsotttosr;;;;;r|ookkkob}[[;;[rbbb~5~bb|}[;;[cd4:::::4dc[;i;gijjjjjjjii;i@d({*@*{{&{{~7@|&!!]{b|k^((|~{@@@[;;[;;;;}@@@!4jj_0jjjjjjj^!!!!9ssjssjsn!!!!](2pp(j/p22p(!!!!8e''(1''']!!!!!]][;g;;[(((!!!!9ss;ss;sn!!!!!!]]j))))j(((!!!!9ss)ss)sn!!!6666666666666666666666!66666666666!66!66!66666666!66!66!6666666!!66!66!!666666!!66!66!!666666!!66!66!!666666!!66!66!!666!{71~{{{]!!!!!!",
+"..$..~%..~+=e....$..~~1&&$=e....$==/f^f^7+e....$.#^^f]f7~e....$.f^f^f]8&e....$&^^!]!f&&e....$&]!!!!!]&e..#~$8!!!!!]!]e~%-ch--[---[ah5;c;0a050/-a4053dg.d-1hah.5a5ahd.,,'';;;;;;;;;}}))):<0-<))))<-)!!!!!!!!!!!!!!!@@};;;;[;;;;}@@=__:~{44c^/((_<;;;;;rrrr[;;;;;;;;;rsnuns[;;;;;;;;snutun};;;;;;[s$tmmmtus[;;;[rbok111kobr[;[[}bb25052kb|r;gcd4:::::::4dcg;giijj)j)jjii;;;[{{{+{{{{{{{7@|]]!!8{{]&{bc|b@@};;;;[;;;;}@@!:jp]/jjjj0jjj!!!8snsjjjjssm!!!/2p222j_p222p&!!](1''''''7(]!!!!]!d;;;;]((_^!!8sns;;;;ssm!!!!!]!j))))]((_^!!8sns))))ssm!!6666666!666666666666!6!6!6666666666!6!6!6666666666!6!6!6666666666!6!6!6666666666!6!6!6666666666!6!6!6666666666!6!6!66666!{{~~7{{{]!!!!!",
+"...*=#~.=*+*=.....*=%~.=++*=.....+=#{&&&{$=.....+={{^&777=.....$^f^^f987=.....+ff^f]98{=.....+f!]!]!87=..%{.7!!]!!!!&=~=-ch5cgdc[g;dd[5;_0504^-a44543[.|-1-ah[hahaab.''';;;;!;;;;;}|)<---a:)))))a-<!!!!!!!!!!!!!!!@@;;[;;;;;[;;@@.___~{443^/((_<;;;;[rnunr[;;;;;;;;rn6v6ns;;;;;;;[suvwvun[;;;;;rstmxxxm$nr;;;[}ok1ha11ko}[;;rbbh200052o|r[[c34:::<:::pdcg;gijjj))))jjig;}@+{{{{77{{{~k#|8!!{]&]&&k|555@@;;[;;;;;[;;@@!]:j_(jjjj!/jj3!!(nusjjjjnss9!!22p^22:2p]22pp!!(((e'''*9((/!!!!!!{;;;;]!((/!!(nus;;;;nss9!!!!!!{))))]!((/!!(nus))))nss9!666666!!!666666666666!!!666666666666!!!666666666666!!!666666666666!!!666666666666!!!666666666666!!!666666666666!!!666666!{7{1~~7{{]!!!!",
+"...$..{.+e.$......$.=~.+e.$......$.=k.7eb$......$.=k^&m{e......${f8f&8^e......$&^f&8&&e......$&^f!]8^e....{%e^!!]!!!e={.;;gc[5ha--;--dh;00004--a0404cc[%---1aaaaaaa5.''*;;;;;;;;;|}|)----0)<a::a--)!!!!!!!!!!!!!!!@r;;@;;;;;@;;}@=_0:~{4dc^/(((<;;;;[suyus[;;;;;;;[su6wvu}[;;;;;;[ntwxwtn[;;;;;rntmxfxmtbr;;;r|ok1aaa1ko|[;[r%b250:002bb[;g|44::<::<:44cg;gijj)))j)jjii;[@@*&{~({{{{{77h]!!!&&&&22h2h~@r;;@;;;;;@;;}@!!!:(_g=ii9!:jj]((_!sjjjjnnnu!!22_]2222p^!22p/((_]e''*'e]((!!!!!!{;;;;]!/(_]((_!s;;;;nnnu!!!!!!{))))]!/(_]((_!s))))nnnu!666666!!!666666666666!!!666666666666!!!666666666666!!!666666666666!!!666666666666!!!666666666666!!!666666666666!!!666666!{1~~{~~~k!!!!!",
+"....*=~=7#e=.......+=~=7#e=.......*=~=7{9=.......*=k~7{e=.......*1^9&^e=.......*{^&8&9=.......*{&&8^e=....=~.*8!]!]9=~#.-|h-c1----5d-ch;05000^-a004d4g.|-1--aaaaahab='**;;!;!;;}|}|=)---a-0)<----<)!!!!!!!!!!!!!!!@[;[@;;;;;@r;2@=!!!~{fff^/cic<;;;;;rnusr[;;;;;;;;ru6v6nr;;;;;;;[suvwvus[;;;;g[stmxxxmtnr[;;[}bk1a-akko}r;;rsb~000052o}r[gcd4:::::::pd|g;gijjj)))jjjig;}r@@@+(({{{{{{~@8]!]]{+@@@@@@@@[;[@;;;;;@r;2@!!!!/====;%!!jj^((]!jjjjjjqsn!!((!]222pp]!]2p/((/!et'''*!((!!!!]{;;;;;{!!(_^((]!;;;;;;qsn!!!!]{))))){!!(_^((]!))))))qsn!6666666!666666666666!6!6!6666666666!6!6!6666666666!6!6!6666666666!6!6!6666666666!6!6!6666666666!6!6!6666666666!6!6!66666]{{~1k~~b]!!!!!",
+".....$+~~l..........$~~~l..........$+~~l..........$+~{q..........$+~&9..........$k~&9..........$k~&q.......%&.$8]!q.#~..-45h[-----hc1ch;04-^-/---^a43[gb-o1-0j0ahbh5.*n*;;;&(;;|}|}|)<a<):---a<:<))!!!!!!!!!!!!!!!@((*@;;;;;@@2(*.;;;~{;;;^/;;;<;;;;;[rsr[;;;;;;;;;rsnunsr;;;;;;;[rnttun}[;;;;;[sotmmmtos[;;;[rbok111kobr[;[[|bb5205~bb|r;g[34::::<::43[g;giijjj)jjjiig;@[}@@@@*7{{{{1+@8]8!89@@@@@@@@@((*@;;;;;@@2(*!!!!~gg.[=;!!(((_]!!jjjjjj!sn!!((!/ppp2p^!!(((_]!9$''*'*8/(!!!!!dgb^;;|!!(_(_]!!;;;;;;!sn!!!!!djb^))j!!(_(_]!!))))))!sn!6666666666666666666666!66666666666!66!66!66666666!66!66!6666666!!66!66!!666666!!66!66!!666666!!66!66!!666666!!66!66!!666]{{~~~2k&!!!!!!",
+"......97~............e7~............97~............97~............9k7............e7k............ek~............e7~......-a[55------cc[-;35/-------adcc.bkno1)j)absbb.*cicicicicccic[))<)))0--))))))!!!!!!!!!!!!!!!@#~@@};;;r@@gd@=;;;~{;;;^/;;;<;;;;;;;[[;;;;;;;;;;;[rsrr;;;;;;;;;[}snsr[;;;;;;[rsutttosr;;;;;r}ookkkoo|r;;;[rbb~bh2bbbr[;g[dd4::::444c[;i;iijjjjjjjig;i@@}[@@@7{{{{7~@@9!]]8{@@@@@@@@@#~@@};;;r@@gd@!!!!%=.d=[.!!/(((!!!jjjjjj!((!!!!!22p(2p&!!/(((!!et'''''t((]!!!]!]&{c;;{4c(((!!!;;;;;;!((!!!!]!]&{c)){4c(((!!!))))))!((!6666666666666666666666666666666666666!6666666666!666!666!666666!!66!66!!666666!!66!66!!666666!!66!66!!666!66!!66!66!!66!]{{1~b~]!!!!!!!",
+"......e~e............e7e............eke............e7e............e~e............e~e............e{e............e1e......--[da------1;g-;g5-ah^-hahac3g.b-o1a0)4aash5.s@00000000:00r[))))):-a-:)))))!!!!!!!!!!!!!!!@@@@@@;;;}@[;;@=;;;~{;;;^/;;;<;;;;;;;;;;;;;;;;;;;;;[;[;;;;;;;;;;;[[[[[;;;;;;;;[[sbnnsr[;;;;;[r|bobob}r[;;;;[}|bbbobbr[[;;gcc4444444dcg;j;;iijjjjiiig;j@@@}[@{7{{{1~@@@8!!!&&@@@@@@@@@@@@@@;;;}@[;;@!!!!=gg8%g.{!!!!!!!!jjjjjj!(_!!!!!2p2(pp^!!!!!!!!$''''*'*(_!!!!&&2%2{gc34!!!!!!!;;;;;;!(_!!!!&&2%2{gc34!!!!!!!))))))!(_!6666666666666666666666666666666666666666666666666666!666666666!666!!!666!6666!666!!!666!666!!666!!!666!!66!!666!!!666!!6]{~~~k]!!!!!!!!",
+"......&{{............&{{............&{{............&{{............&{{............&{{............&{{............&{{......---;5------cd--;;4450/-a44dccg.b----a-aaaahh.ss54444444440=[))))0-0)<-:))))!!!!!!!!!!!!!!!@@@@@@;;;}@;;[@=;;;~{;;;^/;;;<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[[[r[[;;;;;;;;[[}|}|r[[;;;;;[[rb}b||}[;;;;;g[cd443dc[g;;ij;;giiiiii;;jg@@@@@7{{{7{77@@@9!!8&9@@@@@@@@@@@@@@;;;}@;;[@!!!{=.=!~=g=!!!!!!!!jjjjjj!!!!!!!]2p2{2p!!!!!!!!8e''''''*!!!!!!c1#|~~4c;8!!!!!!!;;;;;;!!!!!!!c1#|~~4c)8!!!!!!!))))))!!!!6666666666666666666666666666666666666666666666666666666666666666666!66666666!6666!!!6666!66!!666!!!666!!66!!666!!!666!!6]{~o2]!!!!!!!!!",
+"......&{{............&{~............&{7............&{~............&{{............&{{............&{~............&{{......----c|hhhd[d---;;c404aaa43ccg;.|5bhhhh1hhbd..%}04050505000[[)))<a:)))<-<)))!!!!!!!!!!!!!!!@@@@@@;;;@@;;;@.;;;~{;;;^/;;;<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[[[[[[;;;;;;;;[[[rrr[[[;;;;;;g[ccc|cg[;;;;ii;;ggigg;;ji;@@@@+{{7~@{{~5@@8!!!{&@@@@@@@@@@@@@@;;;@@;;;@!!!=[g{!8=g=!!!!!!!!!/_(_!!!!!!!!22p/_2p!!!!!!!!$t''''''n'!!!!!;[/#%~5;;~!!!!!!!!/_(_!!!!!!!!)j/#%~5))~!!!!!!!!/_(_!!!!!6666666666666666666666666666666666666666666666666666666666666666666!66666666666666!6666666!666666!666666!!66!666!666!66!]{~~]!!!!!!!!!!",
+"......&{7............&{{............&{{............&{{............&{7............&{7............&{{............&{~......-----5dcddh----;;;404443d3dg;;...........=.[.s}04:5:040505[[))))))))))<<)))!!!!!!!!!!!!!!!@@@@@@;;;}@;;;@==%#~{&]]^/(_:<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[;;;;;;;;;;;;;[;[;;;;;;;;;;;;gggg;;;;;;;iji;;;;;ijg;;@@@@3j4~@@@~jj3@@$9&7@@@@@@@@@@@@@@@;;;}@;;;@!!!=.=]!!==;]!!!!!!!!((((!!!!!!!!22p]/2p!!!!!!!!e'$$''$''$!!!!!;[{{1~7;;b!!!!!!!!((((!!!!!!!!)j{{1~7))b!!!!!!!!((((!!!!!6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666!6666666666666!!!666666]~o]!!!!!!!!!!!",
+"......&{{............&{{............&{~............&{{............&{{............&{{............&{{............&{{......---------------;;;c4444d3dcg;;=.[.[.[.[.....=}|040h0000000[[)))))))))))))))!!!!!!!!!!!!!!!@@@@@@;;;@@[;[@==##~{&!]^/(_:<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iij)jii;;;;@@}cjjj}r@@@pjj@@@8{@@@@@@@@@@@@@@@@;;;@@[;[@!54[g#!!!2cc~!!!!!!!!^(_/!!!!!!!dg[p]2dcb!!!!!!!!!!^((]!!!!!!54;;/{%=~4c~!!!!!!!!^(_/!!!!!!54))/{%=~4j~!!!!!!!!^(_/!!!!!6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666!6666666!!!!!!!!!!!!!!!",
+".......{..............{..............{..............7..............~..............{..............7..............{.......---------------;;;;;;;;ggg;;;;..=.....[.[.[..}r05005000500[[)))))))))))))))!!!!!!!!!!!!!!!@@@@@;;;;;@@}@@.%%#~{&]]^/(__<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@%jjjjc@}r@jjjj@@@;;;@@@@@@@@@@@@@@;;;;;@@}@@!3c3c5!!!4cc4!!!!!!!!;;;;!!!!!!];;;c!{g;d!!!!!!!!!!;;g;!!!!!!c3cc51~]4cc4!!!!!!!!;;;;!!!!!!c3cc51~]4cc4!!!!!!!!;;;;!!!!!666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666!!!!!!!!!!!!!!!"};

--------------BBA2ACDAA42AC91C7F071561
Content-Type: text/plain; charset=us-ascii;
 name="angry-citizen-display-gtk.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="angry-citizen-display-gtk.diff"

diff -Nur -Xfreeciv/diff_ignore freeciv.orig/client/gui-gtk/citydlg.c 
freeciv/client/gui-gtk/citydlg.c
--- freeciv.orig/client/gui-gtk/citydlg.c       Mon Apr 23 13:32:56 2001
+++ freeciv/client/gui-gtk/citydlg.c    Wed Apr 25 17:13:25 2001
@@ -1487,7 +1536,13 @@
                       i*width, 0, TRUE);
   }
 
-  for (n=0; n<pcity->ppl_unhappy[4]; n++, i++) {
+  for (n=0; n<pcity->ppl_residue[4]; n++, i++) {
+    gtk_pixcomm_copyto(GTK_PIXCOMM(pdialog->citizen_pixmap),
+                      get_citizen_sprite(9 + i%2),
+                      i*width, 0, TRUE);
+  }
+
+  for (n=0; n<pcity->ppl_unhappy[4]-pcity->ppl_residue[4]; n++, i++) {
     gtk_pixcomm_copyto(GTK_PIXCOMM(pdialog->citizen_pixmap),
                       get_citizen_sprite(7 + i%2),
                       i*width, 0, TRUE);
diff -Nur -Xfreeciv/diff_ignore freeciv.orig/client/tilespec.c 
freeciv/client/tilespec.c
--- freeciv.orig/client/tilespec.c      Wed Apr 18 13:34:46 2001
+++ freeciv/client/tilespec.c   Wed Apr 25 17:14:36 2001
@@ -466,6 +466,8 @@
   SET_SPRITE(citizen[6], "citizen.happy_1");
   SET_SPRITE(citizen[7], "citizen.unhappy_0");
   SET_SPRITE(citizen[8], "citizen.unhappy_1");
+  SET_SPRITE(citizen[9], "citizen.angry_0");
+  SET_SPRITE(citizen[10], "citizen.angry_1");
 
   SET_SPRITE(spaceship.solar_panels, "spaceship.solar_panels");
   SET_SPRITE(spaceship.life_support, "spaceship.life_support");
diff -Nur -Xfreeciv/diff_ignore freeciv.orig/client/tilespec.h 
freeciv/client/tilespec.h
--- freeciv.orig/client/tilespec.h      Wed Feb  7 13:31:11 2001
+++ freeciv/client/tilespec.h   Wed Apr 25 17:14:48 2001
@@ -66,7 +66,7 @@
                              (!!(e))*BIT_EAST  | (!!(w))*BIT_WEST)
 
 #define NUM_TILES_PROGRESS 8
-#define NUM_TILES_CITIZEN 9
+#define NUM_TILES_CITIZEN 11
 #define NUM_TILES_HP_BAR 11
 #define NUM_TILES_DIGITS 10
 

--------------BBA2ACDAA42AC91C7F071561
Content-Type: text/plain; charset=us-ascii;
 name="angry-citizen-report.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="angry-citizen-report.diff"

diff -urN -Xfreeciv/diff_ignore freeciv/client/cityrepdata.c 
freeciv-1.12.0/client/cityrepdata.c
--- freeciv/client/cityrepdata.c        Tue Jun 26 20:04:01 2001
+++ freeciv-1.12.0/client/cityrepdata.c Sat Sep  1 12:25:32 2001
@@ -74,10 +74,11 @@
 static char *cr_entry_workers(struct city *pcity)
 {
   static char buf[32];
-  my_snprintf(buf, sizeof(buf), "%d/%d/%d",
+  my_snprintf(buf, sizeof(buf), "%d/%d/%d/%d",
              pcity->ppl_happy[4],
              pcity->ppl_content[4],
-             pcity->ppl_unhappy[4]);
+             pcity->ppl_unhappy[4]-pcity->ppl_residue[4],
+          pcity->ppl_residue[4]);
   return buf;
 }
 
@@ -200,8 +201,8 @@
                                       FUNC_TAG(hstate_verbose) },
   { 0,  1, 1, NULL,  NULL,            N_("Concise *=Rapture, X=Disorder"),
                                       FUNC_TAG(hstate_concise) },
-  { 1,  8, 1, N_("Workers"), N_("H/C/U"),
-                                      N_("Workers: Happy, Content, Unhappy"),
+  { 1, 10, 1, N_("Workers"), N_("H/C/U/A"),
+                                      N_("Workers: Happy, Content, Unhappy, 
Angry"),
                                       FUNC_TAG(workers) },
   { 0,  7, 1, N_("Special"), N_("E/S/T"),
                                       N_("Entertainers, Scientists, Taxmen"),

--------------BBA2ACDAA42AC91C7F071561--




[Prev in Thread] Current Thread [Next in Thread]