From 98ba50f80e4eb29796df2b286eb31920a66d2a08 Mon Sep 17 00:00:00 2001
From: charras <Unknown>
Date: Wed, 3 Feb 2010 14:05:17 +0000
Subject: [PATCH] Use layer_widget in Gerbview Added sample gerber files for
 test (gerbview has problem with 2 files)

---
 gerbview/CMakeLists.txt                       |    2 +
 gerbview/class_gerbview_layer_widget.cpp      |  246 +++
 gerbview/class_gerbview_layer_widget.h        |   83 +
 gerbview/edit.cpp                             |   17 +-
 .../gerber_test_files/apertures_rotated.gbr   | 1109 +++++++++++++
 .../apertures_rotated_and_arcs_in_tracks.gbr  | 1417 +++++++++++++++++
 ...lygons.gbr => test_polygons_with_arcs.gbr} |    0
 ...gbr => test_polygons_with_arcs_simple.gbr} |    0
 gerbview/gerberframe.cpp                      |  158 +-
 gerbview/gerbview.cpp                         |    4 +-
 gerbview/gerbview.h                           |    9 +-
 gerbview/gerbview_config.cpp                  |    4 -
 gerbview/gerbview_config.h                    |    9 -
 .../gerbview_dialog_display_options_frame.cpp |   10 +-
 gerbview/gerbview_id.h                        |   16 +-
 gerbview/onrightclick.cpp                     |    4 -
 gerbview/options.cpp                          |   38 +-
 .../{set_color.cpp => set_color.cpp.unused}   |    0
 gerbview/{set_color.h => set_color.h.unused}  |    0
 gerbview/tool_gerber.cpp                      |   82 +-
 gerbview/tracepcb.cpp                         |    2 +-
 gerbview/wxGerberFrame.h                      |   67 +
 ...heyCyrillic.h => HersheyCyrillic.h.unused} |    0
 ...hershey_fonts.h => hershey_fonts.h.unused} |    0
 include/id.h                                  |    1 -
 internat/fr/kicad.mo                          |  Bin 224683 -> 224843 bytes
 internat/fr/kicad.po                          |  895 ++++++-----
 pcbnew/CMakeLists.txt                         |    1 +
 pcbnew/class_pcb_layer_widget.cpp             |  347 ++++
 pcbnew/class_pcb_layer_widget.h               |   81 +
 pcbnew/dialog_general_options.cpp             |   25 +-
 pcbnew/menubar_pcbframe.cpp                   |    2 +-
 pcbnew/pcbframe.cpp                           |  348 +---
 33 files changed, 4013 insertions(+), 964 deletions(-)
 create mode 100644 gerbview/class_gerbview_layer_widget.cpp
 create mode 100644 gerbview/class_gerbview_layer_widget.h
 create mode 100644 gerbview/gerber_test_files/apertures_rotated.gbr
 create mode 100644 gerbview/gerber_test_files/apertures_rotated_and_arcs_in_tracks.gbr
 rename gerbview/gerber_test_files/{test_polygons.gbr => test_polygons_with_arcs.gbr} (100%)
 rename gerbview/gerber_test_files/{test_polygons_simple.gbr => test_polygons_with_arcs_simple.gbr} (100%)
 rename gerbview/{set_color.cpp => set_color.cpp.unused} (100%)
 rename gerbview/{set_color.h => set_color.h.unused} (100%)
 rename include/{HersheyCyrillic.h => HersheyCyrillic.h.unused} (100%)
 rename include/{hershey_fonts.h => hershey_fonts.h.unused} (100%)
 create mode 100644 pcbnew/class_pcb_layer_widget.cpp
 create mode 100644 pcbnew/class_pcb_layer_widget.h

diff --git a/gerbview/CMakeLists.txt b/gerbview/CMakeLists.txt
index 0dac90ea10..4ff0fc1b6b 100644
--- a/gerbview/CMakeLists.txt
+++ b/gerbview/CMakeLists.txt
@@ -18,6 +18,7 @@ endif(APPLE)
 
 set(GERBVIEW_SRCS
     block.cpp
+    class_gerbview_layer_widget.cpp
     controle.cpp
     dcode.cpp
     deltrack.cpp
@@ -50,6 +51,7 @@ set(GERBVIEW_SRCS
 
 set(GERBVIEW_EXTRA_SRCS
     ../share/setpage.cpp
+    ../pcbnew/layer_widget.cpp
     ../pcbnew/printout_controler.cpp
 )
 
diff --git a/gerbview/class_gerbview_layer_widget.cpp b/gerbview/class_gerbview_layer_widget.cpp
new file mode 100644
index 0000000000..69772be65c
--- /dev/null
+++ b/gerbview/class_gerbview_layer_widget.cpp
@@ -0,0 +1,246 @@
+/*
+ * This program source code file is part of KICAD, a free EDA CAD application.
+ *
+ * Copyright (C) 2004-2010 Jean-Pierre Charras, jean-pierre.charras@gpisa-lab.inpg.fr
+ * Copyright (C) 2010 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
+ * Copyright (C) 2010 Kicad Developers, see change_log.txt for contributors.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, you may find one here:
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ * or you may search the http://www.gnu.org website for the version 2 license,
+ * or you may write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ */
+
+
+/*********************************************************/
+/* class_gerbview_layer_widget.cpp - gerbview layers manager. */
+/*********************************************************/
+
+#include "fctsys.h"
+#include "common.h"
+#include "class_drawpanel.h"
+#include "pcbstruct.h"
+#include "gerbview.h"
+#include "wxGerberFrame.h"
+#include "layer_widget.h"
+#include "class_gerbview_layer_widget.h"
+
+
+/**
+ * Class GERBER_LAYER_WIDGET
+ * is here to implement the abtract functions of LAYER_WIDGET so they
+ * may be tied into the WinEDA_GerberFrame's data and so we can add a popup
+ * menu which is specific to PCBNEW's needs.
+ */
+
+
+GERBER_LAYER_WIDGET::GERBER_LAYER_WIDGET( WinEDA_GerberFrame* aParent, wxWindow* aFocusOwner, int aPointSize ) :
+    LAYER_WIDGET( aParent, aFocusOwner, aPointSize ),
+    myframe( aParent )
+{
+    BOARD*  board = myframe->GetBoard();
+
+    // Fixed "Rendering" tab rows within the LAYER_WIDGET, only the initial color
+    // is changed before appending to the LAYER_WIDGET.  This is an automatic variable
+    // not a static variable, change the color & state after copying from code to renderRows
+    // on the stack.
+    LAYER_WIDGET::ROW renderRows[2] = {
+
+#define RR  LAYER_WIDGET::ROW   // Render Row abreviation to reduce source width
+
+             // text                id                      color       tooltip                 checked
+        RR( _( "Grid" ),            GERBER_GRID_VISIBLE,    WHITE,      _( "Show the (x,y) grid dots" ) ),
+        RR( _( "DCodes" ),          DCODES_VISIBLE,         WHITE,      _( "Show DCodes identification" ) ),
+    };
+
+    for( unsigned row=0;  row<DIM(renderRows);  ++row )
+    {
+        if( renderRows[row].color != -1 )       // does this row show a color?
+        {
+            // this window frame must have an established BOARD, i.e. after SetBoard()
+            renderRows[row].color = board->GetVisibleElementColor( renderRows[row].id );
+        }
+        renderRows[row].state = board->IsElementVisible( renderRows[row].id );
+    }
+
+    AppendRenderRows( renderRows, DIM(renderRows) );
+
+    //-----<Popup menu>-------------------------------------------------
+    // handle the popup menu over the layer window.
+    m_LayerScrolledWindow->Connect( wxEVT_RIGHT_DOWN,
+        wxMouseEventHandler( GERBER_LAYER_WIDGET::onRightDownLayers ), NULL, this );
+
+    // since Popupmenu() calls this->ProcessEvent() we must call this->Connect()
+    // and not m_LayerScrolledWindow->Connect()
+    Connect( ID_SHOW_ALL_COPPERS, ID_SHOW_NO_COPPERS, wxEVT_COMMAND_MENU_SELECTED,
+        wxCommandEventHandler( GERBER_LAYER_WIDGET::onPopupSelection ), NULL, this );
+
+    // install the right click handler into each control at end of ReFill()
+    // using installRightLayerClickHandler
+}
+
+
+void GERBER_LAYER_WIDGET::installRightLayerClickHandler()
+{
+    int rowCount = GetLayerRowCount();
+    for( int row=0;  row<rowCount;  ++row )
+    {
+        for( int col=0; col<LYR_COLUMN_COUNT;  ++col )
+        {
+            wxWindow* w = getLayerComp( row, col );
+
+            w->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler(
+                GERBER_LAYER_WIDGET::onRightDownLayers ), NULL, this );
+        }
+    }
+}
+
+
+void GERBER_LAYER_WIDGET::onRightDownLayers( wxMouseEvent& event )
+{
+    wxMenu          menu;
+
+    // menu text is capitalized:
+    // http://library.gnome.org/devel/hig-book/2.20/design-text-labels.html.en#layout-capitalization
+    menu.Append( new wxMenuItem( &menu, ID_SHOW_ALL_COPPERS,
+        _("Show All Layers") ) );
+
+    menu.Append( new wxMenuItem( &menu, ID_SHOW_NO_COPPERS,
+        _( "Hide All Layers" ) ) );
+
+    PopupMenu( &menu );
+
+    passOnFocus();
+}
+
+void GERBER_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event )
+{
+    int     rowCount;
+    int     menuId = event.GetId();
+    bool    visible;
+
+    switch( menuId )
+    {
+    case ID_SHOW_ALL_COPPERS:
+        visible = true;
+        goto L_change_coppers;
+
+    case ID_SHOW_NO_COPPERS:
+        visible = false;
+    L_change_coppers:
+        int lastCu = -1;
+        rowCount = GetLayerRowCount();
+        for( int row=rowCount-1;  row>=0;  --row )
+        {
+            wxCheckBox* cb = (wxCheckBox*) getLayerComp( row, 3 );
+            int layer = getDecodedId( cb->GetId() );
+            if( IsValidCopperLayerIndex( layer ) )
+            {
+                lastCu = row;
+                break;
+            }
+        }
+
+        for( int row=0;  row<rowCount;  ++row )
+        {
+            wxCheckBox* cb = (wxCheckBox*) getLayerComp( row, 3 );
+            int layer = getDecodedId( cb->GetId() );
+
+            if( IsValidCopperLayerIndex( layer ) )
+            {
+                cb->SetValue( visible );
+
+                bool isLastCopperLayer = (row==lastCu);
+
+                OnLayerVisible( layer, visible, isLastCopperLayer );
+
+                if( isLastCopperLayer )
+                    break;
+            }
+        }
+        break;
+    }
+}
+
+
+void GERBER_LAYER_WIDGET::ReFill()
+{
+    BOARD*  brd = myframe->GetBoard();
+    int     layer;
+    ClearLayerRows();
+    for( layer = 0; layer < LAYER_COUNT; layer++ )
+    {
+        wxString msg;
+        msg.Printf( _("Layer %d"), layer+1 );
+        AppendLayerRow( LAYER_WIDGET::ROW( msg, layer, brd->GetLayerColor( layer ), wxEmptyString, true ) );
+    }
+
+    installRightLayerClickHandler();
+}
+
+//-----<LAYER_WIDGET callbacks>-------------------------------------------
+
+void GERBER_LAYER_WIDGET::OnLayerColorChange( int aLayer, int aColor )
+{
+    myframe->GetBoard()->SetLayerColor( aLayer, aColor );
+    myframe->DrawPanel->Refresh();
+}
+
+bool GERBER_LAYER_WIDGET::OnLayerSelect( int aLayer )
+{
+    // the layer change from the GERBER_LAYER_WIDGET can be denied by returning
+    // false from this function.
+//    myframe->setActiveLayer( aLayer, false );
+//    myframe->syncLayerBox();
+    if(DisplayOpt.ContrastModeDisplay)
+        myframe->DrawPanel->Refresh();
+
+    return true;
+}
+
+void GERBER_LAYER_WIDGET::OnLayerVisible( int aLayer, bool isVisible, bool isFinal )
+{
+    BOARD* brd = myframe->GetBoard();
+
+    int visibleLayers = brd->GetVisibleLayers();
+
+    if( isVisible )
+        visibleLayers |= (1 << aLayer);
+    else
+        visibleLayers &= ~(1 << aLayer);
+
+    brd->SetVisibleLayers( visibleLayers );
+
+    if( isFinal )
+        myframe->DrawPanel->Refresh();
+}
+
+void GERBER_LAYER_WIDGET::OnRenderColorChange( int aId, int aColor )
+{
+    myframe->GetBoard()->SetVisibleElementColor( aId, aColor );
+    myframe->DrawPanel->Refresh();
+}
+
+void GERBER_LAYER_WIDGET::OnRenderEnable( int aId, bool isEnabled )
+{
+    BOARD*  brd = myframe->GetBoard();
+        brd->SetElementVisibility( aId, isEnabled );
+
+    myframe->DrawPanel->Refresh();
+}
+
+//-----</LAYER_WIDGET callbacks>------------------------------------------
+
+
diff --git a/gerbview/class_gerbview_layer_widget.h b/gerbview/class_gerbview_layer_widget.h
new file mode 100644
index 0000000000..caf9d3a5aa
--- /dev/null
+++ b/gerbview/class_gerbview_layer_widget.h
@@ -0,0 +1,83 @@
+/*
+ * This program source code file is part of KICAD, a free EDA CAD application.
+ *
+ * Copyright (C) 2004-2010 Jean-Pierre Charras, jean-pierre.charras@gpisa-lab.inpg.fr
+ * Copyright (C) 2010 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
+ * Copyright (C) 2010 Kicad Developers, see change_log.txt for contributors.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, you may find one here:
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ * or you may search the http://www.gnu.org website for the version 2 license,
+ * or you may write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ */
+
+
+/************************************************************/
+/* class_gerber_layer_widget.h : header for the layers manager */
+/************************************************************/
+
+#ifndef _CLASS_GERBER_LAYER_WIDGET_H_
+#define _CLASS_GERBER_LAYER_WIDGET_H_
+
+#include "layer_widget.h"
+
+/**
+ * Class GERBER_LAYER_WIDGET
+ * is here to implement the abtract functions of LAYER_WIDGET so they
+ * may be tied into the WinEDA_GerberFrame's data and so we can add a popup
+ * menu which is specific to PCBNEW's needs.
+ */
+class GERBER_LAYER_WIDGET : public LAYER_WIDGET
+{
+    WinEDA_GerberFrame*    myframe;
+
+    // popup menu ids.
+#define ID_SHOW_ALL_COPPERS     wxID_HIGHEST
+#define ID_SHOW_NO_COPPERS      (wxID_HIGHEST+1)
+
+    /**
+     * Function OnRightDownLayers
+     * puts up a popup menu for the layer panel.
+     */
+    void onRightDownLayers( wxMouseEvent& event );
+
+    void onPopupSelection( wxCommandEvent& event );
+
+    /// this is for the popup menu, the right click handler has to be installed
+    /// on every child control within the layer panel.
+    void installRightLayerClickHandler();
+
+public:
+
+    /**
+     * Constructor
+     * @param aPointSize is the font point size to use within the widget.  This
+     *  effectively sets the overal size of the widget via the row height and bitmap
+     *  button sizes.
+     */
+    GERBER_LAYER_WIDGET( WinEDA_GerberFrame* aParent, wxWindow* aFocusOwner, int aPointSize = 10 );
+
+    void ReFill();
+
+    //-----<implement LAYER_WIDGET abstract callback functions>-----------
+    void OnLayerColorChange( int aLayer, int aColor );
+    bool OnLayerSelect( int aLayer );
+    void OnLayerVisible( int aLayer, bool isVisible, bool isFinal );
+    void OnRenderColorChange( int aId, int aColor );
+    void OnRenderEnable( int aId, bool isEnabled );
+    //-----</implement LAYER_WIDGET abstract callback functions>----------
+};
+
+#endif  // _CLASS_GERBER_LAYER_WIDGET_H_
diff --git a/gerbview/edit.cpp b/gerbview/edit.cpp
index 4b052c8349..9684209d60 100644
--- a/gerbview/edit.cpp
+++ b/gerbview/edit.cpp
@@ -49,7 +49,7 @@ void WinEDA_GerberFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
         break;
 
 
-    case ID_PCB_DELETE_ITEM_BUTT:
+    case ID_GERBVIEW_DELETE_ITEM_BUTT:
         DrawStruct = GerberGeneralLocateAndDisplay();
         if( DrawStruct == NULL )
             break;
@@ -126,7 +126,7 @@ void WinEDA_GerberFrame::Process_Special_Functions( wxCommandEvent& event )
         Files_io( event );
         break;
 
-    case ID_PCB_GLOBAL_DELETE:
+    case ID_GERBVIEW_GLOBAL_DELETE:
         Erase_Current_Layer( TRUE );
         break;
 
@@ -152,20 +152,11 @@ void WinEDA_GerberFrame::Process_Special_Functions( wxCommandEvent& event )
     case ID_POPUP_CANCEL_CURRENT_COMMAND:
         break;
 
-    case ID_POPUP_PCB_DELETE_TRACKSEG:
-        DrawPanel->MouseToCursorSchema();
-        if( GetScreen()->GetCurItem() == NULL )
-            break;
-        Delete_Segment( &dc, (TRACK*) GetScreen()->GetCurItem() );
-        GetScreen()->SetCurItem( NULL );
-        GetScreen()->SetModify();
-        break;
-
-    case ID_PCB_DELETE_ITEM_BUTT:
+    case ID_GERBVIEW_DELETE_ITEM_BUTT:
         SetToolID( id, wxCURSOR_BULLSEYE, wxT( "Delete item" ) );
         break;
 
-    case ID_TOOLBARH_PCB_SELECT_LAYER:
+    case ID_TOOLBARH_GERBVIEW_SELECT_LAYER:
         GetScreen()->m_Active_Layer = m_SelLayerBox->GetChoice();
         DrawPanel->Refresh( TRUE );
         break;
diff --git a/gerbview/gerber_test_files/apertures_rotated.gbr b/gerbview/gerber_test_files/apertures_rotated.gbr
new file mode 100644
index 0000000000..3f1e72768b
--- /dev/null
+++ b/gerbview/gerber_test_files/apertures_rotated.gbr
@@ -0,0 +1,1109 @@
+%ICAS*%
+%FSLAX44Y44*%
+%OFA0B0*%
+%SFA1B1*%
+%MOMM*%
+%AMFRECTNOHOLE10*
+21,1,1.5748,2.2860,0.0000,0.0000,0*
+%
+%AMFRECTNOHOLE11*
+21,1,0.5080,1.1430,0.0000,0.0000,180*
+%
+%AMFRECTNOHOLE12*
+21,1,1.5240,2.0320,0.0000,0.0000,180*
+%
+%AMFRECTNOHOLE13*
+21,1,1.5240,2.0320,0.0000,0.0000,270*
+%
+%AMFRECTNOHOLE14*
+21,1,1.5240,2.0320,0.0000,0.0000,90*
+%
+%AMFRECTNOHOLE15*
+21,1,0.8890,1.3970,0.0000,0.0000,270*
+%
+%ADD10FRECTNOHOLE10*%
+%ADD11FRECTNOHOLE11*%
+%ADD12FRECTNOHOLE12*%
+%ADD13FRECTNOHOLE13*%
+%ADD14FRECTNOHOLE14*%
+%ADD15FRECTNOHOLE15*%
+%ADD17C,0.3048X0.0000X0.0000*%
+%ADD19C,1.6764X0.0000X0.0000*%
+%ADD22C,2.2860X0.0000X0.0000*%
+%LNBottom*%
+G54D10*
+X2279650Y-1339850D3*
+X1809750Y-1339850D3*
+G54D11*
+X2355850Y-1435100D3*
+X2343150Y-1371600D3*
+X2355850Y-1371600D3*
+X2368550Y-1371600D3*
+X2381250Y-1371600D3*
+X2393950Y-1371600D3*
+X2406650Y-1371600D3*
+X2419350Y-1371600D3*
+X2432050Y-1371600D3*
+X2432050Y-1435100D3*
+X2419350Y-1435100D3*
+X2406650Y-1435100D3*
+X2393950Y-1435100D3*
+X2381250Y-1435100D3*
+X2368550Y-1435100D3*
+X2343150Y-1435100D3*
+X1885950Y-1435100D3*
+X1873250Y-1371600D3*
+X1885950Y-1371600D3*
+X1898650Y-1371600D3*
+X1911350Y-1371600D3*
+X1924050Y-1371600D3*
+X1936750Y-1371600D3*
+X1949450Y-1371600D3*
+X1962150Y-1371600D3*
+X1962150Y-1435100D3*
+X1949450Y-1435100D3*
+X1936750Y-1435100D3*
+X1924050Y-1435100D3*
+X1911350Y-1435100D3*
+X1898650Y-1435100D3*
+X1873250Y-1435100D3*
+G54D12*
+X2024380Y-1430020D3*
+X1991360Y-1430020D3*
+G54D13*
+X2272030Y-1418590D3*
+X2272030Y-1451610D3*
+G54D14*
+X2101850Y-1369060D3*
+X2101850Y-1336040D3*
+X2228850Y-1369060D3*
+X2228850Y-1336040D3*
+X2190750Y-1369060D3*
+X2190750Y-1336040D3*
+X2152650Y-1369060D3*
+X2152650Y-1336040D3*
+G54D15*
+X1986280Y-1386205D3*
+X1986280Y-1405255D3*
+X2321560Y-1384935D3*
+X2321560Y-1403985D3*
+X2059940Y-1339215D3*
+X2059940Y-1358265D3*
+G54D17*
+X1873250Y-1439291D2*
+X1873250Y-1435100D1*
+X1873250Y-1441867D2*
+X1873250Y-1439291D1*
+X1874738Y-1443355D2*
+X1873250Y-1441867D1*
+X1881450Y-1445546D2*
+X1874738Y-1443355D1*
+X1883990Y-1445546D2*
+X1881450Y-1445546D1*
+X1887910Y-1445546D2*
+X1883990Y-1445546D1*
+X1890068Y-1444625D2*
+X1887910Y-1445546D1*
+X1892300Y-1442393D2*
+X1890068Y-1444625D1*
+X1892300Y-1427807D2*
+X1892300Y-1442393D1*
+X1894532Y-1425575D2*
+X1892300Y-1427807D1*
+X1896690Y-1424654D2*
+X1894532Y-1425575D1*
+X1900610Y-1424654D2*
+X1896690Y-1424654D1*
+X1902768Y-1425575D2*
+X1900610Y-1424654D1*
+X1905000Y-1427807D2*
+X1902768Y-1425575D1*
+X1905000Y-1442393D2*
+X1905000Y-1427807D1*
+X1907232Y-1444625D2*
+X1905000Y-1442393D1*
+X1909390Y-1445546D2*
+X1907232Y-1444625D1*
+X1922090Y-1445546D2*
+X1909390Y-1445546D1*
+X1926010Y-1445546D2*
+X1922090Y-1445546D1*
+X1928168Y-1444625D2*
+X1926010Y-1445546D1*
+X1930400Y-1442393D2*
+X1928168Y-1444625D1*
+X1930400Y-1427807D2*
+X1930400Y-1442393D1*
+X1932632Y-1425575D2*
+X1930400Y-1427807D1*
+X1937330Y-1424654D2*
+X1932632Y-1425575D1*
+X1941250Y-1424654D2*
+X1937330Y-1424654D1*
+X1948180Y-1424686D2*
+X1941250Y-1424654D1*
+X1949450Y-1430909D2*
+X1949450Y-1435100D1*
+X1949450Y-1428333D2*
+X1949450Y-1430909D1*
+X1948180Y-1424686D2*
+X1949450Y-1428333D1*
+X2419350Y-1430909D2*
+X2419350Y-1435100D1*
+X2419350Y-1428333D2*
+X2419350Y-1430909D1*
+X2417862Y-1426845D2*
+X2419350Y-1428333D1*
+X2411150Y-1424654D2*
+X2417862Y-1426845D1*
+X2408610Y-1424654D2*
+X2411150Y-1424654D1*
+X2404690Y-1424654D2*
+X2408610Y-1424654D1*
+X2402532Y-1425575D2*
+X2404690Y-1424654D1*
+X2400300Y-1427807D2*
+X2402532Y-1425575D1*
+X2400300Y-1447822D2*
+X2400300Y-1427807D1*
+X2398931Y-1451126D2*
+X2400300Y-1447822D1*
+X2389021Y-1461036D2*
+X2398931Y-1451126D1*
+X2385717Y-1462405D2*
+X2389021Y-1461036D1*
+X2378280Y-1463326D2*
+X2385717Y-1462405D1*
+X2363900Y-1463326D2*
+X2378280Y-1463326D1*
+X2358820Y-1463326D2*
+X2363900Y-1463326D1*
+X2355177Y-1461817D2*
+X2358820Y-1463326D1*
+X2345008Y-1451648D2*
+X2355177Y-1461817D1*
+X2343499Y-1448005D2*
+X2345008Y-1451648D1*
+X2343150Y-1445023D2*
+X2343499Y-1448005D1*
+X2343150Y-1439291D2*
+X2343150Y-1445023D1*
+X2343150Y-1435100D2*
+X2343150Y-1439291D1*
+X2223421Y-1342136D2*
+X2228850Y-1336040D1*
+X2223421Y-1345620D2*
+X2223421Y-1342136D1*
+X2223262Y-1348486D2*
+X2223421Y-1345620D1*
+X2110486Y-1338929D2*
+X2101850Y-1336040D1*
+X2113970Y-1338929D2*
+X2110486Y-1338929D1*
+X2140530Y-1348391D2*
+X2113970Y-1338929D1*
+X2175252Y-1356856D2*
+X2140530Y-1348391D1*
+X2195572Y-1356856D2*
+X2175252Y-1356856D1*
+X2206248Y-1356856D2*
+X2195572Y-1356856D1*
+X2206467Y-1356765D2*
+X2206248Y-1356856D1*
+X2223262Y-1348486D2*
+X2206467Y-1356765D1*
+X2093214Y-1338929D2*
+X2101850Y-1336040D1*
+X2089730Y-1338929D2*
+X2093214Y-1338929D1*
+X2072640Y-1343914D2*
+X2089730Y-1338929D1*
+X2057686Y-1361186D2*
+X2059940Y-1358265D1*
+X2057686Y-1364670D2*
+X2057686Y-1361186D1*
+X2054915Y-1367441D2*
+X2057686Y-1364670D1*
+X1999062Y-1404116D2*
+X2054915Y-1367441D1*
+X1998687Y-1404271D2*
+X1999062Y-1404116D1*
+X1995106Y-1405255D2*
+X1998687Y-1404271D1*
+X1991741Y-1405255D2*
+X1995106Y-1405255D1*
+X1986280Y-1405255D2*
+X1991741Y-1405255D1*
+X2062194Y-1355344D2*
+X2059940Y-1358265D1*
+X2062194Y-1351860D2*
+X2062194Y-1355344D1*
+X2064965Y-1349089D2*
+X2062194Y-1351860D1*
+X2068885Y-1348391D2*
+X2064965Y-1349089D1*
+X2071656Y-1345620D2*
+X2068885Y-1348391D1*
+X2072640Y-1343914D2*
+X2071656Y-1345620D1*
+X2065401Y-1339215D2*
+X2059940Y-1339215D1*
+X2068766Y-1339215D2*
+X2065401Y-1339215D1*
+X2071370Y-1341819D2*
+X2068766Y-1339215D1*
+X2072640Y-1343914D2*
+X2071370Y-1341819D1*
+X2316099Y-1403985D2*
+X2321560Y-1403985D1*
+X2308957Y-1403985D2*
+X2316099Y-1403985D1*
+X2308220Y-1403680D2*
+X2308957Y-1403985D1*
+X2303742Y-1401492D2*
+X2308220Y-1403680D1*
+X2240970Y-1356709D2*
+X2303742Y-1401492D1*
+X2223262Y-1348486D2*
+X2240970Y-1356709D1*
+X2323814Y-1406906D2*
+X2321560Y-1403985D1*
+X2323814Y-1410390D2*
+X2323814Y-1406906D1*
+X2335879Y-1431345D2*
+X2323814Y-1410390D1*
+X2338650Y-1434116D2*
+X2335879Y-1431345D1*
+X2340610Y-1434116D2*
+X2338650Y-1434116D1*
+X2342134Y-1434116D2*
+X2340610Y-1434116D1*
+X2343150Y-1435100D2*
+X2342134Y-1434116D1*
+X1980819Y-1405255D2*
+X1986280Y-1405255D1*
+X1977454Y-1405255D2*
+X1980819Y-1405255D1*
+X1948180Y-1424686D2*
+X1977454Y-1405255D1*
+X2030476Y-1426210D2*
+X2024380Y-1430020D1*
+X2057095Y-1426210D2*
+X2030476Y-1426210D1*
+X2057095Y-1422400D2*
+X2057095Y-1426210D1*
+X2158079Y-1375156D2*
+X2152650Y-1369060D1*
+X2158079Y-1378640D2*
+X2158079Y-1375156D1*
+X2162099Y-1416050D2*
+X2158079Y-1378640D1*
+X2162099Y-1422400D2*
+X2162099Y-1416050D1*
+X2232101Y-1375156D2*
+X2228850Y-1369060D1*
+X2232101Y-1416050D2*
+X2232101Y-1375156D1*
+X2232101Y-1422400D2*
+X2232101Y-1416050D1*
+X2161286Y-1338929D2*
+X2152650Y-1336040D1*
+X2164770Y-1338929D2*
+X2161286Y-1338929D1*
+X2178691Y-1348244D2*
+X2164770Y-1338929D1*
+X2199011Y-1348244D2*
+X2178691Y-1348244D1*
+X2202809Y-1348244D2*
+X2199011Y-1348244D1*
+X2205494Y-1345559D2*
+X2202809Y-1348244D1*
+X2213959Y-1326460D2*
+X2205494Y-1345559D1*
+X2216730Y-1323689D2*
+X2213959Y-1326460D1*
+X2220650Y-1323689D2*
+X2216730Y-1323689D1*
+X2240970Y-1323689D2*
+X2220650Y-1323689D1*
+X2243741Y-1326460D2*
+X2240970Y-1323689D1*
+X2267045Y-1353240D2*
+X2243741Y-1326460D1*
+X2302606Y-1389893D2*
+X2267045Y-1353240D1*
+X2309617Y-1396904D2*
+X2302606Y-1389893D1*
+X2329637Y-1396904D2*
+X2309617Y-1396904D1*
+X2331181Y-1398448D2*
+X2329637Y-1396904D1*
+X2349500Y-1427807D2*
+X2331181Y-1398448D1*
+X2349500Y-1442393D2*
+X2349500Y-1427807D1*
+X2352544Y-1446612D2*
+X2349500Y-1442393D1*
+X2360213Y-1454281D2*
+X2352544Y-1446612D1*
+X2360588Y-1454436D2*
+X2360213Y-1454281D1*
+X2373288Y-1454436D2*
+X2360588Y-1454436D1*
+X2384132Y-1454436D2*
+X2373288Y-1454436D1*
+X2384507Y-1454281D2*
+X2384132Y-1454436D1*
+X2392176Y-1446612D2*
+X2384507Y-1454281D1*
+X2392331Y-1446237D2*
+X2392176Y-1446612D1*
+X2393950Y-1441867D2*
+X2392331Y-1446237D1*
+X2393950Y-1439291D2*
+X2393950Y-1441867D1*
+X2393950Y-1435100D2*
+X2393950Y-1439291D1*
+X2144014Y-1333151D2*
+X2152650Y-1336040D1*
+X2140530Y-1333151D2*
+X2144014Y-1333151D1*
+X2113970Y-1323689D2*
+X2140530Y-1333151D1*
+X2093650Y-1323689D2*
+X2113970Y-1323689D1*
+X2089730Y-1323689D2*
+X2093650Y-1323689D1*
+X2050995Y-1330039D2*
+X2089730Y-1323689D1*
+X2048224Y-1332810D2*
+X2050995Y-1330039D1*
+X1997996Y-1392610D2*
+X2048224Y-1332810D1*
+X1995225Y-1395381D2*
+X1997996Y-1392610D1*
+X1973873Y-1396079D2*
+X1995225Y-1395381D1*
+X1973498Y-1396234D2*
+X1973873Y-1396079D1*
+X1931474Y-1416700D2*
+X1973498Y-1396234D1*
+X1924050Y-1424146D2*
+X1931474Y-1416700D1*
+X1924050Y-1429385D2*
+X1924050Y-1424146D1*
+X1924050Y-1430909D2*
+X1924050Y-1429385D1*
+X1924050Y-1435100D2*
+X1924050Y-1430909D1*
+X2432050Y-1439291D2*
+X2432050Y-1435100D1*
+X2432050Y-1441867D2*
+X2432050Y-1439291D1*
+X2419949Y-1456684D2*
+X2432050Y-1441867D1*
+X2407279Y-1469354D2*
+X2419949Y-1456684D1*
+X2399792Y-1476714D2*
+X2407279Y-1469354D1*
+X2399384Y-1476986D2*
+X2399792Y-1476714D1*
+X2389669Y-1481010D2*
+X2399384Y-1476986D1*
+X2389187Y-1481106D2*
+X2389669Y-1481010D1*
+X2368233Y-1481106D2*
+X2389187Y-1481106D1*
+X2355533Y-1481106D2*
+X2368233Y-1481106D1*
+X1908468Y-1454436D2*
+X2355533Y-1481106D1*
+X1908093Y-1454281D2*
+X1908468Y-1454436D1*
+X1904602Y-1450975D2*
+X1908093Y-1454281D1*
+X1898650Y-1445023D2*
+X1904602Y-1450975D1*
+X1898650Y-1440815D2*
+X1898650Y-1445023D1*
+X1898650Y-1439291D2*
+X1898650Y-1440815D1*
+X1898650Y-1435100D2*
+X1898650Y-1439291D1*
+X2432050Y-1342898D2*
+X2432050Y-1339850D1*
+X2416093Y-1352419D2*
+X2432050Y-1342898D1*
+X2408424Y-1360088D2*
+X2416093Y-1352419D1*
+X2408269Y-1360463D2*
+X2408424Y-1360088D1*
+X2406650Y-1364833D2*
+X2408269Y-1360463D1*
+X2406650Y-1367409D2*
+X2406650Y-1364833D1*
+X2406650Y-1371600D2*
+X2406650Y-1367409D1*
+X2381250Y-1342898D2*
+X2381250Y-1339850D1*
+X2381250Y-1367409D2*
+X2381250Y-1342898D1*
+X2381250Y-1371600D2*
+X2381250Y-1367409D1*
+X2330450Y-1342898D2*
+X2330450Y-1339850D1*
+X2354362Y-1363345D2*
+X2330450Y-1342898D1*
+X2355850Y-1364833D2*
+X2354362Y-1363345D1*
+X2355850Y-1365885D2*
+X2355850Y-1364833D1*
+X2355850Y-1367409D2*
+X2355850Y-1365885D1*
+X2355850Y-1371600D2*
+X2355850Y-1367409D1*
+X2282793Y-1349756D2*
+X2279650Y-1339850D1*
+X2282793Y-1353240D2*
+X2282793Y-1349756D1*
+X2311940Y-1390471D2*
+X2282793Y-1353240D1*
+X2313484Y-1392015D2*
+X2311940Y-1390471D1*
+X2333503Y-1392015D2*
+X2313484Y-1392015D1*
+X2340515Y-1399027D2*
+X2333503Y-1392015D1*
+X2355850Y-1424146D2*
+X2340515Y-1399027D1*
+X2355850Y-1429385D2*
+X2355850Y-1424146D1*
+X2355850Y-1430909D2*
+X2355850Y-1429385D1*
+X2355850Y-1435100D2*
+X2355850Y-1430909D1*
+X2457450Y-1260602D2*
+X2457450Y-1263650D1*
+X2419782Y-1181100D2*
+X2457450Y-1260602D1*
+X2419782Y-1174750D2*
+X2419782Y-1181100D1*
+X2406650Y-1260602D2*
+X2406650Y-1263650D1*
+X2349779Y-1181100D2*
+X2406650Y-1260602D1*
+X2349779Y-1174750D2*
+X2349779Y-1181100D1*
+X2355850Y-1260602D2*
+X2355850Y-1263650D1*
+X2279802Y-1181100D2*
+X2355850Y-1260602D1*
+X2279802Y-1174750D2*
+X2279802Y-1181100D1*
+X2305050Y-1260602D2*
+X2305050Y-1263650D1*
+X2209800Y-1181100D2*
+X2305050Y-1260602D1*
+X2209800Y-1174750D2*
+X2209800Y-1181100D1*
+X2279650Y-1260602D2*
+X2279650Y-1263650D1*
+X2174799Y-1181100D2*
+X2279650Y-1260602D1*
+X2174799Y-1174750D2*
+X2174799Y-1181100D1*
+X2330450Y-1260602D2*
+X2330450Y-1263650D1*
+X2244801Y-1181100D2*
+X2330450Y-1260602D1*
+X2244801Y-1174750D2*
+X2244801Y-1181100D1*
+X2381250Y-1260602D2*
+X2381250Y-1263650D1*
+X2314804Y-1181100D2*
+X2381250Y-1260602D1*
+X2314804Y-1174750D2*
+X2314804Y-1181100D1*
+X2432050Y-1260602D2*
+X2432050Y-1263650D1*
+X2384781Y-1181100D2*
+X2432050Y-1260602D1*
+X2384781Y-1174750D2*
+X2384781Y-1181100D1*
+X2482850Y-1260602D2*
+X2482850Y-1263650D1*
+X2454783Y-1181100D2*
+X2482850Y-1260602D1*
+X2454783Y-1174750D2*
+X2454783Y-1181100D1*
+X2342134Y-1370616D2*
+X2343150Y-1371600D1*
+X2338650Y-1370616D2*
+X2342134Y-1370616D1*
+X2334342Y-1367024D2*
+X2338650Y-1370616D1*
+X2305050Y-1342898D2*
+X2334342Y-1367024D1*
+X2305050Y-1339850D2*
+X2305050Y-1342898D1*
+X2355850Y-1342898D2*
+X2355850Y-1339850D1*
+X2366776Y-1360088D2*
+X2355850Y-1342898D1*
+X2366931Y-1360463D2*
+X2366776Y-1360088D1*
+X2368550Y-1364833D2*
+X2366931Y-1360463D1*
+X2368550Y-1367409D2*
+X2368550Y-1364833D1*
+X2368550Y-1371600D2*
+X2368550Y-1367409D1*
+X2406650Y-1342898D2*
+X2406650Y-1339850D1*
+X2395724Y-1360088D2*
+X2406650Y-1342898D1*
+X2395569Y-1360463D2*
+X2395724Y-1360088D1*
+X2393950Y-1364833D2*
+X2395569Y-1360463D1*
+X2393950Y-1367409D2*
+X2393950Y-1364833D1*
+X2393950Y-1371600D2*
+X2393950Y-1367409D1*
+X2457450Y-1342898D2*
+X2457450Y-1339850D1*
+X2437560Y-1355933D2*
+X2457450Y-1342898D1*
+X2420838Y-1363345D2*
+X2437560Y-1355933D1*
+X2419350Y-1364833D2*
+X2420838Y-1363345D1*
+X2419350Y-1365885D2*
+X2419350Y-1364833D1*
+X2419350Y-1367409D2*
+X2419350Y-1365885D1*
+X2419350Y-1371600D2*
+X2419350Y-1367409D1*
+X1962150Y-1342898D2*
+X1962150Y-1339850D1*
+X1946193Y-1352419D2*
+X1962150Y-1342898D1*
+X1938524Y-1360088D2*
+X1946193Y-1352419D1*
+X1938369Y-1360463D2*
+X1938524Y-1360088D1*
+X1936750Y-1364833D2*
+X1938369Y-1360463D1*
+X1936750Y-1367409D2*
+X1936750Y-1364833D1*
+X1936750Y-1371600D2*
+X1936750Y-1367409D1*
+X1911350Y-1342898D2*
+X1911350Y-1339850D1*
+X1911350Y-1367409D2*
+X1911350Y-1342898D1*
+X1911350Y-1371600D2*
+X1911350Y-1367409D1*
+X1860550Y-1342898D2*
+X1860550Y-1339850D1*
+X1884462Y-1363345D2*
+X1860550Y-1342898D1*
+X1885950Y-1364833D2*
+X1884462Y-1363345D1*
+X1885950Y-1365885D2*
+X1885950Y-1364833D1*
+X1885950Y-1367409D2*
+X1885950Y-1365885D1*
+X1885950Y-1371600D2*
+X1885950Y-1367409D1*
+X1816100Y-1346549D2*
+X1809750Y-1339850D1*
+X1819584Y-1346549D2*
+X1816100Y-1346549D1*
+X1822355Y-1349320D2*
+X1819584Y-1346549D1*
+X1885950Y-1428333D2*
+X1822355Y-1349320D1*
+X1885950Y-1430909D2*
+X1885950Y-1428333D1*
+X1885950Y-1435100D2*
+X1885950Y-1430909D1*
+X1987550Y-1260602D2*
+X1987550Y-1263650D1*
+X2045132Y-1181100D2*
+X1987550Y-1260602D1*
+X2045132Y-1174750D2*
+X2045132Y-1181100D1*
+X1936750Y-1260602D2*
+X1936750Y-1263650D1*
+X1975129Y-1181100D2*
+X1936750Y-1260602D1*
+X1975129Y-1174750D2*
+X1975129Y-1181100D1*
+X1885950Y-1260602D2*
+X1885950Y-1263650D1*
+X1905152Y-1181100D2*
+X1885950Y-1260602D1*
+X1905152Y-1174750D2*
+X1905152Y-1181100D1*
+X1835150Y-1260602D2*
+X1835150Y-1263650D1*
+X1835150Y-1181100D2*
+X1835150Y-1260602D1*
+X1835150Y-1174750D2*
+X1835150Y-1181100D1*
+X1809750Y-1260602D2*
+X1809750Y-1263650D1*
+X1800149Y-1181100D2*
+X1809750Y-1260602D1*
+X1800149Y-1174750D2*
+X1800149Y-1181100D1*
+X1860550Y-1260602D2*
+X1860550Y-1263650D1*
+X1870151Y-1181100D2*
+X1860550Y-1260602D1*
+X1870151Y-1174750D2*
+X1870151Y-1181100D1*
+X1911350Y-1260602D2*
+X1911350Y-1263650D1*
+X1940154Y-1181100D2*
+X1911350Y-1260602D1*
+X1940154Y-1174750D2*
+X1940154Y-1181100D1*
+X1962150Y-1260602D2*
+X1962150Y-1263650D1*
+X2010131Y-1181100D2*
+X1962150Y-1260602D1*
+X2010131Y-1174750D2*
+X2010131Y-1181100D1*
+X2012950Y-1260602D2*
+X2012950Y-1263650D1*
+X2080133Y-1181100D2*
+X2012950Y-1260602D1*
+X2080133Y-1174750D2*
+X2080133Y-1181100D1*
+X1872234Y-1370616D2*
+X1873250Y-1371600D1*
+X1868750Y-1370616D2*
+X1872234Y-1370616D1*
+X1835150Y-1342898D2*
+X1868750Y-1370616D1*
+X1835150Y-1339850D2*
+X1835150Y-1342898D1*
+X1885950Y-1342898D2*
+X1885950Y-1339850D1*
+X1896876Y-1360088D2*
+X1885950Y-1342898D1*
+X1897031Y-1360463D2*
+X1896876Y-1360088D1*
+X1898650Y-1364833D2*
+X1897031Y-1360463D1*
+X1898650Y-1367409D2*
+X1898650Y-1364833D1*
+X1898650Y-1371600D2*
+X1898650Y-1367409D1*
+X1936750Y-1342898D2*
+X1936750Y-1339850D1*
+X1925824Y-1360088D2*
+X1936750Y-1342898D1*
+X1925669Y-1360463D2*
+X1925824Y-1360088D1*
+X1924050Y-1364833D2*
+X1925669Y-1360463D1*
+X1924050Y-1367409D2*
+X1924050Y-1364833D1*
+X1924050Y-1371600D2*
+X1924050Y-1367409D1*
+X1987550Y-1342898D2*
+X1987550Y-1339850D1*
+X1967660Y-1355933D2*
+X1987550Y-1342898D1*
+X1950938Y-1363345D2*
+X1967660Y-1355933D1*
+X1949450Y-1364833D2*
+X1950938Y-1363345D1*
+X1949450Y-1365885D2*
+X1949450Y-1364833D1*
+X1949450Y-1367409D2*
+X1949450Y-1365885D1*
+X1949450Y-1371600D2*
+X1949450Y-1367409D1*
+X1985264Y-1434116D2*
+X1991360Y-1430020D1*
+X1963166Y-1434116D2*
+X1985264Y-1434116D1*
+X1962150Y-1435100D2*
+X1963166Y-1434116D1*
+X2196179Y-1329944D2*
+X2190750Y-1336040D1*
+X2196179Y-1326460D2*
+X2196179Y-1329944D1*
+X2198950Y-1323689D2*
+X2196179Y-1326460D1*
+X2212893Y-1314954D2*
+X2198950Y-1323689D1*
+X2213268Y-1314799D2*
+X2212893Y-1314954D1*
+X2224112Y-1314799D2*
+X2213268Y-1314799D1*
+X2244432Y-1314799D2*
+X2224112Y-1314799D1*
+X2289484Y-1323689D2*
+X2244432Y-1314799D1*
+X2292255Y-1326460D2*
+X2289484Y-1323689D1*
+X2292255Y-1330380D2*
+X2292255Y-1326460D1*
+X2292096Y-1331513D2*
+X2292255Y-1330380D1*
+X2292096Y-1337609D2*
+X2292096Y-1331513D1*
+X2292150Y-1348318D2*
+X2292096Y-1337609D1*
+X2299630Y-1355798D2*
+X2292150Y-1348318D1*
+X2338558Y-1379765D2*
+X2299630Y-1355798D1*
+X2339292Y-1380497D2*
+X2338558Y-1379765D1*
+X2342449Y-1382831D2*
+X2339292Y-1380497D1*
+X2354144Y-1394526D2*
+X2342449Y-1382831D1*
+X2366215Y-1415477D2*
+X2354144Y-1394526D1*
+X2368550Y-1421115D2*
+X2366215Y-1415477D1*
+X2368550Y-1429385D2*
+X2368550Y-1421115D1*
+X2368550Y-1430909D2*
+X2368550Y-1429385D1*
+X2368550Y-1435100D2*
+X2368550Y-1430909D1*
+X2263394Y-1453801D2*
+X2272030Y-1451610D1*
+X2154403Y-1453801D2*
+X2263394Y-1453801D1*
+X1944950Y-1445546D2*
+X2154403Y-1453801D1*
+X1938238Y-1443355D2*
+X1944950Y-1445546D1*
+X1936750Y-1441867D2*
+X1938238Y-1443355D1*
+X1936750Y-1440815D2*
+X1936750Y-1441867D1*
+X1936750Y-1439291D2*
+X1936750Y-1440815D1*
+X1936750Y-1435100D2*
+X1936750Y-1439291D1*
+X2280666Y-1454499D2*
+X2272030Y-1451610D1*
+X2284150Y-1454499D2*
+X2280666Y-1454499D1*
+X2357051Y-1472216D2*
+X2284150Y-1454499D1*
+X2374969Y-1472216D2*
+X2357051Y-1472216D1*
+X2377924Y-1471764D2*
+X2374969Y-1472216D1*
+X2386980Y-1468755D2*
+X2377924Y-1471764D1*
+X2392618Y-1466420D2*
+X2386980Y-1468755D1*
+X2404315Y-1454723D2*
+X2392618Y-1466420D1*
+X2406650Y-1449085D2*
+X2404315Y-1454723D1*
+X2406650Y-1440815D2*
+X2406650Y-1449085D1*
+X2406650Y-1439291D2*
+X2406650Y-1440815D1*
+X2406650Y-1435100D2*
+X2406650Y-1439291D1*
+X2196179Y-1375156D2*
+X2190750Y-1369060D1*
+X2196179Y-1378640D2*
+X2196179Y-1375156D1*
+X2197100Y-1416050D2*
+X2196179Y-1378640D1*
+X2197100Y-1422400D2*
+X2197100Y-1416050D1*
+X2263394Y-1421479D2*
+X2272030Y-1418590D1*
+X2259910Y-1421479D2*
+X2263394Y-1421479D1*
+X2257139Y-1424250D2*
+X2259910Y-1421479D1*
+X2247720Y-1435986D2*
+X2257139Y-1424250D1*
+X2239337Y-1444369D2*
+X2247720Y-1435986D1*
+X2238028Y-1444911D2*
+X2239337Y-1444369D1*
+X2226174Y-1444911D2*
+X2238028Y-1444911D1*
+X2156172Y-1444911D2*
+X2226174Y-1444911D1*
+X2154863Y-1444369D2*
+X2156172Y-1444911D1*
+X2127098Y-1428750D2*
+X2154863Y-1444369D1*
+X2127098Y-1422400D2*
+X2127098Y-1428750D1*
+X2012950Y-1336802D2*
+X2012950Y-1339850D1*
+X2115134Y-1181100D2*
+X2012950Y-1336802D1*
+X2115134Y-1174750D2*
+X2115134Y-1181100D1*
+X2012950Y-1342898D2*
+X2012950Y-1339850D1*
+X1982470Y-1376426D2*
+X2012950Y-1342898D1*
+X2482850Y-1336802D2*
+X2482850Y-1339850D1*
+X2495963Y-1272019D2*
+X2482850Y-1336802D1*
+X2495963Y-1261377D2*
+X2495963Y-1272019D1*
+X2495963Y-1255281D2*
+X2495963Y-1261377D1*
+X2489784Y-1181100D2*
+X2495963Y-1255281D1*
+X2489784Y-1174750D2*
+X2489784Y-1181100D1*
+X1962150Y-1375791D2*
+X1962150Y-1371600D1*
+X1962150Y-1378367D2*
+X1962150Y-1375791D1*
+X1960662Y-1379855D2*
+X1962150Y-1378367D1*
+X1923377Y-1408383D2*
+X1960662Y-1379855D1*
+X1913208Y-1418552D2*
+X1923377Y-1408383D1*
+X1911699Y-1422195D2*
+X1913208Y-1418552D1*
+X1911350Y-1428333D2*
+X1911699Y-1422195D1*
+X1911350Y-1430909D2*
+X1911350Y-1428333D1*
+X1911350Y-1435100D2*
+X1911350Y-1430909D1*
+X1963166Y-1372584D2*
+X1962150Y-1371600D1*
+X1966650Y-1372584D2*
+X1963166Y-1372584D1*
+X1982470Y-1376426D2*
+X1966650Y-1372584D1*
+X2432050Y-1375791D2*
+X2432050Y-1371600D1*
+X2432050Y-1378367D2*
+X2432050Y-1375791D1*
+X2430562Y-1379855D2*
+X2432050Y-1378367D1*
+X2382738Y-1426845D2*
+X2430562Y-1379855D1*
+X2381250Y-1428333D2*
+X2382738Y-1426845D1*
+X2381250Y-1429385D2*
+X2381250Y-1428333D1*
+X2381250Y-1430909D2*
+X2381250Y-1429385D1*
+X2381250Y-1435100D2*
+X2381250Y-1430909D1*
+X2433066Y-1370616D2*
+X2432050Y-1371600D1*
+X2436550Y-1370616D2*
+X2433066Y-1370616D1*
+X2462960Y-1355933D2*
+X2436550Y-1370616D1*
+X2482850Y-1342898D2*
+X2462960Y-1355933D1*
+X2482850Y-1339850D2*
+X2482850Y-1342898D1*
+X2489784Y-1168400D2*
+X2489784Y-1174750D1*
+X2462019Y-1152781D2*
+X2489784Y-1168400D1*
+X2460710Y-1152239D2*
+X2462019Y-1152781D1*
+X2180726Y-1152239D2*
+X2460710Y-1152239D1*
+X2168872Y-1152239D2*
+X2180726Y-1152239D1*
+X2115134Y-1168400D2*
+X2168872Y-1152239D1*
+X2115134Y-1174750D2*
+X2115134Y-1168400D1*
+X2096421Y-1375156D2*
+X2101850Y-1369060D1*
+X2096421Y-1378640D2*
+X2096421Y-1375156D1*
+X2092096Y-1416050D2*
+X2096421Y-1378640D1*
+X2092096Y-1422400D2*
+X2092096Y-1416050D1*
+X2327021Y-1384935D2*
+X2321560Y-1384935D1*
+X2334163Y-1384935D2*
+X2327021Y-1384935D1*
+X2334900Y-1385240D2*
+X2334163Y-1384935D1*
+X2339073Y-1387885D2*
+X2334900Y-1385240D1*
+X2349090Y-1397902D2*
+X2339073Y-1387885D1*
+X2361218Y-1420512D2*
+X2349090Y-1397902D1*
+X2362200Y-1422883D2*
+X2361218Y-1420512D1*
+X2362200Y-1442393D2*
+X2362200Y-1422883D1*
+X2364432Y-1444625D2*
+X2362200Y-1442393D1*
+X2366590Y-1445546D2*
+X2364432Y-1444625D1*
+X2369130Y-1445546D2*
+X2366590Y-1445546D1*
+X2373050Y-1445546D2*
+X2369130Y-1445546D1*
+X2379762Y-1443355D2*
+X2373050Y-1445546D1*
+X2381250Y-1441867D2*
+X2379762Y-1443355D1*
+X2381250Y-1440815D2*
+X2381250Y-1441867D1*
+X2381250Y-1439291D2*
+X2381250Y-1440815D1*
+X2381250Y-1435100D2*
+X2381250Y-1439291D1*
+X1984026Y-1383284D2*
+X1986280Y-1386205D1*
+X1984026Y-1379800D2*
+X1984026Y-1383284D1*
+X1982470Y-1376426D2*
+X1984026Y-1379800D1*
+G54D19*
+X2279650Y-1260602D2*
+X2279650Y-1266698D1*
+X2305050Y-1260602D2*
+X2305050Y-1266698D1*
+X2330450Y-1260602D2*
+X2330450Y-1266698D1*
+X2355850Y-1260602D2*
+X2355850Y-1266698D1*
+X2381250Y-1260602D2*
+X2381250Y-1266698D1*
+X2406650Y-1260602D2*
+X2406650Y-1266698D1*
+X2432050Y-1260602D2*
+X2432050Y-1266698D1*
+X2457450Y-1260602D2*
+X2457450Y-1266698D1*
+X2482850Y-1260602D2*
+X2482850Y-1266698D1*
+X2482850Y-1336802D2*
+X2482850Y-1342898D1*
+X2457450Y-1336802D2*
+X2457450Y-1342898D1*
+X2432050Y-1336802D2*
+X2432050Y-1342898D1*
+X2406650Y-1336802D2*
+X2406650Y-1342898D1*
+X2381250Y-1336802D2*
+X2381250Y-1342898D1*
+X2355850Y-1336802D2*
+X2355850Y-1342898D1*
+X2330450Y-1336802D2*
+X2330450Y-1342898D1*
+X2305050Y-1336802D2*
+X2305050Y-1342898D1*
+X1809750Y-1260602D2*
+X1809750Y-1266698D1*
+X1835150Y-1260602D2*
+X1835150Y-1266698D1*
+X1860550Y-1260602D2*
+X1860550Y-1266698D1*
+X1885950Y-1260602D2*
+X1885950Y-1266698D1*
+X1911350Y-1260602D2*
+X1911350Y-1266698D1*
+X1936750Y-1260602D2*
+X1936750Y-1266698D1*
+X1962150Y-1260602D2*
+X1962150Y-1266698D1*
+X1987550Y-1260602D2*
+X1987550Y-1266698D1*
+X2012950Y-1260602D2*
+X2012950Y-1266698D1*
+X2012950Y-1336802D2*
+X2012950Y-1342898D1*
+X1987550Y-1336802D2*
+X1987550Y-1342898D1*
+X1962150Y-1336802D2*
+X1962150Y-1342898D1*
+X1936750Y-1336802D2*
+X1936750Y-1342898D1*
+X1911350Y-1336802D2*
+X1911350Y-1342898D1*
+X1885950Y-1336802D2*
+X1885950Y-1342898D1*
+X1860550Y-1336802D2*
+X1860550Y-1342898D1*
+X1835150Y-1336802D2*
+X1835150Y-1342898D1*
+G54D22*
+X2162099Y-1428750D2*
+X2162099Y-1416050D1*
+X2197100Y-1428750D2*
+X2197100Y-1416050D1*
+X2232101Y-1428750D2*
+X2232101Y-1416050D1*
+X2127098Y-1428750D2*
+X2127098Y-1416050D1*
+X2057095Y-1428750D2*
+X2057095Y-1416050D1*
+X2092096Y-1428750D2*
+X2092096Y-1416050D1*
+X2244801Y-1168400D2*
+X2244801Y-1181100D1*
+X2209800Y-1168400D2*
+X2209800Y-1181100D1*
+X2174799Y-1168400D2*
+X2174799Y-1181100D1*
+X2279802Y-1168400D2*
+X2279802Y-1181100D1*
+X2314804Y-1168400D2*
+X2314804Y-1181100D1*
+X2489784Y-1168400D2*
+X2489784Y-1181100D1*
+X2454783Y-1168400D2*
+X2454783Y-1181100D1*
+X2349779Y-1168400D2*
+X2349779Y-1181100D1*
+X2384781Y-1168400D2*
+X2384781Y-1181100D1*
+X2419782Y-1168400D2*
+X2419782Y-1181100D1*
+X1870151Y-1168400D2*
+X1870151Y-1181100D1*
+X1835150Y-1168400D2*
+X1835150Y-1181100D1*
+X1800149Y-1168400D2*
+X1800149Y-1181100D1*
+X1905152Y-1168400D2*
+X1905152Y-1181100D1*
+X1940154Y-1168400D2*
+X1940154Y-1181100D1*
+X2115134Y-1168400D2*
+X2115134Y-1181100D1*
+X2080133Y-1168400D2*
+X2080133Y-1181100D1*
+X1975129Y-1168400D2*
+X1975129Y-1181100D1*
+X2010131Y-1168400D2*
+X2010131Y-1181100D1*
+X2045132Y-1168400D2*
+X2045132Y-1181100D1*
+M02*
diff --git a/gerbview/gerber_test_files/apertures_rotated_and_arcs_in_tracks.gbr b/gerbview/gerber_test_files/apertures_rotated_and_arcs_in_tracks.gbr
new file mode 100644
index 0000000000..a335a2768b
--- /dev/null
+++ b/gerbview/gerber_test_files/apertures_rotated_and_arcs_in_tracks.gbr
@@ -0,0 +1,1417 @@
+%ICAS*%
+%FSLAX44Y44*%
+%OFA0B0*%
+%SFA1B1*%
+%MOMM*%
+%AMFRECTNOHOLE10*
+21,1,1.5748,2.2860,0.0000,0.0000,0*
+%
+%AMFRECTNOHOLE11*
+21,1,0.5080,1.1430,0.0000,0.0000,180*
+%
+%AMFRECTNOHOLE12*
+21,1,1.5240,2.0320,0.0000,0.0000,180*
+%
+%AMFRECTNOHOLE13*
+21,1,1.5240,2.0320,0.0000,0.0000,270*
+%
+%AMFRECTNOHOLE14*
+21,1,1.5240,2.0320,0.0000,0.0000,90*
+%
+%AMFRECTNOHOLE15*
+21,1,0.8890,1.3970,0.0000,0.0000,270*
+%
+%ADD10FRECTNOHOLE10*%
+%ADD11FRECTNOHOLE11*%
+%ADD12FRECTNOHOLE12*%
+%ADD13FRECTNOHOLE13*%
+%ADD14FRECTNOHOLE14*%
+%ADD15FRECTNOHOLE15*%
+%ADD17C,0.3048X0.0000X0.0000*%
+%ADD19C,1.6764X0.0000X0.0000*%
+%ADD22C,2.2860X0.0000X0.0000*%
+%LNBottom_arc*%
+G54D10*
+X2279650Y-1339850D3*
+X1809750Y-1339850D3*
+G54D11*
+X2355850Y-1435100D3*
+X2343150Y-1371600D3*
+X2355850Y-1371600D3*
+X2368550Y-1371600D3*
+X2381250Y-1371600D3*
+X2393950Y-1371600D3*
+X2406650Y-1371600D3*
+X2419350Y-1371600D3*
+X2432050Y-1371600D3*
+X2432050Y-1435100D3*
+X2419350Y-1435100D3*
+X2406650Y-1435100D3*
+X2393950Y-1435100D3*
+X2381250Y-1435100D3*
+X2368550Y-1435100D3*
+X2343150Y-1435100D3*
+X1885950Y-1435100D3*
+X1873250Y-1371600D3*
+X1885950Y-1371600D3*
+X1898650Y-1371600D3*
+X1911350Y-1371600D3*
+X1924050Y-1371600D3*
+X1936750Y-1371600D3*
+X1949450Y-1371600D3*
+X1962150Y-1371600D3*
+X1962150Y-1435100D3*
+X1949450Y-1435100D3*
+X1936750Y-1435100D3*
+X1924050Y-1435100D3*
+X1911350Y-1435100D3*
+X1898650Y-1435100D3*
+X1873250Y-1435100D3*
+G54D12*
+X2024380Y-1430020D3*
+X1991360Y-1430020D3*
+G54D13*
+X2272030Y-1418590D3*
+X2272030Y-1451610D3*
+G54D14*
+X2101850Y-1369060D3*
+X2101850Y-1336040D3*
+X2228850Y-1369060D3*
+X2228850Y-1336040D3*
+X2190750Y-1369060D3*
+X2190750Y-1336040D3*
+X2152650Y-1369060D3*
+X2152650Y-1336040D3*
+G54D15*
+X1986280Y-1386205D3*
+X1986280Y-1405255D3*
+X2321560Y-1384935D3*
+X2321560Y-1403985D3*
+X2059940Y-1339215D3*
+X2059940Y-1358265D3*
+G54D17*
+X1947035Y-1424656D2*
+X1948180Y-1424686D1*
+G75*
+G01X1947035Y-1424656D2*
+G03X1946910Y-1424654I-125J-4729D1*
+G74*
+X1939290Y-1424654D2*
+X1946910Y-1424654D1*
+G75*
+G01X1939290Y-1424654D2*
+G03X1938432Y-1424732I0J-4731D1*
+G74*
+X1933519Y-1425638D2*
+X1938432Y-1424732D1*
+G75*
+G01X1933519Y-1425638D2*
+G03X1930400Y-1429385I691J-3747D1*
+G74*
+X1930400Y-1440815D2*
+X1930400Y-1429385D1*
+G75*
+G01X1927972Y-1444366D2*
+G03X1930400Y-1440815I-1382J3551D1*
+G74*
+X1925765Y-1445224D2*
+X1927972Y-1444366D1*
+G75*
+G01X1924050Y-1445546D2*
+G03X1925765Y-1445224I0J4731D1*
+G74*
+X1911350Y-1445546D2*
+X1924050Y-1445546D1*
+G75*
+G01X1909635Y-1445224D2*
+G03X1911350Y-1445546I1715J4409D1*
+G74*
+X1907428Y-1444366D2*
+X1909635Y-1445224D1*
+G75*
+G01X1905000Y-1440815D2*
+G03X1907428Y-1444366I3810J0D1*
+G74*
+X1905000Y-1429385D2*
+X1905000Y-1440815D1*
+G75*
+G01X1905000Y-1429385D2*
+G03X1902572Y-1425834I-3810J0D1*
+G74*
+X1900365Y-1424976D2*
+X1902572Y-1425834D1*
+G75*
+G01X1900365Y-1424976D2*
+G03X1896935Y-1424976I-1715J-4409D1*
+G74*
+X1894728Y-1425834D2*
+X1896935Y-1424976D1*
+G75*
+G01X1894728Y-1425834D2*
+G03X1892300Y-1429385I1382J-3551D1*
+G74*
+X1892300Y-1440815D2*
+X1892300Y-1429385D1*
+G75*
+G01X1889872Y-1444366D2*
+G03X1892300Y-1440815I-1382J3551D1*
+G74*
+X1887665Y-1445224D2*
+X1889872Y-1444366D1*
+G75*
+G01X1885950Y-1445546D2*
+G03X1887665Y-1445224I0J4731D1*
+G74*
+X1883410Y-1445546D2*
+X1885950Y-1445546D1*
+G75*
+G01X1882050Y-1445346D2*
+G03X1883410Y-1445546I1360J4531D1*
+G74*
+X1875060Y-1443248D2*
+X1882050Y-1445346D1*
+G75*
+G01X1873250Y-1440815D2*
+G03X1875060Y-1443248I2540J0D1*
+G74*
+X1873250Y-1439291D2*
+X1873250Y-1440815D1*
+X1873250Y-1435100D2*
+X1873250Y-1439291D1*
+X1949348Y-1428671D2*
+X1948180Y-1424686D1*
+G75*
+G01X1949450Y-1429385D2*
+G03X1949348Y-1428671I-2540J0D1*
+G74*
+X1949450Y-1430909D2*
+X1949450Y-1429385D1*
+X1949450Y-1435100D2*
+X1949450Y-1430909D1*
+X2343150Y-1439291D2*
+X2343150Y-1440815D1*
+X2343150Y-1435100D2*
+X2343150Y-1439291D1*
+G75*
+G01X2343150Y-1440815D2*
+G03X2343586Y-1444115I12700J0D1*
+G74*
+X2344272Y-1446664D2*
+X2343586Y-1444115D1*
+G75*
+G01X2344272Y-1446664D2*
+G03X2366010Y-1463326I21738J5849D1*
+G74*
+X2371090Y-1463326D2*
+X2366010Y-1463326D1*
+G75*
+G01X2371090Y-1463326D2*
+G03X2373811Y-1463161I0J22511D1*
+G74*
+X2381320Y-1462247D2*
+X2373811Y-1463161D1*
+G75*
+G01X2381320Y-1462247D2*
+G03X2400300Y-1440815I-2610J21432D1*
+G74*
+X2400300Y-1429385D2*
+X2400300Y-1440815D1*
+G75*
+G01X2402728Y-1425834D2*
+G03X2400300Y-1429385I1382J-3551D1*
+G74*
+X2404935Y-1424976D2*
+X2402728Y-1425834D1*
+G75*
+G01X2406650Y-1424654D2*
+G03X2404935Y-1424976I0J-4731D1*
+G74*
+X2409190Y-1424654D2*
+X2406650Y-1424654D1*
+G75*
+G01X2410550Y-1424854D2*
+G03X2409190Y-1424654I-1360J-4531D1*
+G74*
+X2417540Y-1426952D2*
+X2410550Y-1424854D1*
+G75*
+G01X2419350Y-1429385D2*
+G03X2417540Y-1426952I-2540J0D1*
+G74*
+X2419350Y-1430909D2*
+X2419350Y-1429385D1*
+X2419350Y-1435100D2*
+X2419350Y-1430909D1*
+X2223421Y-1343660D2*
+X2223262Y-1348486D1*
+X2223421Y-1342136D2*
+X2223421Y-1343660D1*
+X2228850Y-1336040D2*
+X2223421Y-1342136D1*
+X2206079Y-1355801D2*
+X2223262Y-1348486D1*
+G75*
+G01X2200910Y-1356856D2*
+G03X2206079Y-1355801I0J13196D1*
+G74*
+X2180590Y-1356856D2*
+X2200910Y-1356856D1*
+G75*
+G01X2177658Y-1356526D2*
+G03X2180590Y-1356856I2932J12866D1*
+G74*
+X2141439Y-1348273D2*
+X2177658Y-1356526D1*
+G75*
+G01X2141021Y-1348157D2*
+G03X2141439Y-1348273I1469J4497D1*
+G74*
+X2113479Y-1339163D2*
+X2141021Y-1348157D1*
+G75*
+G01X2113479Y-1339163D2*
+G03X2112010Y-1338929I-1469J-4497D1*
+G74*
+X2110486Y-1338929D2*
+X2112010Y-1338929D1*
+X2101850Y-1336040D2*
+X2110486Y-1338929D1*
+X2090454Y-1339093D2*
+X2072640Y-1343914D1*
+G75*
+G01X2091690Y-1338929D2*
+G03X2090454Y-1339093I0J-4731D1*
+G74*
+X2093214Y-1338929D2*
+X2091690Y-1338929D1*
+X2101850Y-1336040D2*
+X2093214Y-1338929D1*
+X1991741Y-1405255D2*
+X1993265Y-1405255D1*
+X1986280Y-1405255D2*
+X1991741Y-1405255D1*
+G75*
+G01X1993265Y-1405255D2*
+G03X1995173Y-1404825I0J4445D1*
+G74*
+X1999113Y-1402952D2*
+X1995173Y-1404825D1*
+G75*
+G01X1999113Y-1402952D2*
+G03X2000651Y-1402095I-5848J12302D1*
+G74*
+X2055520Y-1366685D2*
+X2000651Y-1402095D1*
+G75*
+G01X2055520Y-1366685D2*
+G03X2057686Y-1362710I-2565J3975D1*
+G74*
+X2057686Y-1361186D2*
+X2057686Y-1362710D1*
+X2059940Y-1358265D2*
+X2057686Y-1361186D1*
+X2070716Y-1346491D2*
+X2072640Y-1343914D1*
+G75*
+G01X2068648Y-1348066D2*
+G03X2070716Y-1346491I-1723J4406D1*
+G74*
+X2065202Y-1349414D2*
+X2068648Y-1348066D1*
+G75*
+G01X2065202Y-1349414D2*
+G03X2062194Y-1353820I1723J-4406D1*
+G74*
+X2062194Y-1355344D2*
+X2062194Y-1353820D1*
+X2059940Y-1358265D2*
+X2062194Y-1355344D1*
+X2070500Y-1341018D2*
+X2072640Y-1343914D1*
+G75*
+G01X2070500Y-1341018D2*
+G03X2066925Y-1339215I-3575J-2642D1*
+G74*
+X2065401Y-1339215D2*
+X2066925Y-1339215D1*
+X2059940Y-1339215D2*
+X2065401Y-1339215D1*
+X2241086Y-1357189D2*
+X2223262Y-1348486D1*
+G75*
+G01X2241707Y-1357553D2*
+G03X2241086Y-1357189I-2697J-3887D1*
+G74*
+X2303714Y-1400585D2*
+X2241707Y-1357553D1*
+G75*
+G01X2303714Y-1400585D2*
+G03X2314575Y-1403985I10861J15650D1*
+G74*
+X2316099Y-1403985D2*
+X2314575Y-1403985D1*
+X2321560Y-1403985D2*
+X2316099Y-1403985D1*
+X2342134Y-1434116D2*
+X2340610Y-1434116D1*
+X2343150Y-1435100D2*
+X2342134Y-1434116D1*
+G75*
+G01X2336510Y-1431746D2*
+G03X2340610Y-1434116I4100J2361D1*
+G74*
+X2324445Y-1410791D2*
+X2336510Y-1431746D1*
+G75*
+G01X2323814Y-1408430D2*
+G03X2324445Y-1410791I4731J0D1*
+G74*
+X2323814Y-1406906D2*
+X2323814Y-1408430D1*
+X2321560Y-1403985D2*
+X2323814Y-1406906D1*
+X1976867Y-1405977D2*
+X1948180Y-1424686D1*
+G75*
+G01X1979295Y-1405255D2*
+G03X1976867Y-1405977I0J-4445D1*
+G74*
+X1980819Y-1405255D2*
+X1979295Y-1405255D1*
+X1986280Y-1405255D2*
+X1980819Y-1405255D1*
+X2057095Y-1422400D2*
+X2057095Y-1426210D1*
+X2032000Y-1426210D2*
+X2057095Y-1426210D1*
+X2030476Y-1426210D2*
+X2032000Y-1426210D1*
+X2024380Y-1430020D2*
+X2030476Y-1426210D1*
+X2162099Y-1422400D2*
+X2162099Y-1416050D1*
+X2158104Y-1377164D2*
+X2162099Y-1416050D1*
+G75*
+G01X2158079Y-1376680D2*
+G03X2158104Y-1377164I4731J0D1*
+G74*
+X2158079Y-1375156D2*
+X2158079Y-1376680D1*
+X2152650Y-1369060D2*
+X2158079Y-1375156D1*
+X2232101Y-1422400D2*
+X2232101Y-1416050D1*
+X2232101Y-1376680D2*
+X2232101Y-1416050D1*
+X2232101Y-1375156D2*
+X2232101Y-1376680D1*
+X2228850Y-1369060D2*
+X2232101Y-1375156D1*
+X2393950Y-1439291D2*
+X2393950Y-1440815D1*
+X2393950Y-1435100D2*
+X2393950Y-1439291D1*
+G75*
+G01X2393626Y-1442056D2*
+G03X2393950Y-1440815I-2216J1241D1*
+G74*
+X2390595Y-1447470D2*
+X2393626Y-1442056D1*
+G75*
+G01X2378710Y-1454436D2*
+G03X2390595Y-1447470I0J13621D1*
+G74*
+X2366010Y-1454436D2*
+X2378710Y-1454436D1*
+G75*
+G01X2355488Y-1449464D2*
+G03X2366010Y-1454436I10522J8649D1*
+G74*
+X2350367Y-1443234D2*
+X2355488Y-1449464D1*
+G75*
+G01X2349500Y-1440815D2*
+G03X2350367Y-1443234I3810J0D1*
+G74*
+X2349500Y-1429385D2*
+X2349500Y-1440815D1*
+G75*
+G01X2349500Y-1429385D2*
+G03X2348927Y-1427376I-3810J0D1*
+G74*
+X2330785Y-1398150D2*
+X2348927Y-1427376D1*
+G75*
+G01X2330785Y-1398150D2*
+G03X2328545Y-1396904I-2240J-1390D1*
+G74*
+X2314575Y-1396904D2*
+X2328545Y-1396904D1*
+G75*
+G01X2305992Y-1393277D2*
+G03X2314575Y-1396904I8583J8342D1*
+G74*
+X2268383Y-1354577D2*
+X2305992Y-1393277D1*
+G75*
+G01X2268227Y-1354409D2*
+G03X2268383Y-1354577I3549J3129D1*
+G74*
+X2242559Y-1325291D2*
+X2268227Y-1354409D1*
+G75*
+G01X2242559Y-1325291D2*
+G03X2239010Y-1323689I-3549J-3129D1*
+G74*
+X2218690Y-1323689D2*
+X2239010Y-1323689D1*
+G75*
+G01X2218690Y-1323689D2*
+G03X2214436Y-1326349I0J-4731D1*
+G74*
+X2205031Y-1345667D2*
+X2214436Y-1326349D1*
+G75*
+G01X2200910Y-1348244D2*
+G03X2205031Y-1345667I0J4584D1*
+G74*
+X2180590Y-1348244D2*
+X2200910Y-1348244D1*
+G75*
+G01X2178188Y-1347565D2*
+G03X2180590Y-1348244I2402J3905D1*
+G74*
+X2165289Y-1339630D2*
+X2178188Y-1347565D1*
+G75*
+G01X2165289Y-1339630D2*
+G03X2162810Y-1338929I-2479J-4030D1*
+G74*
+X2161286Y-1338929D2*
+X2162810Y-1338929D1*
+X2152650Y-1336040D2*
+X2161286Y-1338929D1*
+X1924050Y-1430909D2*
+X1924050Y-1429385D1*
+X1924050Y-1435100D2*
+X1924050Y-1430909D1*
+G75*
+G01X1931192Y-1417966D2*
+G03X1924050Y-1429385I5558J-11419D1*
+G74*
+X1973334Y-1397453D2*
+X1931192Y-1417966D1*
+G75*
+G01X1978636Y-1396095D2*
+G03X1973334Y-1397453I659J-13605D1*
+G74*
+X1993494Y-1395375D2*
+X1978636Y-1396095D1*
+G75*
+G01X1993494Y-1395375D2*
+G03X1996876Y-1393706I-229J4725D1*
+G74*
+X2049344Y-1331714D2*
+X1996876Y-1393706D1*
+G75*
+G01X2052190Y-1330101D2*
+G03X2049344Y-1331714I765J-4669D1*
+G74*
+X2090925Y-1323751D2*
+X2052190Y-1330101D1*
+G75*
+G01X2091690Y-1323689D2*
+G03X2090925Y-1323751I0J-4731D1*
+G74*
+X2112010Y-1323689D2*
+X2091690Y-1323689D1*
+G75*
+G01X2113479Y-1323923D2*
+G03X2112010Y-1323689I-1469J-4497D1*
+G74*
+X2141021Y-1332917D2*
+X2113479Y-1323923D1*
+G75*
+G01X2141021Y-1332917D2*
+G03X2142490Y-1333151I1469J4497D1*
+G74*
+X2144014Y-1333151D2*
+X2142490Y-1333151D1*
+X2152650Y-1336040D2*
+X2144014Y-1333151D1*
+X1898650Y-1439291D2*
+X1898650Y-1440815D1*
+X1898650Y-1435100D2*
+X1898650Y-1439291D1*
+G75*
+G01X1898650Y-1440815D2*
+G03X1906745Y-1452651I12700J0D1*
+G74*
+X1908951Y-1453509D2*
+X1906745Y-1452651D1*
+G75*
+G01X1908951Y-1453509D2*
+G03X1913087Y-1454412I4939J12694D1*
+G74*
+X2363633Y-1481036D2*
+X1913087Y-1454412D1*
+G75*
+G01X2363633Y-1481036D2*
+G03X2366010Y-1481106I2377J40221D1*
+G74*
+X2378710Y-1481106D2*
+X2366010Y-1481106D1*
+G75*
+G01X2378710Y-1481106D2*
+G03X2406914Y-1469589I0J40291D1*
+G74*
+X2413391Y-1463240D2*
+X2406914Y-1469589D1*
+G75*
+G01X2413391Y-1463240D2*
+G03X2415196Y-1461314I-21981J22425D1*
+G74*
+X2431434Y-1442473D2*
+X2415196Y-1461314D1*
+G75*
+G01X2431434Y-1442473D2*
+G03X2432050Y-1440815I-1924J1658D1*
+G74*
+X2432050Y-1439291D2*
+X2432050Y-1440815D1*
+X2432050Y-1435100D2*
+X2432050Y-1439291D1*
+X2406650Y-1367409D2*
+X2406650Y-1365885D1*
+X2406650Y-1371600D2*
+X2406650Y-1367409D1*
+G75*
+G01X2406974Y-1364644D2*
+G03X2406650Y-1365885I2216J-1241D1*
+G74*
+X2410005Y-1359230D2*
+X2406974Y-1364644D1*
+G75*
+G01X2414404Y-1354505D2*
+G03X2410005Y-1359230I7486J-11380D1*
+G74*
+X2432050Y-1342898D2*
+X2414404Y-1354505D1*
+X2432050Y-1339850D2*
+X2432050Y-1342898D1*
+X2381250Y-1367409D2*
+X2381250Y-1365885D1*
+X2381250Y-1371600D2*
+X2381250Y-1367409D1*
+X2381250Y-1342898D2*
+X2381250Y-1365885D1*
+X2381250Y-1339850D2*
+X2381250Y-1342898D1*
+X2355850Y-1367409D2*
+X2355850Y-1365885D1*
+X2355850Y-1371600D2*
+X2355850Y-1367409D1*
+G75*
+G01X2355850Y-1365885D2*
+G03X2354965Y-1363958I-2540J0D1*
+G74*
+X2330450Y-1342898D2*
+X2354965Y-1363958D1*
+X2330450Y-1339850D2*
+X2330450Y-1342898D1*
+X2355850Y-1430909D2*
+X2355850Y-1429385D1*
+X2355850Y-1435100D2*
+X2355850Y-1430909D1*
+G75*
+G01X2355850Y-1429385D2*
+G03X2353999Y-1422782I-12700J0D1*
+G74*
+X2338770Y-1397762D2*
+X2353999Y-1422782D1*
+G75*
+G01X2338770Y-1397762D2*
+G03X2328545Y-1392015I-10225J-6223D1*
+G74*
+X2314575Y-1392015D2*
+X2328545Y-1392015D1*
+G75*
+G01X2312497Y-1391000D2*
+G03X2314575Y-1392015I2078J1620D1*
+G74*
+X2283793Y-1354189D2*
+X2312497Y-1391000D1*
+G75*
+G01X2282793Y-1351280D2*
+G03X2283793Y-1354189I4731J0D1*
+G74*
+X2282793Y-1349756D2*
+X2282793Y-1351280D1*
+X2279650Y-1339850D2*
+X2282793Y-1349756D1*
+X2419782Y-1174750D2*
+X2419782Y-1181100D1*
+X2457450Y-1260602D2*
+X2419782Y-1181100D1*
+X2457450Y-1263650D2*
+X2457450Y-1260602D1*
+X2349779Y-1174750D2*
+X2349779Y-1181100D1*
+X2406650Y-1260602D2*
+X2349779Y-1181100D1*
+X2406650Y-1263650D2*
+X2406650Y-1260602D1*
+X2279802Y-1174750D2*
+X2279802Y-1181100D1*
+X2355850Y-1260602D2*
+X2279802Y-1181100D1*
+X2355850Y-1263650D2*
+X2355850Y-1260602D1*
+X2209800Y-1174750D2*
+X2209800Y-1181100D1*
+X2305050Y-1260602D2*
+X2209800Y-1181100D1*
+X2305050Y-1263650D2*
+X2305050Y-1260602D1*
+X2174799Y-1174750D2*
+X2174799Y-1181100D1*
+X2279650Y-1260602D2*
+X2174799Y-1181100D1*
+X2279650Y-1263650D2*
+X2279650Y-1260602D1*
+X2244801Y-1174750D2*
+X2244801Y-1181100D1*
+X2330450Y-1260602D2*
+X2244801Y-1181100D1*
+X2330450Y-1263650D2*
+X2330450Y-1260602D1*
+X2314804Y-1174750D2*
+X2314804Y-1181100D1*
+X2381250Y-1260602D2*
+X2314804Y-1181100D1*
+X2381250Y-1263650D2*
+X2381250Y-1260602D1*
+X2384781Y-1174750D2*
+X2384781Y-1181100D1*
+X2432050Y-1260602D2*
+X2384781Y-1181100D1*
+X2432050Y-1263650D2*
+X2432050Y-1260602D1*
+X2454783Y-1174750D2*
+X2454783Y-1181100D1*
+X2482850Y-1260602D2*
+X2454783Y-1181100D1*
+X2482850Y-1263650D2*
+X2482850Y-1260602D1*
+X2305050Y-1339850D2*
+X2305050Y-1342898D1*
+X2337614Y-1369546D2*
+X2305050Y-1342898D1*
+G75*
+G01X2337614Y-1369546D2*
+G03X2340610Y-1370616I2996J3661D1*
+G74*
+X2342134Y-1370616D2*
+X2340610Y-1370616D1*
+X2343150Y-1371600D2*
+X2342134Y-1370616D1*
+X2368550Y-1367409D2*
+X2368550Y-1365885D1*
+X2368550Y-1371600D2*
+X2368550Y-1367409D1*
+G75*
+G01X2368550Y-1365885D2*
+G03X2368226Y-1364644I-2540J0D1*
+G74*
+X2365195Y-1359230D2*
+X2368226Y-1364644D1*
+X2365195Y-1359230D2*
+X2365132Y-1359120D1*
+X2355850Y-1342898D2*
+X2365132Y-1359120D1*
+X2355850Y-1339850D2*
+X2355850Y-1342898D1*
+X2393950Y-1367409D2*
+X2393950Y-1365885D1*
+X2393950Y-1371600D2*
+X2393950Y-1367409D1*
+G75*
+G01X2394274Y-1364644D2*
+G03X2393950Y-1365885I2216J-1241D1*
+G74*
+X2397305Y-1359230D2*
+X2394274Y-1364644D1*
+X2397368Y-1359120D2*
+X2397305Y-1359230D1*
+X2406650Y-1342898D2*
+X2397368Y-1359120D1*
+X2406650Y-1339850D2*
+X2406650Y-1342898D1*
+X2419350Y-1367409D2*
+X2419350Y-1365885D1*
+X2419350Y-1371600D2*
+X2419350Y-1367409D1*
+G75*
+G01X2420712Y-1363635D2*
+G03X2419350Y-1365885I1178J-2250D1*
+G74*
+X2438132Y-1354515D2*
+X2420712Y-1363635D1*
+G75*
+G01X2438132Y-1354515D2*
+G03X2438820Y-1354128I-6082J11617D1*
+G74*
+X2457450Y-1342898D2*
+X2438820Y-1354128D1*
+X2457450Y-1339850D2*
+X2457450Y-1342898D1*
+X1936750Y-1367409D2*
+X1936750Y-1365885D1*
+X1936750Y-1371600D2*
+X1936750Y-1367409D1*
+G75*
+G01X1937074Y-1364644D2*
+G03X1936750Y-1365885I2216J-1241D1*
+G74*
+X1940105Y-1359230D2*
+X1937074Y-1364644D1*
+G75*
+G01X1944504Y-1354505D2*
+G03X1940105Y-1359230I7486J-11380D1*
+G74*
+X1962150Y-1342898D2*
+X1944504Y-1354505D1*
+X1962150Y-1339850D2*
+X1962150Y-1342898D1*
+X1911350Y-1367409D2*
+X1911350Y-1365885D1*
+X1911350Y-1371600D2*
+X1911350Y-1367409D1*
+X1911350Y-1342898D2*
+X1911350Y-1365885D1*
+X1911350Y-1339850D2*
+X1911350Y-1342898D1*
+X1885950Y-1367409D2*
+X1885950Y-1365885D1*
+X1885950Y-1371600D2*
+X1885950Y-1367409D1*
+G75*
+G01X1885950Y-1365885D2*
+G03X1885065Y-1363958I-2540J0D1*
+G74*
+X1860550Y-1342898D2*
+X1885065Y-1363958D1*
+X1860550Y-1339850D2*
+X1860550Y-1342898D1*
+X1885950Y-1430909D2*
+X1885950Y-1429385D1*
+X1885950Y-1435100D2*
+X1885950Y-1430909D1*
+G75*
+G01X1885950Y-1429385D2*
+G03X1885387Y-1427791I-2540J0D1*
+G74*
+X1821307Y-1348311D2*
+X1885387Y-1427791D1*
+G75*
+G01X1821307Y-1348311D2*
+G03X1817624Y-1346549I-3683J-2969D1*
+G74*
+X1816100Y-1346549D2*
+X1817624Y-1346549D1*
+X1809750Y-1339850D2*
+X1816100Y-1346549D1*
+X2045132Y-1174750D2*
+X2045132Y-1181100D1*
+X1987550Y-1260602D2*
+X2045132Y-1181100D1*
+X1987550Y-1263650D2*
+X1987550Y-1260602D1*
+X1975129Y-1174750D2*
+X1975129Y-1181100D1*
+X1936750Y-1260602D2*
+X1975129Y-1181100D1*
+X1936750Y-1263650D2*
+X1936750Y-1260602D1*
+X1905152Y-1174750D2*
+X1905152Y-1181100D1*
+X1885950Y-1260602D2*
+X1905152Y-1181100D1*
+X1885950Y-1263650D2*
+X1885950Y-1260602D1*
+X1835150Y-1174750D2*
+X1835150Y-1181100D1*
+X1835150Y-1260602D2*
+X1835150Y-1181100D1*
+X1835150Y-1263650D2*
+X1835150Y-1260602D1*
+X1800149Y-1174750D2*
+X1800149Y-1181100D1*
+X1809750Y-1260602D2*
+X1800149Y-1181100D1*
+X1809750Y-1263650D2*
+X1809750Y-1260602D1*
+X1870151Y-1174750D2*
+X1870151Y-1181100D1*
+X1860550Y-1260602D2*
+X1870151Y-1181100D1*
+X1860550Y-1263650D2*
+X1860550Y-1260602D1*
+X1940154Y-1174750D2*
+X1940154Y-1181100D1*
+X1911350Y-1260602D2*
+X1940154Y-1181100D1*
+X1911350Y-1263650D2*
+X1911350Y-1260602D1*
+X2010131Y-1174750D2*
+X2010131Y-1181100D1*
+X1962150Y-1260602D2*
+X2010131Y-1181100D1*
+X1962150Y-1263650D2*
+X1962150Y-1260602D1*
+X2080133Y-1174750D2*
+X2080133Y-1181100D1*
+X2012950Y-1260602D2*
+X2080133Y-1181100D1*
+X2012950Y-1263650D2*
+X2012950Y-1260602D1*
+X1835150Y-1339850D2*
+X1835150Y-1342898D1*
+X1867714Y-1369546D2*
+X1835150Y-1342898D1*
+G75*
+G01X1867714Y-1369546D2*
+G03X1870710Y-1370616I2996J3661D1*
+G74*
+X1872234Y-1370616D2*
+X1870710Y-1370616D1*
+X1873250Y-1371600D2*
+X1872234Y-1370616D1*
+X1898650Y-1367409D2*
+X1898650Y-1365885D1*
+X1898650Y-1371600D2*
+X1898650Y-1367409D1*
+G75*
+G01X1898650Y-1365885D2*
+G03X1898326Y-1364644I-2540J0D1*
+G74*
+X1895295Y-1359230D2*
+X1898326Y-1364644D1*
+X1895295Y-1359230D2*
+X1895232Y-1359120D1*
+X1885950Y-1342898D2*
+X1895232Y-1359120D1*
+X1885950Y-1339850D2*
+X1885950Y-1342898D1*
+X1924050Y-1367409D2*
+X1924050Y-1365885D1*
+X1924050Y-1371600D2*
+X1924050Y-1367409D1*
+G75*
+G01X1924374Y-1364644D2*
+G03X1924050Y-1365885I2216J-1241D1*
+G74*
+X1927405Y-1359230D2*
+X1924374Y-1364644D1*
+X1927468Y-1359120D2*
+X1927405Y-1359230D1*
+X1936750Y-1342898D2*
+X1927468Y-1359120D1*
+X1936750Y-1339850D2*
+X1936750Y-1342898D1*
+X1949450Y-1367409D2*
+X1949450Y-1365885D1*
+X1949450Y-1371600D2*
+X1949450Y-1367409D1*
+G75*
+G01X1950812Y-1363635D2*
+G03X1949450Y-1365885I1178J-2250D1*
+G74*
+X1968232Y-1354515D2*
+X1950812Y-1363635D1*
+G75*
+G01X1968232Y-1354515D2*
+G03X1968920Y-1354128I-6082J11617D1*
+G74*
+X1987550Y-1342898D2*
+X1968920Y-1354128D1*
+X1987550Y-1339850D2*
+X1987550Y-1342898D1*
+X1963166Y-1434116D2*
+X1964690Y-1434116D1*
+X1962150Y-1435100D2*
+X1963166Y-1434116D1*
+X1983740Y-1434116D2*
+X1964690Y-1434116D1*
+X1985264Y-1434116D2*
+X1983740Y-1434116D1*
+X1991360Y-1430020D2*
+X1985264Y-1434116D1*
+X2368550Y-1430909D2*
+X2368550Y-1429385D1*
+X2368550Y-1435100D2*
+X2368550Y-1430909D1*
+G75*
+G01X2368550Y-1429385D2*
+G03X2365950Y-1417614I-27940J0D1*
+G74*
+X2355802Y-1395769D2*
+X2365950Y-1417614D1*
+G75*
+G01X2355802Y-1395769D2*
+G03X2339520Y-1380452I-27257J-12661D1*
+G74*
+X2339398Y-1380404D2*
+X2339520Y-1380452D1*
+G75*
+G01X2338811Y-1380103D2*
+G03X2339398Y-1380404I1799J2788D1*
+G74*
+X2298026Y-1353782D2*
+X2338811Y-1380103D1*
+G75*
+G01X2292096Y-1342898D2*
+G03X2298026Y-1353782I12954J0D1*
+G74*
+X2292096Y-1336802D2*
+X2292096Y-1342898D1*
+G75*
+G01X2292112Y-1336162D2*
+G03X2292096Y-1336802I12938J-640D1*
+G74*
+X2292249Y-1333385D2*
+X2292112Y-1336162D1*
+G75*
+G01X2292249Y-1333385D2*
+G03X2292255Y-1333151I-4725J234D1*
+G74*
+X2292255Y-1328420D2*
+X2292255Y-1333151D1*
+G75*
+G01X2292255Y-1328420D2*
+G03X2288391Y-1323769I-4731J0D1*
+G74*
+X2241506Y-1315030D2*
+X2288391Y-1323769D1*
+G75*
+G01X2241506Y-1315030D2*
+G03X2239010Y-1314799I-2496J-13390D1*
+G74*
+X2218690Y-1314799D2*
+X2239010Y-1314799D1*
+G75*
+G01X2218690Y-1314799D2*
+G03X2211879Y-1316624I0J-13621D1*
+G74*
+X2198544Y-1324323D2*
+X2211879Y-1316624D1*
+G75*
+G01X2198544Y-1324323D2*
+G03X2196179Y-1328420I2366J-4097D1*
+G74*
+X2196179Y-1329944D2*
+X2196179Y-1328420D1*
+X2190750Y-1336040D2*
+X2196179Y-1329944D1*
+X1936750Y-1439291D2*
+X1936750Y-1440815D1*
+X1936750Y-1435100D2*
+X1936750Y-1439291D1*
+G75*
+G01X1936750Y-1440815D2*
+G03X1938560Y-1443248I2540J0D1*
+G74*
+X1945550Y-1445346D2*
+X1938560Y-1443248D1*
+G75*
+G01X1945550Y-1445346D2*
+G03X1946728Y-1445543I1360J4531D1*
+G74*
+X2161137Y-1453783D2*
+X1946728Y-1445543D1*
+G75*
+G01X2161137Y-1453783D2*
+G03X2162099Y-1453801I962J25033D1*
+G74*
+X2261870Y-1453801D2*
+X2162099Y-1453801D1*
+X2263394Y-1453801D2*
+X2261870Y-1453801D1*
+X2272030Y-1451610D2*
+X2263394Y-1453801D1*
+X2406650Y-1439291D2*
+X2406650Y-1440815D1*
+X2406650Y-1435100D2*
+X2406650Y-1439291D1*
+G75*
+G01X2391400Y-1465707D2*
+G03X2406650Y-1440815I-12690J24892D1*
+G74*
+X2385352Y-1468790D2*
+X2391400Y-1465707D1*
+G75*
+G01X2371090Y-1472216D2*
+G03X2385352Y-1468790I0J31401D1*
+G74*
+X2366010Y-1472216D2*
+X2371090Y-1472216D1*
+G75*
+G01X2359209Y-1471471D2*
+G03X2366010Y-1472216I6801J30656D1*
+G74*
+X2283215Y-1454611D2*
+X2359209Y-1471471D1*
+G75*
+G01X2283215Y-1454611D2*
+G03X2282190Y-1454499I-1025J-4619D1*
+G74*
+X2280666Y-1454499D2*
+X2282190Y-1454499D1*
+X2272030Y-1451610D2*
+X2280666Y-1454499D1*
+X2197100Y-1422400D2*
+X2197100Y-1416050D1*
+X2196180Y-1376791D2*
+X2197100Y-1416050D1*
+G75*
+G01X2196179Y-1376680D2*
+G03X2196180Y-1376791I4731J0D1*
+G74*
+X2196179Y-1375156D2*
+X2196179Y-1376680D1*
+X2190750Y-1369060D2*
+X2196179Y-1375156D1*
+X2127098Y-1422400D2*
+X2127098Y-1428750D1*
+X2154637Y-1443085D2*
+X2127098Y-1428750D1*
+G75*
+G01X2154637Y-1443085D2*
+G03X2162099Y-1444911I7462J14335D1*
+G74*
+X2232101Y-1444911D2*
+X2162099Y-1444911D1*
+G75*
+G01X2232101Y-1444911D2*
+G03X2244343Y-1439300I0J16161D1*
+G74*
+X2258286Y-1423121D2*
+X2244343Y-1439300D1*
+G75*
+G01X2261870Y-1421479D2*
+G03X2258286Y-1423121I0J-4731D1*
+G74*
+X2263394Y-1421479D2*
+X2261870Y-1421479D1*
+X2272030Y-1418590D2*
+X2263394Y-1421479D1*
+X2115134Y-1174750D2*
+X2115134Y-1181100D1*
+X2012950Y-1336802D2*
+X2115134Y-1181100D1*
+X2012950Y-1339850D2*
+X2012950Y-1336802D1*
+X2012950Y-1342898D2*
+X1982470Y-1376426D1*
+X2012950Y-1339850D2*
+X2012950Y-1342898D1*
+X2489784Y-1174750D2*
+X2489784Y-1181100D1*
+X2495923Y-1259579D2*
+X2489784Y-1181100D1*
+G75*
+G01X2495963Y-1260602D2*
+G03X2495923Y-1259579I-13113J0D1*
+G74*
+X2495963Y-1266698D2*
+X2495963Y-1260602D1*
+G75*
+G01X2495732Y-1269151D2*
+G03X2495963Y-1266698I-12882J2453D1*
+G74*
+X2482850Y-1336802D2*
+X2495732Y-1269151D1*
+X2482850Y-1339850D2*
+X2482850Y-1336802D1*
+X1911350Y-1430909D2*
+X1911350Y-1429385D1*
+X1911350Y-1435100D2*
+X1911350Y-1430909D1*
+G75*
+G01X1911394Y-1428916D2*
+G03X1911350Y-1429385I2496J-469D1*
+G74*
+X1912086Y-1425231D2*
+X1911394Y-1428916D1*
+G75*
+G01X1920235Y-1411738D2*
+G03X1912086Y-1425231I13975J-17647D1*
+G74*
+X1961187Y-1379306D2*
+X1920235Y-1411738D1*
+G75*
+G01X1961187Y-1379306D2*
+G03X1962150Y-1377315I-1577J1991D1*
+G74*
+X1962150Y-1375791D2*
+X1962150Y-1377315D1*
+X1962150Y-1371600D2*
+X1962150Y-1375791D1*
+X1965718Y-1372697D2*
+X1982470Y-1376426D1*
+G75*
+G01X1965718Y-1372697D2*
+G03X1964690Y-1372584I-1028J-4618D1*
+G74*
+X1963166Y-1372584D2*
+X1964690Y-1372584D1*
+X1962150Y-1371600D2*
+X1963166Y-1372584D1*
+X2381250Y-1430909D2*
+X2381250Y-1429385D1*
+X2381250Y-1435100D2*
+X2381250Y-1430909D1*
+G75*
+G01X2382009Y-1427574D2*
+G03X2381250Y-1429385I1781J-1811D1*
+G74*
+X2431291Y-1379126D2*
+X2382009Y-1427574D1*
+G75*
+G01X2431291Y-1379126D2*
+G03X2432050Y-1377315I-1781J1811D1*
+G74*
+X2432050Y-1375791D2*
+X2432050Y-1377315D1*
+X2432050Y-1371600D2*
+X2432050Y-1375791D1*
+X2482850Y-1339850D2*
+X2482850Y-1342898D1*
+X2464220Y-1354128D2*
+X2482850Y-1342898D1*
+G75*
+G01X2464041Y-1354234D2*
+G03X2464220Y-1354128I-6591J11336D1*
+G74*
+X2436968Y-1369975D2*
+X2464041Y-1354234D1*
+G75*
+G01X2434590Y-1370616D2*
+G03X2436968Y-1369975I0J4731D1*
+G74*
+X2433066Y-1370616D2*
+X2434590Y-1370616D1*
+X2432050Y-1371600D2*
+X2433066Y-1370616D1*
+X2115134Y-1174750D2*
+X2115134Y-1168400D1*
+X2170422Y-1152843D2*
+X2115134Y-1168400D1*
+G75*
+G01X2174799Y-1152239D2*
+G03X2170422Y-1152843I0J-16161D1*
+G74*
+X2454783Y-1152239D2*
+X2174799Y-1152239D1*
+G75*
+G01X2462245Y-1154065D2*
+G03X2454783Y-1152239I-7462J-14335D1*
+G74*
+X2489784Y-1168400D2*
+X2462245Y-1154065D1*
+X2489784Y-1174750D2*
+X2489784Y-1168400D1*
+X2092096Y-1422400D2*
+X2092096Y-1416050D1*
+X2096392Y-1377200D2*
+X2092096Y-1416050D1*
+G75*
+G01X2096392Y-1377200D2*
+G03X2096421Y-1376680I-4702J520D1*
+G74*
+X2096421Y-1375156D2*
+X2096421Y-1376680D1*
+X2101850Y-1369060D2*
+X2096421Y-1375156D1*
+X2381250Y-1439291D2*
+X2381250Y-1440815D1*
+X2381250Y-1435100D2*
+X2381250Y-1439291D1*
+G75*
+G01X2379440Y-1443248D2*
+G03X2381250Y-1440815I-730J2433D1*
+G74*
+X2372450Y-1445346D2*
+X2379440Y-1443248D1*
+G75*
+G01X2371090Y-1445546D2*
+G03X2372450Y-1445346I0J4731D1*
+G74*
+X2368550Y-1445546D2*
+X2371090Y-1445546D1*
+G75*
+G01X2366835Y-1445224D2*
+G03X2368550Y-1445546I1715J4409D1*
+G74*
+X2364628Y-1444366D2*
+X2366835Y-1445224D1*
+G75*
+G01X2362200Y-1440815D2*
+G03X2364628Y-1444366I3810J0D1*
+G74*
+X2362200Y-1429385D2*
+X2362200Y-1440815D1*
+G75*
+G01X2362200Y-1429385D2*
+G03X2360110Y-1420710I-19050J0D1*
+G74*
+X2348587Y-1398179D2*
+X2360110Y-1420710D1*
+G75*
+G01X2348587Y-1398179D2*
+G03X2342670Y-1390902I-20042J-10251D1*
+G74*
+X2340499Y-1389152D2*
+X2342670Y-1390902D1*
+G75*
+G01X2340499Y-1389152D2*
+G03X2328545Y-1384935I-11954J-14833D1*
+G74*
+X2327021Y-1384935D2*
+X2328545Y-1384935D1*
+X2321560Y-1384935D2*
+X2327021Y-1384935D1*
+X1983771Y-1380228D2*
+X1982470Y-1376426D1*
+G75*
+G01X1984026Y-1381760D2*
+G03X1983771Y-1380228I-4731J0D1*
+G74*
+X1984026Y-1383284D2*
+X1984026Y-1381760D1*
+X1986280Y-1386205D2*
+X1984026Y-1383284D1*
+G54D19*
+X2279650Y-1260602D2*
+X2279650Y-1266698D1*
+X2305050Y-1260602D2*
+X2305050Y-1266698D1*
+X2330450Y-1260602D2*
+X2330450Y-1266698D1*
+X2355850Y-1260602D2*
+X2355850Y-1266698D1*
+X2381250Y-1260602D2*
+X2381250Y-1266698D1*
+X2406650Y-1260602D2*
+X2406650Y-1266698D1*
+X2432050Y-1260602D2*
+X2432050Y-1266698D1*
+X2457450Y-1260602D2*
+X2457450Y-1266698D1*
+X2482850Y-1260602D2*
+X2482850Y-1266698D1*
+X2482850Y-1336802D2*
+X2482850Y-1342898D1*
+X2457450Y-1336802D2*
+X2457450Y-1342898D1*
+X2432050Y-1336802D2*
+X2432050Y-1342898D1*
+X2406650Y-1336802D2*
+X2406650Y-1342898D1*
+X2381250Y-1336802D2*
+X2381250Y-1342898D1*
+X2355850Y-1336802D2*
+X2355850Y-1342898D1*
+X2330450Y-1336802D2*
+X2330450Y-1342898D1*
+X2305050Y-1336802D2*
+X2305050Y-1342898D1*
+X1809750Y-1260602D2*
+X1809750Y-1266698D1*
+X1835150Y-1260602D2*
+X1835150Y-1266698D1*
+X1860550Y-1260602D2*
+X1860550Y-1266698D1*
+X1885950Y-1260602D2*
+X1885950Y-1266698D1*
+X1911350Y-1260602D2*
+X1911350Y-1266698D1*
+X1936750Y-1260602D2*
+X1936750Y-1266698D1*
+X1962150Y-1260602D2*
+X1962150Y-1266698D1*
+X1987550Y-1260602D2*
+X1987550Y-1266698D1*
+X2012950Y-1260602D2*
+X2012950Y-1266698D1*
+X2012950Y-1336802D2*
+X2012950Y-1342898D1*
+X1987550Y-1336802D2*
+X1987550Y-1342898D1*
+X1962150Y-1336802D2*
+X1962150Y-1342898D1*
+X1936750Y-1336802D2*
+X1936750Y-1342898D1*
+X1911350Y-1336802D2*
+X1911350Y-1342898D1*
+X1885950Y-1336802D2*
+X1885950Y-1342898D1*
+X1860550Y-1336802D2*
+X1860550Y-1342898D1*
+X1835150Y-1336802D2*
+X1835150Y-1342898D1*
+G54D22*
+X2162099Y-1428750D2*
+X2162099Y-1416050D1*
+X2197100Y-1428750D2*
+X2197100Y-1416050D1*
+X2232101Y-1428750D2*
+X2232101Y-1416050D1*
+X2127098Y-1428750D2*
+X2127098Y-1416050D1*
+X2057095Y-1428750D2*
+X2057095Y-1416050D1*
+X2092096Y-1428750D2*
+X2092096Y-1416050D1*
+X2244801Y-1168400D2*
+X2244801Y-1181100D1*
+X2209800Y-1168400D2*
+X2209800Y-1181100D1*
+X2174799Y-1168400D2*
+X2174799Y-1181100D1*
+X2279802Y-1168400D2*
+X2279802Y-1181100D1*
+X2314804Y-1168400D2*
+X2314804Y-1181100D1*
+X2489784Y-1168400D2*
+X2489784Y-1181100D1*
+X2454783Y-1168400D2*
+X2454783Y-1181100D1*
+X2349779Y-1168400D2*
+X2349779Y-1181100D1*
+X2384781Y-1168400D2*
+X2384781Y-1181100D1*
+X2419782Y-1168400D2*
+X2419782Y-1181100D1*
+X1870151Y-1168400D2*
+X1870151Y-1181100D1*
+X1835150Y-1168400D2*
+X1835150Y-1181100D1*
+X1800149Y-1168400D2*
+X1800149Y-1181100D1*
+X1905152Y-1168400D2*
+X1905152Y-1181100D1*
+X1940154Y-1168400D2*
+X1940154Y-1181100D1*
+X2115134Y-1168400D2*
+X2115134Y-1181100D1*
+X2080133Y-1168400D2*
+X2080133Y-1181100D1*
+X1975129Y-1168400D2*
+X1975129Y-1181100D1*
+X2010131Y-1168400D2*
+X2010131Y-1181100D1*
+X2045132Y-1168400D2*
+X2045132Y-1181100D1*
+M02*
diff --git a/gerbview/gerber_test_files/test_polygons.gbr b/gerbview/gerber_test_files/test_polygons_with_arcs.gbr
similarity index 100%
rename from gerbview/gerber_test_files/test_polygons.gbr
rename to gerbview/gerber_test_files/test_polygons_with_arcs.gbr
diff --git a/gerbview/gerber_test_files/test_polygons_simple.gbr b/gerbview/gerber_test_files/test_polygons_with_arcs_simple.gbr
similarity index 100%
rename from gerbview/gerber_test_files/test_polygons_simple.gbr
rename to gerbview/gerber_test_files/test_polygons_with_arcs_simple.gbr
diff --git a/gerbview/gerberframe.cpp b/gerbview/gerberframe.cpp
index 9963637e93..76a81ef876 100644
--- a/gerbview/gerberframe.cpp
+++ b/gerbview/gerberframe.cpp
@@ -57,9 +57,9 @@ BEGIN_EVENT_TABLE( WinEDA_GerberFrame, WinEDA_BasePcbFrame )
                     ID_CONFIG_AND_PREFERENCES_END,
                     WinEDA_GerberFrame::Process_Config )
 
-    EVT_MENU( ID_COLORS_SETUP, WinEDA_GerberFrame::Process_Config )
+    EVT_MENU( ID_MENU_GERBVIEW_SHOW_HIDE_LAYERS_MANAGER_DIALOG, WinEDA_GerberFrame::OnSelectOptionToolbar )
     EVT_MENU( ID_OPTIONS_SETUP, WinEDA_GerberFrame::InstallGerberGeneralOptionsFrame )
-    EVT_MENU( ID_PCB_DISPLAY_OPTIONS_SETUP, WinEDA_GerberFrame::InstallGerberDisplayOptionsDialog )
+    EVT_MENU( ID_GERBVIEW_DISPLAY_OPTIONS_SETUP, WinEDA_GerberFrame::InstallGerberDisplayOptionsDialog )
 
     EVT_MENU_RANGE( ID_LANGUAGE_CHOICE, ID_LANGUAGE_CHOICE_END,
                     WinEDA_DrawFrame::SetLanguage )
@@ -74,7 +74,7 @@ BEGIN_EVENT_TABLE( WinEDA_GerberFrame, WinEDA_BasePcbFrame )
 
 
 // menu Miscellaneous
-    EVT_MENU( ID_PCB_GLOBAL_DELETE,
+    EVT_MENU( ID_GERBVIEW_GLOBAL_DELETE,
               WinEDA_GerberFrame::Process_Special_Functions )
 
 // Menu Help
@@ -88,7 +88,7 @@ BEGIN_EVENT_TABLE( WinEDA_GerberFrame, WinEDA_BasePcbFrame )
     EVT_TOOL( wxID_UNDO, WinEDA_GerberFrame::Process_Special_Functions )
     EVT_TOOL( ID_GEN_PRINT, WinEDA_GerberFrame::ToPrinter )
     EVT_TOOL( ID_FIND_ITEMS, WinEDA_GerberFrame::Process_Special_Functions )
-    EVT_KICAD_CHOICEBOX( ID_TOOLBARH_PCB_SELECT_LAYER,
+    EVT_KICAD_CHOICEBOX( ID_TOOLBARH_GERBVIEW_SELECT_LAYER,
                          WinEDA_GerberFrame::Process_Special_Functions )
 
     EVT_KICAD_CHOICEBOX( ID_TOOLBARH_GERBER_SELECT_TOOL,
@@ -96,7 +96,7 @@ BEGIN_EVENT_TABLE( WinEDA_GerberFrame, WinEDA_BasePcbFrame )
 
 // Vertical toolbar:
     EVT_TOOL( ID_NO_SELECT_BUTT, WinEDA_GerberFrame::Process_Special_Functions )
-    EVT_TOOL( ID_PCB_DELETE_ITEM_BUTT,
+    EVT_TOOL( ID_GERBVIEW_DELETE_ITEM_BUTT,
           WinEDA_GerberFrame::Process_Special_Functions )
 
     EVT_MENU_RANGE( ID_POPUP_GENERAL_START_RANGE, ID_POPUP_GENERAL_END_RANGE,
@@ -109,6 +109,8 @@ BEGIN_EVENT_TABLE( WinEDA_GerberFrame, WinEDA_BasePcbFrame )
 // Option toolbar
     EVT_TOOL_RANGE( ID_TB_OPTIONS_START, ID_TB_OPTIONS_END,
                     WinEDA_GerberFrame::OnSelectOptionToolbar )
+    EVT_TOOL( ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR,
+                    WinEDA_GerberFrame::OnSelectOptionToolbar )
 
 END_EVENT_TABLE()
 
@@ -120,6 +122,7 @@ WinEDA_GerberFrame::WinEDA_GerberFrame( wxWindow*       father,
     WinEDA_BasePcbFrame( father, GERBER_FRAME, title, pos, size, style )
 {
     m_FrameName = wxT( "GerberFrame" );
+    m_show_layer_manager_tools = true;
 
     m_Draw_Axis = true;         // true to show X and Y axis on screen
     m_Draw_Sheet_Ref = FALSE;   // TRUE for reference drawings.
@@ -136,8 +139,20 @@ WinEDA_GerberFrame::WinEDA_GerberFrame( wxWindow*       father,
     SetBaseScreen( ScreenPcb );
     ActiveScreen = ScreenPcb;
 
-    LoadSettings();
+    SetBoard( new BOARD( NULL, this ) );
+    GetBoard()->SetEnabledLayers( FULL_LAYERS );     // All 32 layers enabled at first.
 
+    // Create the PCB_LAYER_WIDGET *after* SetBoard():
+    wxFont font = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT );
+    int pointSize = font.GetPointSize();
+    int screenHeight = wxSystemSettings::GetMetric( wxSYS_SCREEN_Y );
+    if( screenHeight <= 900 )
+        pointSize = (pointSize * 8) / 10;
+    m_LayersManager = new GERBER_LAYER_WIDGET( this, DrawPanel, pointSize );
+
+    // LoadSettings() *after* creating m_LayersManager, because LoadSettings()
+    // initialize parameters in m_LayersManager
+    LoadSettings();
     SetSize( m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y );
     GetScreen()->SetGrid( ID_POPUP_GRID_LEVEL_1000 + m_LastGridSizeId  );
 
@@ -146,7 +161,6 @@ WinEDA_GerberFrame::WinEDA_GerberFrame( wxWindow*       father,
     ReCreateVToolbar();
     ReCreateOptToolbar();
 
-#if defined(KICAD_AUIMANAGER)
     m_auimgr.SetManagedWindow( this );
 
     wxAuiPaneInfo horiz;
@@ -162,13 +176,23 @@ WinEDA_GerberFrame::WinEDA_GerberFrame( wxWindow*       father,
     vert.TopDockable( false ).BottomDockable( false );
     horiz.LeftDockable( false ).RightDockable( false );
 
+    // LAYER_WIDGET is floatable, but initially docked at far right
+    wxAuiPaneInfo   lyrs;
+    lyrs.MinSize( m_LayersManager->GetBestSize() );    // updated in ReFillLayerWidget
+    lyrs.BestSize( m_LayersManager->GetBestSize() );
+    lyrs.CloseButton( false );
+    lyrs.Caption( _( "Visibles" ) );
+    lyrs.IsFloatable();
+
     if( m_HToolBar )
         m_auimgr.AddPane( m_HToolBar,
                           wxAuiPaneInfo( horiz ).Name( wxT( "m_HToolBar" ) ).Top().Row( 0 ) );
 
     if( m_VToolBar )
         m_auimgr.AddPane( m_VToolBar,
-                          wxAuiPaneInfo( vert ).Name( wxT( "m_VToolBar" ) ).Right() );
+                          wxAuiPaneInfo( vert ).Name( wxT( "m_VToolBar" ) ).Right().Row( 1 ) );
+
+    m_auimgr.AddPane( m_LayersManager, lyrs.Name( wxT( "m_LayersManagerToolBar" ) ).Right().Row( 0 ) );
 
     if( m_OptionsToolBar )
         m_auimgr.AddPane( m_OptionsToolBar,
@@ -183,7 +207,8 @@ WinEDA_GerberFrame::WinEDA_GerberFrame( wxWindow*       father,
                           wxAuiPaneInfo( horiz ).Name( wxT( "MsgPanel" ) ).Bottom() );
 
     m_auimgr.Update();
-#endif
+
+    ReFillLayerWidget();    // this is near end because contents establish size
 }
 
 
@@ -197,34 +222,6 @@ WinEDA_GerberFrame::~WinEDA_GerberFrame()
 
 void WinEDA_GerberFrame::OnCloseWindow( wxCloseEvent& Event )
 {
-    PCB_SCREEN* screen = ScreenPcb;
-
-#if 0       // unused currently
-    while( screen )
-    {
-        if( screen->IsModify() )
-            break;
-        screen = screen->Next();
-    }
-
-    if( screen )
-    {
-        if( !IsOK( this, _( "Layer modified,  Continue ?" ) ) )
-        {
-            Event.Veto();
-            return;
-        }
-    }
-#endif
-
-    while( screen ) // Modify delete flag to prevent further message.
-    {
-        screen->ClrModify();
-        screen = screen->Next();
-    }
-
-    SetBaseScreen( ActiveScreen = ScreenPcb );
-
     SaveSettings();
     Destroy();
 }
@@ -307,15 +304,23 @@ void WinEDA_GerberFrame::SetToolbars()
                                       g_DisplayPolygonsModeSketch == 0 ? 0 : 1 );
 
         m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_DCODES,
-                                      DisplayOpt.DisplayPadNum );
-    }
+                                      IsElementVisible( DCODES_VISIBLE) );
+
+        m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR,
+                                      m_show_layer_manager_tools );
+        if( m_show_layer_manager_tools )
+            GetMenuBar()->SetLabel(ID_MENU_GERBVIEW_SHOW_HIDE_LAYERS_MANAGER_DIALOG,
+                                _("Hide &Layers Manager" ) );
+        else
+            GetMenuBar()->SetLabel(ID_MENU_GERBVIEW_SHOW_HIDE_LAYERS_MANAGER_DIALOG,
+                                _("Show &Layers Manager" ) );
+
+}
 
     DisplayUnitsMsg();
 
-#if defined(KICAD_AUIMANAGER)
     if( m_auimgr.GetManagedWindow() )
         m_auimgr.Update();
-#endif
 }
 
 
@@ -356,6 +361,10 @@ void WinEDA_GerberFrame::LoadSettings()
     {
         m_Draw_Sheet_Ref = true;
     }
+
+    long tmp;
+    config->Read( GerbviewShowDCodes, &tmp, 1);
+    SetElementVisibility( DCODES_VISIBLE, tmp);
 }
 
 /**************************************/
@@ -384,4 +393,71 @@ void WinEDA_GerberFrame::SaveSettings()
         }
     }
     config->Write( GerbviewShowPageSizeOption, pageSize_opt );
+    config->Write( GerbviewShowDCodes, IsElementVisible( DCODES_VISIBLE) );
+}
+
+
+void WinEDA_GerberFrame::ReFillLayerWidget()
+{
+    m_LayersManager->ReFill();
+
+    wxAuiPaneInfo& lyrs = m_auimgr.GetPane( m_LayersManager );
+
+    wxSize bestz = m_LayersManager->GetBestSize();
+
+    lyrs.MinSize( bestz );
+    lyrs.BestSize( bestz );
+    lyrs.FloatingSize( bestz );
+
+    if( lyrs.IsDocked() )
+        m_auimgr.Update();
+    else
+        m_LayersManager->SetSize( bestz );
+}
+
+/** Function IsGridVisible() , virtual
+ * @return true if the grid must be shown
+ */
+bool WinEDA_GerberFrame::IsGridVisible()
+{
+    return IsElementVisible(GERBER_GRID_VISIBLE);
+}
+
+/** Function SetGridVisibility() , virtual
+ * It may be overloaded by derived classes
+ * if you want to store/retrieve the grid visiblity in configuration.
+ * @param aVisible = true if the grid must be shown
+ */
+void WinEDA_GerberFrame::SetGridVisibility(bool aVisible)
+{
+    SetElementVisibility(GERBER_GRID_VISIBLE, aVisible);
+}
+
+/** Function GetGridColor() , virtual
+ * @return the color of the grid
+ */
+int WinEDA_GerberFrame::GetGridColor()
+{
+    return GetBoard()->GetVisibleElementColor( GERBER_GRID_VISIBLE );
+}
+
+/** Function SetGridColor() , virtual
+ * @param aColor = the new color of the grid
+ */
+void WinEDA_GerberFrame::SetGridColor(int aColor)
+{
+    GetBoard()->SetVisibleElementColor( GERBER_GRID_VISIBLE, aColor );
+}
+
+/**
+ * Function SetElementVisibility
+ * changes the visibility of an element category
+ * @param aGERBER_VISIBLE is from the enum by the same name
+ * @param aNewState = The new visibility state of the element category
+ * @see enum aGERBER_VISIBLE
+ */
+void WinEDA_GerberFrame::SetElementVisibility( int aGERBER_VISIBLE, bool aNewState )
+{
+    GetBoard()->SetElementVisibility( aGERBER_VISIBLE, aNewState );
+    m_LayersManager->SetRenderState( aGERBER_VISIBLE, aNewState );
 }
diff --git a/gerbview/gerbview.cpp b/gerbview/gerbview.cpp
index 3654fa3a93..1dc65894e9 100644
--- a/gerbview/gerbview.cpp
+++ b/gerbview/gerbview.cpp
@@ -41,6 +41,7 @@ const wxString GerbviewProjectFileWildcard( _( "GerbView project files (.cnf)|*.
 
 // Config keywords
 const wxString GerbviewShowPageSizeOption( wxT( "ShowPageSizeOpt" ) );
+extern const wxString GerbviewShowDCodes( wxT( "ShowDCodesOpt" ) );
 
 GERBER*  g_GERBER_List[32];
 
@@ -105,9 +106,6 @@ bool WinEDA_App::OnInit()
 
     /* Gerbview mainframe title */
     frame->SetTitle( GetTitle() + wxT( " " ) + GetBuildVersion() );
-    frame->SetBoard( new BOARD( NULL, frame ) );
-    frame->GetBoard()->SetEnabledLayers( FULL_LAYERS );     // All 32 layers enabled at first.
-
 
     // Initialize some display options
     DisplayOpt.DisplayPadIsol = false;      // Pad clearance has no meaning
diff --git a/gerbview/gerbview.h b/gerbview/gerbview.h
index 9f3b4250dd..d5ee91865f 100644
--- a/gerbview/gerbview.h
+++ b/gerbview/gerbview.h
@@ -29,11 +29,11 @@ typedef enum
  * Enum ITEM_VISIBLE
  * is a set of visible PCB elements.
  */
-enum ITEM_VISIBLE
+enum GERBER_VISIBLE
 {
-    DCODES_VISIBLE,
-
-    END_ITEM_VISIBLE_LIST  // sentinel
+    DCODES_VISIBLE = 1,    // visible item id cannot be 0 because this id is used as wxWidget id
+    GERBER_GRID_VISIBLE,
+    END_GERBER_VISIBLE_LIST  // sentinel
 };
 
 extern wxString g_PhotoFilenameExt;
@@ -52,6 +52,7 @@ extern Ki_PageDescr* g_GerberPageSizeList[];
 
 // Config keywords
 extern const wxString GerbviewShowPageSizeOption;
+extern const wxString GerbviewShowDCodes;
 
 /**
  * Enum APERTURE_T
diff --git a/gerbview/gerbview_config.cpp b/gerbview/gerbview_config.cpp
index bb994337c1..b2d3d03400 100644
--- a/gerbview/gerbview_config.cpp
+++ b/gerbview/gerbview_config.cpp
@@ -33,10 +33,6 @@ void WinEDA_GerberFrame::Process_Config( wxCommandEvent& event )
 
     switch( id )
     {
-    case ID_COLORS_SETUP:
-        DisplayColorSetupFrame( this, pos );
-        break;
-
     case ID_CONFIG_REQ:
     {
         InstallConfigFrame( pos );
diff --git a/gerbview/gerbview_config.h b/gerbview/gerbview_config.h
index 79472a2c32..22bfb26987 100644
--- a/gerbview/gerbview_config.h
+++ b/gerbview/gerbview_config.h
@@ -73,14 +73,6 @@ static PARAM_CFG_INT ViaFillCfg
     TRUE
 );
 
-static PARAM_CFG_BOOL PadShowNumCfg  // Show DCodes
-(
-    INSETUP,
-    wxT("PadSNum"),
-    &DisplayOpt.DisplayPadNum,
-    TRUE
-);
-
 static PARAM_CFG_SETCOLOR ColorLayer0Cfg
 (
     INSETUP,
@@ -379,7 +371,6 @@ PARAM_CFG_BASE * ParamCfgList[] =
     & SegmFillCfg,
     & PadFillCfg,
     & ViaFillCfg,  //TODO: Will adding this line break tha pcbnew file compatibility?
-    & PadShowNumCfg,
     & ColorLayer0Cfg,
     & ColorLayer1Cfg,
     & ColorLayer2Cfg,
diff --git a/gerbview/gerbview_dialog_display_options_frame.cpp b/gerbview/gerbview_dialog_display_options_frame.cpp
index 7cb7f6088e..dc0f191982 100644
--- a/gerbview/gerbview_dialog_display_options_frame.cpp
+++ b/gerbview/gerbview_dialog_display_options_frame.cpp
@@ -19,11 +19,11 @@
 class DIALOG_DISPLAY_OPTIONS : public DIALOG_DISPLAY_OPTIONS_BASE
 {
 private:
-    WinEDA_BasePcbFrame* m_Parent;
+    WinEDA_GerberFrame* m_Parent;
 
 public:
 
-    DIALOG_DISPLAY_OPTIONS( WinEDA_BasePcbFrame* parent );
+    DIALOG_DISPLAY_OPTIONS( WinEDA_GerberFrame* parent );
     ~DIALOG_DISPLAY_OPTIONS() {};
 
 private:
@@ -40,7 +40,7 @@ void WinEDA_GerberFrame::InstallGerberDisplayOptionsDialog( wxCommandEvent& even
             DrawPanel->Refresh();
 }
 
-DIALOG_DISPLAY_OPTIONS::DIALOG_DISPLAY_OPTIONS( WinEDA_BasePcbFrame *parent) :
+DIALOG_DISPLAY_OPTIONS::DIALOG_DISPLAY_OPTIONS( WinEDA_GerberFrame *parent) :
     DIALOG_DISPLAY_OPTIONS_BASE( parent, wxID_ANY )
 {
     m_Parent = parent;
@@ -76,7 +76,7 @@ DIALOG_DISPLAY_OPTIONS::DIALOG_DISPLAY_OPTIONS( WinEDA_BasePcbFrame *parent) :
         }
     }
 
-    m_OptDisplayDCodes->SetValue( DisplayOpt.DisplayPadNum );
+    m_OptDisplayDCodes->SetValue( m_Parent->IsElementVisible( DCODES_VISIBLE ) );
 
     GetSizer()->Fit( this );
     GetSizer()->SetSizeHints( this );
@@ -113,7 +113,7 @@ void DIALOG_DISPLAY_OPTIONS::OnOKBUttonClick( wxCommandEvent& event )
     else
         g_DisplayPolygonsModeSketch = 0;
 
-    DisplayOpt.DisplayPadNum = m_OptDisplayDCodes->GetValue();
+    m_Parent->SetElementVisibility( DCODES_VISIBLE, m_OptDisplayDCodes->GetValue() );
 
     m_Parent->m_DisplayPadFill =  m_Parent->m_DisplayViaFill =
         DisplayOpt.DisplayViaFill;
diff --git a/gerbview/gerbview_id.h b/gerbview/gerbview_id.h
index 2d0dccc93a..d35952e436 100644
--- a/gerbview/gerbview_id.h
+++ b/gerbview/gerbview_id.h
@@ -15,11 +15,17 @@ enum gerbview_ids
 {
     ID_MAIN_MENUBAR = ID_END_LIST,
 
-    ID_TOOLBARH_PCB_SELECT_LAYER,
-    ID_PCB_DELETE_ITEM_BUTT,
-    ID_PCB_GLOBAL_DELETE,
-    ID_POPUP_PCB_DELETE_TRACKSEG,
-    ID_PCB_DISPLAY_OPTIONS_SETUP
+    ID_MENU_GERBVIEW_SHOW_HIDE_LAYERS_MANAGER_DIALOG,
+
+    ID_TOOLBARH_GERBVIEW_SELECT_LAYER,
+    ID_GERBVIEW_DELETE_ITEM_BUTT,
+    ID_GERBVIEW_GLOBAL_DELETE,
+    ID_POPUP_GERBVIEW_DELETE_TRACKSEG,
+    ID_GERBVIEW_DISPLAY_OPTIONS_SETUP,
+    ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR,
+    ID_TB_OPTIONS_SHOW_DCODES,
+
+    ID_GERBER_END_LIST
 };
 
 #endif  /* __GERBVIEW_IDS_H__  */
diff --git a/gerbview/onrightclick.cpp b/gerbview/onrightclick.cpp
index c290d71eb7..e483262e65 100644
--- a/gerbview/onrightclick.cpp
+++ b/gerbview/onrightclick.cpp
@@ -80,10 +80,6 @@ bool WinEDA_GerberFrame::OnRightClick( const wxPoint& MousePos,
     switch( DrawStruct->Type() )
     {
     case TYPE_TRACK:
-
-//			PopMenu->AppendSeparator();
-//			PopMenu->Append(ID_POPUP_PCB_EDIT_TRACK, _("Edit"));
-//			PopMenu->Append(ID_POPUP_PCB_DELETE_TRACKSEG, _("Delete"));
         break;
 
 
diff --git a/gerbview/options.cpp b/gerbview/options.cpp
index ff2c8d8f18..afccca0afa 100644
--- a/gerbview/options.cpp
+++ b/gerbview/options.cpp
@@ -16,7 +16,7 @@
 #include "gerbview.h"
 #include "protos.h"
 
-#include <wx/spinctrl.h>
+#include "gerbview_id.h"
 
 
 /** Function OnSelectOptionToolbar
@@ -25,11 +25,24 @@
 void WinEDA_GerberFrame::OnSelectOptionToolbar( wxCommandEvent& event )
 {
     int id = event.GetId();
+    bool state;
+
+    switch( id )
+    {
+        case ID_MENU_GERBVIEW_SHOW_HIDE_LAYERS_MANAGER_DIALOG:
+            state = ! m_show_layer_manager_tools;
+            id = ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR;
+            break;
+
+        default:
+            state = m_OptionsToolBar->GetToolState( id );
+            break;
+    }
 
     switch( id )
     {
     case ID_TB_OPTIONS_SHOW_GRID:
-        SetGridVisibility( m_OptionsToolBar->GetToolState( id ) );
+        SetGridVisibility( state );
         DrawPanel->Refresh( TRUE );
         break;
 
@@ -45,17 +58,17 @@ void WinEDA_GerberFrame::OnSelectOptionToolbar( wxCommandEvent& event )
 
     case ID_TB_OPTIONS_SHOW_POLAR_COORD:
         Affiche_Message( wxEmptyString );
-        DisplayOpt.DisplayPolarCood = m_OptionsToolBar->GetToolState( id );
+        DisplayOpt.DisplayPolarCood = state;
         UpdateStatusBar();
         break;
 
     case ID_TB_OPTIONS_SELECT_CURSOR:
-        m_CursorShape = m_OptionsToolBar->GetToolState( id );
+        m_CursorShape = state;
         DrawPanel->Refresh( TRUE );
         break;
 
     case ID_TB_OPTIONS_SHOW_PADS_SKETCH:
-        if( m_OptionsToolBar->GetToolState( id ) )
+        if( state )
         {
             DisplayOpt.DisplayPadFill = m_DisplayPadFill = false;
         }
@@ -67,7 +80,7 @@ void WinEDA_GerberFrame::OnSelectOptionToolbar( wxCommandEvent& event )
         break;
 
     case ID_TB_OPTIONS_SHOW_VIAS_SKETCH:
-        if( m_OptionsToolBar->GetToolState( id ) )
+        if( state )
         {
             DisplayOpt.DisplayViaFill = m_DisplayViaFill = false;
         }
@@ -79,7 +92,7 @@ void WinEDA_GerberFrame::OnSelectOptionToolbar( wxCommandEvent& event )
         break;
 
     case ID_TB_OPTIONS_SHOW_TRACKS_SKETCH:
-        if( m_OptionsToolBar->GetToolState( id ) )
+        if(state )
         {
             m_DisplayPcbTrackFill = FALSE;
             DisplayOpt.DisplayPcbTrackFill = FALSE;
@@ -93,7 +106,7 @@ void WinEDA_GerberFrame::OnSelectOptionToolbar( wxCommandEvent& event )
         break;
 
     case ID_TB_OPTIONS_SHOW_POLYGONS_SKETCH:
-        if( m_OptionsToolBar->GetToolState( id ) )      // Polygons filled asked
+        if( state )      // Polygons filled asked
             g_DisplayPolygonsModeSketch = 1;
         else
             g_DisplayPolygonsModeSketch = 0;
@@ -101,10 +114,17 @@ void WinEDA_GerberFrame::OnSelectOptionToolbar( wxCommandEvent& event )
         break;
 
     case ID_TB_OPTIONS_SHOW_DCODES:
-        DisplayOpt.DisplayPadNum = m_OptionsToolBar->GetToolState( id );
+        SetElementVisibility( DCODES_VISIBLE, state );
         DrawPanel->Refresh( TRUE );
         break;
 
+    case ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR:
+        // show/hide auxiliary Vertical layers and visibility manager toolbar
+        m_show_layer_manager_tools = state;
+        m_auimgr.GetPane( wxT( "m_LayersManagerToolBar" ) ).Show( m_show_layer_manager_tools );
+        m_auimgr.Update();
+        break;
+
     default:
         DisplayError( this,
                       wxT( "WinEDA_PcbFrame::OnSelectOptionToolbar error" ) );
diff --git a/gerbview/set_color.cpp b/gerbview/set_color.cpp.unused
similarity index 100%
rename from gerbview/set_color.cpp
rename to gerbview/set_color.cpp.unused
diff --git a/gerbview/set_color.h b/gerbview/set_color.h.unused
similarity index 100%
rename from gerbview/set_color.h
rename to gerbview/set_color.h.unused
diff --git a/gerbview/tool_gerber.cpp b/gerbview/tool_gerber.cpp
index 121e6b5816..0f3d3cebbf 100644
--- a/gerbview/tool_gerber.cpp
+++ b/gerbview/tool_gerber.cpp
@@ -73,17 +73,18 @@ void WinEDA_GerberFrame::ReCreateMenuBar( void )
 
     wxGetApp().m_fileHistory.AddFilesToMenu( filesMenu );
 
-    // Configuration:
+    // Configuration and preferences:
     wxMenu* configmenu = new wxMenu;
     ADD_MENUITEM_WITH_HELP( configmenu, ID_CONFIG_REQ, _( "&File Ext" ),
                             _( "Set files extensions" ), config_xpm );
-    ADD_MENUITEM_WITH_HELP( configmenu, ID_COLORS_SETUP, _( "&Colors" ),
-                            _( "Select colors and display for layers" ),
-                            palette_xpm );
+    ADD_MENUITEM_WITH_HELP( configmenu, ID_MENU_GERBVIEW_SHOW_HIDE_LAYERS_MANAGER_DIALOG,
+                            _( "Hide &Layers Manager" ),
+                            _( "Show/hide the layers manager toolbar" ),
+                            layers_manager_xpm );
     ADD_MENUITEM_WITH_HELP( configmenu, ID_OPTIONS_SETUP, _( "&Options" ),
                             _( "Select general options" ), preference_xpm );
 
-    ADD_MENUITEM_WITH_HELP( configmenu, ID_PCB_DISPLAY_OPTIONS_SETUP,
+    ADD_MENUITEM_WITH_HELP( configmenu, ID_GERBVIEW_DISPLAY_OPTIONS_SETUP,
                             _( "Display" ),
                             _( "Select how items are displayed" ),
                             display_options_xpm );
@@ -98,11 +99,6 @@ void WinEDA_GerberFrame::ReCreateMenuBar( void )
     configmenu->AppendSeparator();
     AddHotkeyConfigMenu( configmenu );
 
-/*  wxMenu *drill_menu = new wxMenu;
- *  postprocess_menu->Append(ID_PCB_GEN_DRILL_FILE, "Create &Drill file",
- *                  "Gen Drill (EXCELLON] file and/or Drill sheet");
- */
-
     wxMenu* miscellaneous_menu = new wxMenu;
     ADD_MENUITEM_WITH_HELP( miscellaneous_menu, ID_GERBVIEW_SHOW_LIST_DCODES,
                             _( "&List DCodes" ),
@@ -112,7 +108,7 @@ void WinEDA_GerberFrame::ReCreateMenuBar( void )
                             _( "Show source file for the current layer" ),
                             tools_xpm );
     miscellaneous_menu->AppendSeparator();
-    ADD_MENUITEM_WITH_HELP( miscellaneous_menu, ID_PCB_GLOBAL_DELETE,
+    ADD_MENUITEM_WITH_HELP( miscellaneous_menu, ID_GERBVIEW_GLOBAL_DELETE,
                             _( "&Delete Layer" ),
                             _( "Delete current layer" ), general_deletions_xpm );
 
@@ -155,10 +151,6 @@ void WinEDA_GerberFrame::ReCreateHToolbar( void )
 
     m_HToolBar = new WinEDA_Toolbar( TOOLBAR_MAIN, this, ID_H_TOOLBAR, TRUE );
 
-#if !defined(KICAD_AUIMANAGER)
-    SetToolBar( (wxToolBar*)m_HToolBar );
-#endif
-
     // Set up toolbar
     m_HToolBar->AddTool( ID_NEW_BOARD, wxEmptyString,
                           wxBitmap( new_xpm ),
@@ -168,33 +160,9 @@ void WinEDA_GerberFrame::ReCreateHToolbar( void )
                          wxBitmap( open_xpm ),
                          _( "Open existing Layer" ) );
 
-#if 0
-    m_HToolBar->AddTool( ID_SAVE_PROJECT, wxEmptyString,
-                         wxBitmap( save_button ),
-                         _( "Save" ) );
-
-    m_HToolBar->AddSeparator();
-    m_HToolBar->AddTool( ID_SHEET_SET, wxEmptyString,
-                         wxBitmap( sheetset_xpm ),
-                         _( "page settings (size, texts)" ) );
-
-#endif
 
     m_HToolBar->AddSeparator();
 
-#if 0
-    m_HToolBar->AddTool( wxID_CUT, wxEmptyString,
-                         wxBitmap( cut_button ),
-                         _( "Cut selected item" ) );
-
-    m_HToolBar->AddTool( wxID_COPY, wxEmptyString,
-                         wxBitmap( copy_button ),
-                         _( "Copy selected item" ) );
-
-    m_HToolBar->AddTool( wxID_PASTE, wxEmptyString,
-                         wxBitmap( paste_xpm ),
-                         _( "Paste" ) );
-#endif
 
     m_HToolBar->AddTool( wxID_UNDO, wxEmptyString,
                          wxBitmap( undelete_xpm ),
@@ -243,7 +211,7 @@ void WinEDA_GerberFrame::ReCreateHToolbar( void )
     }
 
     m_SelLayerBox = new WinEDAChoiceBox( m_HToolBar,
-                                         ID_TOOLBARH_PCB_SELECT_LAYER,
+                                         ID_TOOLBARH_GERBVIEW_SELECT_LAYER,
                                          wxDefaultPosition, wxSize( 150, -1 ),
                                          choices );
     m_SelLayerBox->SetSelection( GetScreen()->m_Active_Layer );
@@ -288,29 +256,8 @@ void WinEDA_GerberFrame::ReCreateVToolbar( void )
     m_VToolBar->AddTool( ID_NO_SELECT_BUTT, wxEmptyString,
                          wxBitmap( cursor_xpm ) );
     m_VToolBar->ToggleTool( ID_NO_SELECT_BUTT, TRUE );
-
-#if 0
     m_VToolBar->AddSeparator();
-    m_VToolBar->AddTool( ID_COMPONENT_BUTT, wxEmptyString,
-                         wxBitmap( component_button ),
-                         _( "Add flashes" ) );
-
-    m_VToolBar->AddTool( ID_BUS_BUTT, wxEmptyString,
-                         wxBitmap( bus_button ),
-                         _( "Add lines" ) );
-
-    m_VToolBar->AddTool( ID_JUNCTION_BUTT, wxEmptyString,
-                         wxBitmap( junction_xpm ),
-                         _( "Add layer alignment target" ) );
-
-    m_VToolBar->AddSeparator();
-    m_VToolBar->AddTool( ID_PCB_ADD_TEXT_BUTT, wxEmptyString,
-                         wxBitmap( tool_text_xpm ),
-                         _( "Add text" ) );
-
-#endif
-    m_VToolBar->AddSeparator();
-    m_VToolBar->AddTool( ID_PCB_DELETE_ITEM_BUTT, wxEmptyString,
+    m_VToolBar->AddTool( ID_GERBVIEW_DELETE_ITEM_BUTT, wxEmptyString,
                          wxBitmap( delete_body_xpm ),
                          _( "Delete items" ) );
 
@@ -369,7 +316,16 @@ void WinEDA_GerberFrame::ReCreateOptToolbar( void )
                                wxBitmap( show_dcodenumber_xpm ),
                                _( "Show dcode number" ), wxITEM_CHECK );
 
-    m_OptionsToolBar->Realize();
+    // Tools to show/hide toolbars:
+    m_OptionsToolBar->AddSeparator();
+    m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR,
+                                    wxEmptyString,
+                                    wxBitmap( layers_manager_xpm ),
+                                    _(
+                                    "Show/hide the layers manager toolbar" ),
+                                    wxITEM_CHECK );
+                                    
 
+    m_OptionsToolBar->Realize();
     SetToolbars();
 }
diff --git a/gerbview/tracepcb.cpp b/gerbview/tracepcb.cpp
index 5e44a646a7..81d489be1f 100644
--- a/gerbview/tracepcb.cpp
+++ b/gerbview/tracepcb.cpp
@@ -189,7 +189,7 @@ void WinEDA_GerberFrame::Trace_Gerber( wxDC* DC, int draw_mode, int printmasklay
 
     SetPenMinWidth( tmp );
 
-    if( DisplayOpt.DisplayPadNum )
+    if( IsElementVisible( DCODES_VISIBLE) )
         Affiche_DCodes_Pistes( DrawPanel, DC, GetBoard(), GR_COPY );
 
     GetScreen()->ClrRefreshReq();
diff --git a/gerbview/wxGerberFrame.h b/gerbview/wxGerberFrame.h
index 5b229692b2..9c95d6c7b7 100644
--- a/gerbview/wxGerberFrame.h
+++ b/gerbview/wxGerberFrame.h
@@ -7,6 +7,7 @@
 
 
 #include "id.h"
+#include "class_gerbview_layer_widget.h"
 
 
 /**
@@ -37,10 +38,18 @@ class WinEDA_GerberFrame: this is the main window used in gerbview
 
 class WinEDA_GerberFrame : public WinEDA_BasePcbFrame
 {
+    friend class PCB_LAYER_WIDGET;
+
+protected:
+    GERBER_LAYER_WIDGET* m_LayersManager;
+
 public:
     WinEDAChoiceBox* m_SelLayerBox;
     WinEDAChoiceBox* m_SelLayerTool;
 
+private:
+    bool m_show_layer_manager_tools;
+
 public:
     WinEDA_GerberFrame( wxWindow* father, const wxString& title,
                         const wxPoint& pos, const wxSize& size,
@@ -50,6 +59,64 @@ public:
 
     void         Update_config();
     void         OnCloseWindow( wxCloseEvent& Event );
+
+    /** Function IsGridVisible() , virtual
+     * @return true if the grid must be shown
+     */
+    virtual bool     IsGridVisible();
+
+    /** Function SetGridVisibility() , virtual
+     * It may be overloaded by derived classes
+     * if you want to store/retrieve the grid visiblity in configuration.
+     * @param aVisible = true if the grid must be shown
+     */
+    virtual void     SetGridVisibility(bool aVisible);
+
+    /** Function GetGridColor() , virtual
+     * @return the color of the grid
+     */
+    virtual int     GetGridColor();
+
+    /** Function SetGridColor() , virtual
+     * @param aColor = the new color of the grid
+     */
+    virtual void     SetGridColor(int aColor);
+
+    /**
+     * Function IsElementVisible
+     * tests whether a given element category is visible. Keep this as an
+     * inline function.
+     * @param aGERBER_VISIBLE is from the enum by the same name
+     * @return bool - true if the element is visible.
+     * @see enum PCB_VISIBLE
+     */
+    bool IsElementVisible( int aGERBER_VISIBLE )
+    {
+        return GetBoard()->IsElementVisible( aGERBER_VISIBLE );
+    }
+
+    /**
+     * Function SetElementVisibility
+     * changes the visibility of an element category
+     * @param aGERBER_VISIBLE is from the enum by the same name
+     * @param aNewState = The new visibility state of the element category
+     * @see enum PCB_VISIBLE
+     */
+    void SetElementVisibility( int aGERBER_VISIBLE, bool aNewState );
+
+    /**
+     * Function SetVisibleAlls
+     * Set the status of all visible element categories and layers to VISIBLE
+     */
+    void SetVisibleAlls( );
+
+    /**
+     * Function ReFillLayerWidget
+     * changes out all the layers in m_Layers and may be called upon
+     * loading a new BOARD.
+     */
+    void             ReFillLayerWidget();
+
     /**
      * Load applications settings specific to the PCBNew.
      *
diff --git a/include/HersheyCyrillic.h b/include/HersheyCyrillic.h.unused
similarity index 100%
rename from include/HersheyCyrillic.h
rename to include/HersheyCyrillic.h.unused
diff --git a/include/hershey_fonts.h b/include/hershey_fonts.h.unused
similarity index 100%
rename from include/hershey_fonts.h
rename to include/hershey_fonts.h.unused
diff --git a/include/id.h b/include/id.h
index c48f7f6741..463719572a 100644
--- a/include/id.h
+++ b/include/id.h
@@ -231,7 +231,6 @@ enum main_id
     ID_TB_OPTIONS_SHOW_TRACKS_SKETCH,
     ID_TB_OPTIONS_SHOW_MODULE_TEXT_SKETCH,
     ID_TB_OPTIONS_SHOW_MODULE_EDGE_SKETCH,
-    ID_TB_OPTIONS_SHOW_DCODES,
     ID_TB_OPTIONS_SHOW_HIGH_CONTRAST_MODE,
     ID_TB_OPTIONS_SHOW_EXTRA_VERTICAL_TOOLBAR1,
     ID_TB_OPTIONS_SHOW_POLYGONS_SKETCH,
diff --git a/internat/fr/kicad.mo b/internat/fr/kicad.mo
index 84d9babe1e3294277bbd5452f1184b497a6c6856..1b22756ad0c0d96c2a7ba09e56bd0a29775f61b6 100644
GIT binary patch
delta 63656
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

delta 63565
zcmXWkci@)O-@x&^g-WSJQ+=hqxAu^xwvft>1|mr!?i4B+ZIR~BO5ssi6(JIlj3i|x
zDJxkK@x0&n`8@x;u5+&II_GmfXIyvj^K98&Y{jl(+0RQAoSWhQJ}jEaRKztGW-{-e
zkjeCX$=Xb2#y^=%KAef&ad!9_mZn_eXeLt(+h7Ikfo1Rtq{+;!*c0!<zPJNRV9kGX
z&t)?$xj2Q2epnH&!LoRFdLZ)%9z*#hEP}6NaeNQ$;B(B6-=WX_h=uSsJQ0szIV}EP
zdcG#wep5Uylg(s$ap8;Sq8(g-Bp@>!?dV3dgDF@T??OA6gKh9ZyaRV&?tSuAfbwuO
z6IY@2w_`!P4^P55SU$_e6I>YS8)#~Fq7QzDzIZS^f(BYBU%t$-czjqIt*?kq$!T~T
zwm>t~5s$}SQ67Y5<O<B%&_pgA(Nr|@d(n<(p@A$6m!Wh07*@e&aTtDrW3fa2e7Q_L
z7ruyQY&{ylCUh-*i1xcZf4*$4q0gwONkyhWzT6_Jg|3Ot=twR@8@LLcn(=7Hrr{a5
z5S!zd=#-Qxm@m^52cYF?SQj^8WBe7J(&~k>X~eY(CF_Na!e(L1ux;2e>>PFvd!Y^Y
zi}HYQU^pbaI2@Xdi{ar_Xam=xb2lc+K4<-;@Q!e5I6b@<T?;eOOwC89>~VB4KNsaU
z(C4xra$$-;Md#{kbZ&k`U;G_?vA{8DEtEp<mqE8tWpu5yKpX57_j^Qre>9K_&~~my
z`<Z}DX*P2w7dAK>OX7lbBl9F0z*?+^o1^>_nwfvlz>hmNl}n<F_!K-DPea>l74<#Q
ze)>oKpj<us?<y{g=sL9F3Fw1Ua}RI=qKj`{)c+6dcm?|W8nokA&~3E|4g5>=xu3$r
z=yRFlQhUc>5%>RzT$q|lVLdeRHfRIA(T>hTx94TyFtoud(EvwdWxN%AZxI^EW9Za8
zi$1>|owC<3Ys2qyVFNqS7xtkK{)Pr}Bs{)wDpx|EZ-}mewrIxA#qxMzl*gmz$8G2U
z??l_3i@v|0F#F#C9;d>F*2Il>(T+dGQuqV<+<#aVixx@u8=?)J5%xg?8G;UEDB8|-
zasPI7s%J)dK@s+UE&wV_$r?1m4QLAAKpWf|^&jJ@ly{@g|BF6XxM*s)6k1;qJ^O2*
z0k@C(p=kTppeNzjEEje#4o#6|=jvW`1ar|j{~!9oV{w0Z)c;?&Chot0o)c@))V~z<
zuc6<T*W><nwB76{QL#JxBHR;x6YdYcN55V_MY-Vdsl#K@28*C0EFSfx(ZI_@xm;K=
znaxy=iYj5Xux3~XZMc5e7;UgQ8c2(%?;Z9>GkGpL6_=wwOs++z<Zg6LJ&Yy%{y)!!
zsosn(j*r7H(Y5g%I>&#Y9sd{RE0#uH0IfeJJT5E}9*<5*@hF!>13M9myZ<Y3Q61}H
zBOHLu@J=+a^=Jm(Mi<jo9EZQ6&s|wOedU&73(B9PU%4_T<jb_i9%%Va^!|(Jz<$B3
zi{f7{?BIkFDbf?s^2zApERX%M3iidZSRXgx0{k8Q{LU<yFLMcQ#wJ+1RKCn)yb$Z*
z9&~C-oR~6Q`9$`A9V%*3VFu2@Q*lC+7ol_a270u9g-*raXy64)=gZ8(lQ6f9(fT#$
zzJCK9$PV<J*cI+a2ljhu_P;-wj#6Q&OP!RyR(WW-A=+>|bZzuNpC5oWFaqsxbT|op
zem45tV)Td18Z>|p(00B+Ps#&XE*w$8lhcdEuoUHTVO_MN_ULn6(T4h>i|7Khqv2@7
zw}eyBz-FTFEeltm@2!b)b^{k~qs?dopQE48{n!%!!&ca`OukG5ydHi2VKlI{XoIhz
z8G9Gaz%KN=|1CP8!{}5NDVqYTj$|O4Ih_k5?2iU87!BZZw4n*u0jHuJzJ+%5KKkAl
z=${+*V_hs%F8wxajJDSW2V!3|(B+t0BUse^{{|N>miN)revL-{Gx|}=luwJV92!s)
ztb*;aCSHmz-s#v0S7Cen1MR4Jg*5W6cpBx)(7>l)A@~0bF5Euz(Ea%?+R-r;)4nc+
z2G%DWf{tVa`rP&CNGGDJ{Vu#1??rdbL3BWcPf3|8hq;dvX6?8=7e;ymx<99&b3YGn
z#%*YaJu9V;(|Pzm$`|5Un7?wqOhfFA{@l)@Q@9?TvJcU3!Y(wBuh2Dds51M%78eEc
zQbm2VqmF1mJ<-*D0h)p9&=F?wG@Oj}@G(3cx1${uJ2g$siRhYWgLXUu9pHGhovEj0
zQ^R*tVJaU$=jIVK!l%&H{wj9F9cW6+Rmqq8Q*9HhLwO>4G_OSeVDdhi;&0Fa9Sx5=
zEq#_xM4v00<-!i@qKmK@I^wSAi$lU;IE?ajXh5HaKZnOuO>3YcdcQiF!8Yh_=@kw}
z*UAVq6WK9b*zqJZC3E6|`Dg}~VGVp1{Xy|r+~0$hDgS`Je|)u+$x7(l*Fo#gKm!<n
z4(w7iQ{#{yI@!!aTsXJ?iyQxk4JdC%w^gC)$-3y=o{a`_KHBhwXy8|&9bSueFbUnB
zkD<?PL*M@#T?>12vj2YL!nr6|BLz|xO<gr~3YtfK$0+v>&yV_{Q67!1p$SnxHR|W0
zfh|GL{8eZ`?_vq}|1K^(P<}v9vJ+~i5!OYwPopTeL_27Qq%P9~&0Ie;Qy0elJJ7G_
zOmvs5j`9w4xBZ2_cUmp>zl)(E7dG4q9dQ@5gMMhL2BH}nj?Uo(bObZeh8Ck!uo4aU
z|IqecKo|GxQGOTw8ty~`JY0+YZ%5^7r-t&-gQOlB`GshMlhEhx3TL7X&kvVI{S)Zw
ze<sRrq5*G32k<pIwTIE?j;q7|_p4N?PI|Bvy6XF&Be)dZ@1xMnOhp@-jb`RCbZ(zV
zGx8R??{}cP<{&!aGIi5?&Cme4qq}5KmJ8>6G}_?3=)PQp-SJ5rgNM-$uB?|<_jvT^
zUW6CncI0fzG^?L4bA<AF4bo4q{teTBK1Qed0OsMZ=oDm2H%bvV#|x?GjkEDd?1mj1
zN9xhQW}@3@37UyV(T3OJ+4wp-!m>?LW@=$2%B|7*L1<>LOyz8592fq;n2NP<BR0Vw
zu`Zt4H0|Tw==K?h?v`0-$Iqe-Za@Ruf_C&ix;Xcs&mD~Wf1y+SA6E4HU#eL;$r_+3
z>4VPQXtcox&^ca=F2ZNf1Ly@b;Fr*VzD1|9Nb}TTjj&PJI_!)t-adGe`+p!8rgjv%
z25vz+ya#=7F}jK$N7ukh=!mwUi*h^G$1l+VoN#*j0n!L_13?3P0P}D?_QB6E_xrzI
zi_~#DwBz1riY`V|J_cRY_o9J5iU#y78t~ibFQre>-SR8e#9}Q|V9n9zFGt(G30*t)
zv}FI=z)~t2;WL<rUt={a*eZ2g8~whYfxdVX8rZ$)`^(V|U&N-k2hB{G*6IB!=zFcu
z0DGeY8Qz-xZ%W5e;bOT1uf$nsO8>=%Sg%c*^9#`f=`ytAE3pUO9QB*f_O_xO>_#*C
zJ=*?JbV`b}O}nCTmJ2KTp%09Y@|`${@>6K)3%5%nJ{28V8?207(bNw^JDiBFf&0+4
z^9&lmTC|;a(D(PEYbbk=3+Lo7tc}OFPrqzVM_;@h9q~Lgg^SQsufmSF3!C669a5(H
zVFSvO(5YC3X5?G6z2DJ*kL{QnP&Sjtg>%vxT_op(BheIR(E#rYmxa&9{mtl6`U%>>
zL3C~8J0qR(713?l7(METpn=_pP2B%aa$(B8LXXq}ol?ZDa0KOU=+vyjmbd|1;a_M<
zo1U36*Au%_9)}(9RrI<1om0lzq5)iiW^@wvaR1-MMQ_}W&SBLqslz6iN4Wz!vP;4-
zXiD!uM>-qLz*E==-#}A*7=5lp*K}}ILJzcRQLckoQ{I>hJLnpokA8lyL|?cMJyPeQ
zNA08GDl{`MV<+5#9q@#1>8sZlU2LP!0LP<?ZU&lx2fMNV4PY4+ek7hp=lbLD06M~d
z&;ZJGPxou0<<?<Oba7sQW^i<rC!(L<Ip{WCg=XYy?16{6XH#n0^hl9*Lg%PA8pud=
z#J8X$orZZh53A$z=m<YY13G{Pa3sow&q|psk9J%a{o&Cn%6+q3*wKY(1EbLfCZVf;
zCfe~*^tq>^{3;sQR&?Z_qPyrP^u6PHruWLC?^QzsXc6^YqMSXO3p>0dDy~ISc5Bo>
zgm$z79qIFEL$5{sHgt-1NBJ-sK!IK<fD_U7^U(SRQQsbEC!6WXg&hov8&{y27!&2&
z!<lHui_kz;qVGMAW?*Bu1I^g?==S^*J*Z0bPTR0Qy0~w~8t(taT(}6|L>t_VHn<=C
zZ2lAVmHVWI>!1O)Ku6XcJwFDbi})sVjvqjG)zj$6U&RLaK6)VK>&uk6|LbsJ3Ol0#
zT#Sz3Dzu^T=)S%$>R&|z+=@QG2hGS&=ns^?qCV3veYB28zXc_+4wlDy*adUH|F7r5
z4BUz~I2+xki_x{P9Q|eUCOU$>XuzfWr+wT29pUL{U|rGuJ{bLsUl-;1n9B&-->d!E
z|E|uDsc`ikKu28Q?DTajhixgh#3ncn+u#Z`L;KM={vBN##RjD3E1(%WA06>@tc}lO
zE@SAF{WO66Zv!RH$(K0?YhrHoV*$z!p_y0`K7poq4I02YbmW`S--Mr_fqaIJ^!unk
ziguj;-1J;=bjnW5a^WJXgr=k(+VB}@M*5(0Hv$dhI&@?c(C3~)Q@jq%<X7nPzoD5t
zinf2^c`5KJ=oHmLkM?X^E*wE8bk5F3M=&zH5$)*CaCW!^9nq6$pf5)Khgg~NmuLnu
z1Jl4tp;K5R%7c+9$!4zQ!c;6kBYHGki3YMNd<8w4x1s@mhX!^e%Ez9cIxK@`q87SM
z+n`g~3(ZVFGy{XMi2HvO7tY;yG~!!xH~30L{eq}p67{RXm(Y$jqibRp+Rh#{<==*X
zpn(<|ls-bG&;fVClJ5WBT(}4?wgPXA2kt^gFc)1LkD@7GhmPb;bWLnSGxaIj@P72U
zU*rCNXh4Mrr}oOC?bX8E@BemO<Q5w`q7i6A6R;LeLFeuntcl;CU%%o*(vR0>XonY|
zb3Xz-FQ%dGJ{t9}pi}rIy8Zqc!v3$%MWqYUfzk^-a)+a5_H<l@?_xikcwxTGnfL+v
z1ES1DspHCMM(Us$X&U8ralb2$qW)|gi?88X*y7@BitzS})9?L7=yrM+ZRl5Y3XY;3
z6u%^OSOyK?G<4C{!J*g)2jM(C9S@-ysdZ@@Sa)nl`6_hE7iPI|H9s4^fi);^kMdD8
zRmCn#Ho!c}{m_Q5L#Jd`l-HqaVHdic51<3c3{93qJFbE)G24m@kJRhYRr(D2;>+k_
z+>Wk^Z_xwg2%4D^m#0NkK5T&Qf-}($&x-mXXh5UUZI?yYz-*+SZ02b$?06IU;)m%*
zW-q#k{tnAtkxss5XbOj+fzHRl_%!-{(P62>ifD(m(Sfu>pYMyV{$Y56`+q`I+>L&}
zmtr$~CF=h`=eX$bG{TbT+?NgW!kS^jutnG*>=yP#0~m<8fBt{97gXGcW@0kBoo1kG
z;UP4&ucIT`g6`+f&_I4b1N;qL6GzZBQ+`Bxz76_*Z*;29LFaxJW=+vMQSl`jS^1GE
zpa$q%w?Z2}6YY2?IyGbB{tPtr4~8qEetozJ9pJVo??TtqHzV2qcJL<^{)r|3m8pXY
zXvDSgF>Hh`qMcFyExH(gLRWvmt5PQFp+|5tG=r_s0d+wG9E@i8DzxA6SF!(naB|$Z
z4;|q{=nE^bA+ASHvLDfN;Ml8EKqb)gq7wRx=uC7fE<yvj93A;ctc_#Qj+aFJ6Im`?
zbkCyu@*}k4AJ7pVMNhsHN2Ls1j;8)r^!Wu*zZwnj9dtnZ(2jpWGjKHSm%1kX`mGyg
z`*Pv7xE?)-rlSokKr`_eR>$Yieft@@i2g#SsQI<&FC^Py9_35Xkxxe7pNc+rKbo0E
zXkZT`Yk>XFg&n?z&dt_vS9&0`A5Gcc=(nNJ==43WiN04Cz25@;U4I6;E3Sz8QD{bQ
z45y)s{y{v&{r?mfPQg3a2){=c<0;pr%rr+c&<pM0dUQnd(WzLBcCa2@1Mi~Sc0W2L
zCB~$wtc^a`0e!z8o=pFlfm}H9YtYChpd*@rKKLNI@0X&xU^V*OtLW5iNB8>==$a^g
zeY#&gY!&uK2YM;`BlkAU+VNs8Oxa3w4Xi=yUq>5!A05#Fbl;X7o9<UdGt~$UxCc7-
z1EPF>co{lXSEKEZM+Y`-Ec@S-%!rDm@xbHgwt4|=@N;zJU!y5Mgzk>wH>5>Z744ui
z+CjhYlDIz_&D1Qcj?2;Kx81=0cYExPibH5>kD?<gIWFC=fM%#6x(iyMnHUfb3vUYV
zK|5T6X6SizZEQma@_qPMmJ3sT?2YM0X><ft(E7&cHfkUCMgzG3&Cum&pwlrw&P5NJ
z`8WbMqUT4w@%b{BVirBh_n?b8oByVi!s=L`imuogZ@_lA9NXjmDA&9>{jJt8w0;@-
zN3=cYxsW#@{T<K+=o~LXr}z<cEj@?simk{%vzh(zz@KQ!3g43ckeP?R*cVOVC1^%&
z!lpO{UCry!HL?rs@JqCVZ^L}IrnOQ5&1@rd^>@Sy?*EIpu%nyN)ZC4Bv=UAIi|Cwf
zMn~{5x(0qiNAABvW+2_LE)GLax;f}nJs2(vp9ohe{b$xj#cSvY-VWanKMB7G_k}-(
zzlDFJ9p|5z*2HmWd!^73m%}_fJ?aNy*00$`TsYF<=wcd&Mt&RGz%+EV&p@C1ADWR>
zXi8r}+u4Rr#ZL6V`W#(+KVw5Y<F>Tu#-RP&e;fPX4wh131CPgzXV5ucherMp*1=z}
z7FL>+%H7bD?|O6_&x`U3^tpG@Rel)lr^4ivp(^N<*PI-wYZ*5>pn-Hj4~RbKc`!Kc
zUxPL@7R}HE^!eMvd%}6);_&hCnQ(2mF&h`}gxk@EKacXh@L>37nD6$~agp%Euwqy(
ztRJ3^w%Z}f-NJ0YxEK@<Tozs#jtOrLCx_F~49!M&!(#OOScg^dyQn|mj`S0)4pygr
z0OocZlF4l5?sSovjW+loy8RwSBVHZ#>(IsZCc1du!S47mIwg5`rbSr;ZKoOfen+f>
z-O)8Q7TqQH=I*oq=5XO0K7>B_2)dZwM~~QjcncmsC9U?m(2vlA=&pDkJ-FVE`(L5E
z<WQ9P*XncS5@BU@P1VPO?*B8mFo3S;$orxJT!8*mx(<!_7IdVOqkI>dks0XwbJ1<L
z2yN&8&`iCAru<FxtN96<p`S4K=l>&Iyh=sUY56iQ;k)QbIQ_2F;0pAGm(Ucx73Do~
z|0gs9ndvD*WzgqppdEHVPsnr8fsI82zH2)B-&D<xie+e|E6@(tqa)soX5zi5{}dhh
zKJ13yqX$ycyHfyXU`xvVu^!%yV{k3nUj2JgV9oAf|C_S2sIbEe&^aA}1~LIn<vme;
z5RH5Vn%Xt!3HUM^;8yg#o#=?a!va|N-gLhhwxe7Y?eDxS7tZZv=%N~dX5>zE_0B~D
zT!?n?G}`f6G|<<hyaP@3S5bc$8&EECUwXe4+F?)hL>(CA><wHvf=Or!XQ3S~K|5H5
zj_8f3{}|24e)MbjJ2u5)Gt&M)1MPS;n(C!!z>lK?ScSg-60*j!nYXzxfbY=M9zkCy
zFf)~lp&guz)}Mv`lsX3;@wI42cSij^==OR%?ypBX`~dCe3v{3dbF%-Aa^b2hIxBrN
z^3V+Q2#18D&<-b}yJH^O@N-eW5uL)FXaIkp?G%}vo~wv<Tno+Y>3AIdXL@kqDm@!(
z;BDyYUXG^zDRkr;&=kIfu91(>0KSg$&*&Wghdy6)PP%^*`d$_Eemyj>mY8)8&x!{w
z3rC?Hk4GE23!R!dQC^6S<T142XTw*}4z{50?TGrX(13qH7xmw9zrfu1^MA3qDP?8Q
z7wd%0&=IyrJM4)DHYmzhVnfQ~(f$5JxEC8yt~4*T*B8A%2u=MQbQe4}kNt0hZ&2Z{
z*N?F+o_K%ymD>-kzZ+ZQTj>2l^V1Y{Lg&02x{WW7@|Ea7rlKRBg`NWsM*Sjm%{`vw
z!iZi%N4gD7^=D{m_n{*{6y^WWR2F$4t>$v*^R>|D8)Fk}8}*~n0p5hp`E<0Oh3Fc~
zKEXv*E}q8f_!0WY?7ySF(u3(IR44RnI1KIR9<-tP=m;M{x8ajfUV{d@KFV97{2@A^
zJ;*mAoB5dwBP_fiWuiP<u7^h44*fmfH|~!_JH7?&_%3uLv(W8%KlZ^V(J48KPDO!-
zQb5JRikSQNf9r7Jh)zfM?HTBloQnoB0&Vyv^tl;mgA34+Jc2cFHTvAHxPJ)UU4KXU
z#D%H7Q_w%E)yJal|3+NcU|Y1~u4qSt&;TwEZ;1LS=r)^$rhE}Pb&p^td<UJv5{ptm
zO|TB-?&zu?i=KqDG3$;0ap6ebLsR}4I+BBE>I*GS0aZqSPS-}C>y18lG3Mb7=<k60
zu@*iR<xkK>dJuj7Pju>vFJb>Xl9QLDkyJtFtQHz!1N6sbdo&}1(Yd|?YvYw@2IisL
za3MO7wP;2+qZ$1G4fvb5e;94Q(9&$0^OKgQ{a6dH<VHI*kSEXv{}1ixWi*9vpi}cT
zF2di?{XBbF>hN)Nj@O~TgkDB7up|5uT{8!=T=-zg|D`|4ltx!~bIij|Xahsh4sJnT
zoP}=NwP-+Jpi^}e8)BJ<Q;NHx8R&~<<TA9KtI>>QCvjnii_w&<L`S?n>fc7^YzI2x
zAJMPhzvy$79!cA(F4}Nw^z+;oJuj|A7w1fLATOYc^L^xe$Yy@y!T<_9nx>*eSQU-D
z1v;{`(8YCmH~|f8Hae2!Xa}3npI%=?`Cs(8GLNPA>!FM9Ow9f7e|vJ_+@6DWI0PN(
zHR$4;h&FIH+R-vJ;0@>+c?W&}12ls>(GCuv=gFb4(Bo+lmP4PfgSr3xPh&1z-5t@@
z-7_BOhc23dXhWA^UmT0Aa1%PG`Ie`Si=xj}Km%`p2GSb+_;iZ;uHo63wd0Gpa6}`~
zIUR?d-FKiJ%!&Jp&^ca#cJK=N+&gi97uw$bxc@8q{(op@3qO(isTkIJg8gr*n^WO~
zUBiB8CI(0OVzi@?Xb0obk=~9@!F)8Oi_n2Qf<Ctj9nec?z+2+}j&QGk7vl?uqT=7M
z=!*10*|2KZFl>W%&<%b6Y_y|`(F1D~I)J;-DYy^2;QeSIpQ8i+F3Uw7F8)SGRAXh#
z89K5~Xnl7yLl@v(I1Gp3FKB~<o=j`y3iMpK1`Tiyx@#6k`8jkdUPS}QeiRkopeg<n
z9nrB*r9eufi?AYkzZ%xSrszH&f;Kn~`{P~cV*3ouz*lG>`_KU#Lfij4nav#cbXvV9
zp`XiY=!w=AZFn#`f>G%9y8{hmS=@gHJs)1j7Wg^ZL7D$cBdm)4bZdt7aWoqE5<G_U
zC$lbh!9RdNSNB`!KK>j{?N8wmwBci(Nr9b+K35&BZ;p<%6Z&3nbi{+AerVKRgC0~j
zWA2~-&*5Sy6_18RSLMr`OZi&#Z@1n==js5Op(E&GDz!TOdxPhrnR*-zWF4B3%~9Ti
z267M$@GmsO1=q0uJ<F?bVQSAnkIswG`diUR7ojPCKHP+!h}+S{`8}Gs|Kfh>XVV#f
z8oCC$U@bfg4P-2uq3pBle;3#EsF)KEED4`Lx7C{PwQw8Sz~|@`e22Dk1YH9Ko=bnC
zYJ;wwk?8Zcq3zv+zPI2x_P<}F6;$}kW-B(wU(kqaJ)iEMjsAeR0Ug0qbf3>c8+;1g
z=j+4Q(F5rnG_ViD-RS$@U|l?z<-$3s_(Dom4YZ-UVN<k$HfV>P(dREgJH84X*-hx&
z-x<!1`Xy0b8NP@Hun8Sdb{iL_Xb(2Uzt8~cznBi7=IDXa1{>ieXalp+ju)a0Ek^@d
zho<(ea3>n@0W`qh(C6~4&DHboe{<pLEsrj;dT0Y}&<=V=c_7-raJ0d(Xy6mk_wPp+
z>l5Kdw4>daTO;8SbnzBhr|kbcF6^i|cEU4qH%KMcqWloL{WhTi?!cP356#R8>r((t
z!>;IagU~r1fd)Je4P+@A@H3eE_y1n!!a4pN-7epvFZ_Ux;BZ*zrBr_+8gM0ak<~`u
zZ-j2cR_K)ULAUcI==Pq7j(j1S$<>&3)xW}pBj1aivF6LEp;6&vG}ZIbz@A2r(6#76
zv>hFB#SLiyb<hqPqHCpX)OSS#=!w36=?3<{Be;bMM|wMYa?L^`Ux|)%3pxcm&<yPl
ze++*?J35S>Z24YEfmRM{qnT-j9#}ol055zco96IJDhy->I!E_o9zKR{yUl3BdvQ4C
ze>GpG7hZ`5_+t15+Rpn}8$UtUN`cqX;;f4v>7CKf`>-q*rtWHV<P*@y=Ak3{ANt^v
zXzEv^8F(4(Xd^oJZ-*bE@9)MuJP_p~8`H?kp#9WApUZaU!V&ZjFGN#4GRilHQ^MKd
z;&4UyJet~#=<42q4&Xa<G5&@Q;F#Cb8YqdJGuccHE(&m?0s7Htf{yTPbkPk&U%UpL
znw!vo??UHv9=eEEMEO1RxxG>T4Q;3J8_7I$@tuyj|NVb|F6{U+G}6iF;+u=k{Tg&c
z+t8GKjXw7?x|;KEN^@Km-DVxp&-8_8;5T3%-iEfb46EU@cpB$VW)~NpT>qgBlzlT+
zEBbNjfku2aI`XOLBASD>@wq5}g^skq<`j5&G{ENQRP+qbMUVK4G57EP4v!nxp^Irk
zJa9*NPdGPRh&K2LnvtiYydE9MCNzUzpi}WLI)LJDr9TVSLKk)4x7h!t@?0uhbi>hx
z$D?atG8*YrbeGIPx8Y(m(3dcGG^45Bfz5FbdY+VfJKe8=2HFDcuQM9ZdH$nT=j1vn
zeBlnXquKG`GBl-Y(5cyiKEEGbe1Bseme`V}q!Bitd^YCR5>}-=7tPFCw7n0}Df}+W
zMJ+Cle<xpNF*e5*_%WKo6W&dWvpzPV+#79Z5;}qf=o~+XKK~B3!|&0KYHv+{R_us*
zlqaBzb0H4F?6dJesrS;qTG<O*b7K}7`BrR%zoH|nwk>_t&cS+=Ct(fzKXkEvg6^ij
z(ScQXKTTO@bS+#KjzOk6o0*(0GWTE|9=Jc;h<11|to%VL_dySuEcV9P*ai2XQ&Q{0
zw8+|_nYkS8_-1qpr{lHwI9B!hU+$xnvUccpx&_<#0Gf$!&<;=Co>Jco>r(EGuHu`~
zHFH}y16@mt(M9(p8o=5pza95?sQdpLE}W}h(Ge8+IK5aotc!Nk5<NKDqba@|UG;Z_
zGtk|z0DW#H+U^JFt~wC@iheteV%BX|a7XI6Fy>LNgcoCbbek<f51!@dh@M4P_iN!t
z=m__r9sPj@!haYn_gqOdBd4M7H$tCp_X+#o8@=PfA!x*-;(<HR#Wxpw;G39-rFNza
zG(o>+XQQk7YILgZKm&XL-6bo~sojKrD-NNH`=n3V|E}IvpQam^qG$e{XoJhJCay(S
z^Vev~i|tAyEsJ(k1s!oyG@#Dt2rojX^cu{=+tC3&f^OsWSuR}l+rxajQ-k%;2HT?t
zPT%k{wBZ}jhVDcgT8MW1T$Hz=?;k*S!4WhwB|b~Lpek0UobAYkFAm4t!GexxL6o0F
zGqMRy-5#{#V?Iysoq{)0J{?WzYP=9X!5gjrBCVbOLo>G?4eZTSpUr&2g&poix6vO_
zF7#!ZyE141jnPc>Mi=8H=;FN^UCq~_--_|!ZQ-<VX7~X5{L-B4zsIBE>F~MmrSNsM
z;Vo$7A4dINbX$IpuKGh!{u>Q2-&e6#!m{Z5r=j<oV(!oX9k_5#`=cYg6ixA1bmVuV
zC)eZQ8)!p&&^i4TU989MNzYYAzmjdx`a$To;W~7xXGVDiX1(z?7mn}%8o(jE4-0;s
z_UjzXr3^g}9!E#~47z>Sg>Rt&?LY(g9-X4Xd(->H!;`Qj^%eKB|9#+GDoo|zc;FKB
zV=^2a>2&nqcnE!QIl36XMxQ(Oo0QVp=o)H{uI|oQ0Ixy^a4p*2ICRZT{U)16@E{e=
z$>VWj4Z7bqp$-0w2Kpa5@`C$PK*iDbDxj;o2AaXfVP~|Xf#?*EM4!JYyfYgYv%*E_
zoIim!v<VGhCz_%CQU6nz@7px8(%78)6~g{_KILgx2fs$Y2`B7NzcZTQY|7c~TsT)F
z4y3Q(6s$^l6B@wxXaoOZU#$II`ggi+#xp6uiyg4k_sO%d3FSH188_ouSp0`{(hfow
z^CYC-Y-TYR&dE#YNVlRX{tTV#Z*df!`eVM#1e}2*u-H#&Rgc5lDbK@?vBE*7E+2n|
zgG(t_JVfd#zl^s~-ueq`f^yGa`8Oh2f0@3&<;$E$#p>VFU#S*7oKiCeJ;{#!llyoD
zF2R@4Kri|${j=av*qZW6Y>fNSIj(Rdt*shpxfwdJj^SB&jNkurxbWy55{^aB?0eBE
zco?1g=h4;t657zK=q}iTZp(w{cK#Fdu*~17+ydPV=b`Q1inccgbN~L|gIu`({}-+Z
zSBLAujp3H?Lv&m2LIc_#<zLV#{SRIJCH_ensDgeC>!TU$^bh&BqJLBjLnFKa-A;F-
z+va|>!N;Qf0=j57qk->>`#+(n{tpeP=+Wd!Xof1I2Ublq<IRt<|4msRDoo`l^rzJ<
zG{RNrzJC>2BAHF-^PAC;eTxSC7n<S|{!QiP=n>u%?dUS}hsXqUjogp6^LCbt7F--a
zw@sD*(snx+4P+8F!)4eMKS3KT#y>SQfa++u1)8aTXh)Y|HJpHEWEq;lr_hXVKr@v6
zhznEmIXcpB(T0Br|3#;wM80&t0$R>P7f~Iw<3?!19nmQ{7tQE}Xn>P2_XifV{pXN_
zE}PlRg{yooIyZ;WhzsS<pUXf=EJwK!djBjm<>zC5yawywb!bW#q0ha92DSzLDD6Vu
zJBS`Yg$m^7w<Y_p3KvE`08hse*b$eatNZKlXEczbI1tMeOe4A$+fts6eef+Dg5?V3
z&;0|38*mKeN6@)1cTDQ1C+7b9KeuyX>gS?!@*ukS9`*rT9lnlcYJ0dJP3_-kV5N^u
z@7G5&&;tGHbwQ`9SCr32pC5$T+FV>8Hx`GFq76KW&gD9Ejch~@pm)%Qx1j;<Ks(qU
z{uKTe9tktYrRR<bk3TMdHrGKZDja!vbk3@xsc(v|g^p3~g+4b3oztOcrf!V;Q_#TX
zpc!2d^-Hh@<tNdMZAX6@{d8P5jqsSlX;l|TM_dja@u_IaYe#)sbX#`D26%Zm7aLK2
z13d>0qXVf_B(1IbXofn4-O={@WVvvJ1JQ_w#*Go^6kLY}FcCd~W}^+wMMu6Md?N0@
z80B^7b8km^8#;Ag;N|!=`g<YUy=ea2AB`qre=1gB5BwLqVE5zGRLnpFT!`-9WoTe)
z(5ZM6bKe4VK>N{M^&9$J;bJNE716+&C9|2<TsUVP!*1vS(+AzpgU~4%kEZN4bPe2v
zF1|T&{}D8RC(-BDq8Z$X2J}99Abp1Rm#?_bvHy?b!V#53M|c|6#hPeG=b)*+2yJK-
zI`=oBbNvMN!uQeVDxZ)BP#@i0Ezt}NMHk;Vtb;Q!_viohTo}OHXa~E|4D65cuV~8t
zi~2$((#T4nnW=;ZUL74-9W(=t(UYz<+VQ}+KN@ZSM$G;Be=-*yjZ@J@u?P)hJKFG9
z=*ae=Dg7M{s6fed1Q$lXcE?BgG&D2S(Y4VF4eSy$;NfVy*OrX^Kb8suxCM=LHu@`g
zCECztbbB4dns{odWDhiuG1wT#qf@pLYv6Neho6W0&_I4d1NglZ``^fqP~m}4^2GeP
zztyUR&e?frU?b6#PDE2T4ee+S+TbEIkVnuCS44R=`reD^_InMN@zvUdZs!r%lk?~P
z7VApvL&aLO!y;u;0C{L8nxL8KgHFwGJQuIWi*O4XaGkR0qtp(4?|eKJ$D(WDe$2x)
zXkgjxTsV@?(Yf7^cJK%KdCgxgjj#|p!sF3~N}(MzK%YMgtKxZRdlS&i+=;e(5Bl5!
zbWJ>lw4cqa<H8qSMmyMyopCG9!qVl_zJ3f%;TrUZ#0ydXAv%{|q5*w_d6=(4I)ba9
znQ4r^-x=L)-Lbg)e=rx$*+?`c*P(NKGaA^PXooYReg!(B=g?j8I(iU&h<+RPqU{u{
zm<Ch~?f69Wy)tOP)x1ytnc7^~Ktr^Fj(8hhf)nv;bSj3Pk{pHxHWEGYuE%_M8#<85
z*chi{eS8`HwfrO6e$h&4fORnISE@M|rl<?L8_vfbcrCWVb$AB;f$gwm<@~un@!W_F
zDX+m6_zfCprMxuaQ^RUut*~C$D3ASbYMMnw%dl<OG3<;s+&#)Y!@l8wa9}tjyf_?+
zzCRqDnk%DxeO@-*7#9^cg|~zg!^vo>??kufY;+YbN2l&3^e5F;bnWa%JNgxU?jLl@
zN}QUWFOO!vPL>N7Lu>Sf4(LAbjxLr<(K)>qZQw?<gGuOA-GeT|htc;}qo3XN=yUI*
zf$c`8_z$$>!d23r53=RBu%Y(o{yZ0b@lv#*tI+@^VIJOvHnalm@MScxH_^<zALVb+
zzz(4U$()wXgW~A(Cn1^RzyHmJ9W+D(Xo05sO!PeHhyD&Y4^8zAXn<3~S?EEt5bfw;
zwBuE1yRV|}y@h7tQ#63zF!#Uz|Cb9FVezWTQs~G|MjNV({vN0w^@GulhN2x@7v6*h
zJ}K_shrYiM4PYhO?n~&J*re|NPq{F4KcOd6!D{J;!^!9i9r0A`f!@Cg&A_c_#-^cx
z%*9-X=p3&^kLvYN-ih{e0G;yxFt`6tuAVxqjy}*2jc^#+(9LKd)6tR7K?7M9u0d0}
zDazZzJ?Qhlp#kTwk=iMSmQSw1{&)4CN<}rSj;63@Ja|6Z@TF)VSD{Do1Z;x$qt9<a
z*UBg8N%%P$@Rw*t4#fRG(ZK&jr@TZ>_P;Nbu9+G*8NE?4%tP;24XdL8*Nk#Kw7~}G
z0n-tE|I8?N3(pFBhyB6<*|<0lP5q!KUmK1=8@vG>;Z0FL5e;l|l<x?qhSS4)!<pfn
z@P4%2?1OQ!2yJi~8py*@zczdsP33FoVtXGQ`A&37zDM6XrdC>9711eZf=*!@^t~=o
z?w#&u`H#z{jxPx>LsNNql!u2S!>htk=yTUbc?`N1#-iJ868aUKjsCHI6L!FV(Sxmh
zZ8O0B8^A?PDhA?sybW98-`ED5)k$85%_u*O?eQCIiq-0-ujC*!Lvzu^`Y@W}HE5tO
zM0p*Wi48c^{r@Hx!?A9?)WKZbMtKXKi4WD!pSc>pLIdj4Ab;j@yc_)-H*1(ibUoVe
zG^~#^(G0wTX5d$J<aHY5&;8|g2h3KbVk8$Hq4%L@`#fBX%h5UR-Z<3{M$4nnjwYfb
zo{F9q_oE|Ufd;TH%HN?sK#ri#mu-^DHJY&hJs>($;fZuMdZLX)1GxeHSw0Q@1}sH?
z<Gq4T*>1GMLQT_qC!rmkioV|-4Xi)<RlNdF#Vk6IrA^uYKDe3+Q?m(;a2ML~cW8k5
zo25ln0&^Xp_3hE;d!g+NK^NgQXa**r9j!n!{Sx-YJ=h1EWSgg-Qj^hbv;ob)r|8J`
zg@2$89dmm66H!^LOu0SQ#*45n-h~GEJQ~pUa6kIo-)Kgvw@80z&9>sg2d9P$&=Ea_
zHSi^Lm4AayQTdiBkVbed<xXfO)}Z%aLo=`wJrDLp`5$y(g<GYg`y@QW?|*kLY~XHe
zgb$)4c?av@U)Tw&wa%aW-}{b0GqoC>%dJ=)e?}K&nKtR9tc=|#SHliC3OyH|#*X+3
zmURE;Z=2@6bXY5F7oLrt`NMH2UXA{c_yAoaKcFKo*e-o;E1&_lKo{KvG!t{NH?F|x
zcm#8Q{=c(*Ix6Sj+uT@)=i%@U>0o&U&!+r0IyHSdrtNwm`c1eTT`O0jbAK~>P(2Xk
z_t4MnkLXnYi3VKs4EDbbR^h@CHo|(?9Bp7IHpd6iGyHvQg}bmbp4=%`J(}8U&=YSW
zx(05K`!n%4$`7N@J&9)U<xcE>NA?L7uI9RD=I3v&`TnCv@Kfj-*pH^Nbmx@fdT8o<
zpd-5!9l+J-+PDtw@E&y6%tJ@~I64&@&;f1l%>KWXi!b7V3%jHS#-bh0Kp$L=Hn18U
z!Q1Gf-4z}{138RlG=JChmrW(nj5I^rX^Fny30>p^vRt@oZ$ncy4Nt>)Xryb=5o|+8
zya#RINLaL6s;`Ldo~Gzgeg*p6)z}_y4PQnV=f7e0jP5CQcZSo^5zIgr*J3n)N6_=&
zd9<T1&<;xWNbgrcGg2dLhGwu6+TIX!Kv$xfx(zuG_}~9?VQS{19W6^YGHcKVUqLgo
zHOjlt1`ePn*>7lI$DNf9n1*OOZO}#B8(qY=qibXxn(<e1W%mDOF6`*txUma~Eb}#b
zupC53aB|P|Ts3rxnxL6D4{PHzbcAcr0N+Lf-yY>X=%V})T}yvpZvPkSm9|5Luo=3a
z`=E>GBDA5)!fVlnZi(`pSd;Q>tcL5+5$=im-=V)74r4uR+B@C96tgatkx?-kZFoF7
zC6mzmccT%{MjL(t-M_2QBlsP3E&POL;6L;;eNvzFUL*AD+6~R@1!x9G^kM&7aSs)~
z@Blie&!P>zg-*>E=<5Fwo$Eq<(@9qkJ<-lW1H3RCi~e4?8_nd3a2<A|yajK-(*4-~
zE|%&2Qfd~WABQbC28;F2pP7=6)rxho@PPdMqccv(b5h5Dpd&AQZu+TJ9{pPOLI*Gj
zN8@~a8jGBlKle|=*P@v{COa@iUJR|Mif)@a=*Z7R52*fV3g1Ulz7MP8ap$M^8=#r!
zf}ViqV{g13JxMpB`~E04z>b5`?~d$fE~--TB--Ey=-mH>PECQq=^Qu#9qCEvVyqtJ
zCTQSiqEm1d`iIU-u?l9xWmt>y8|WH3h^(P(<}ep7x{^cE{w$C6DOW~Ub8mD+*Q49;
zJ~T6n!j<9La5K7AK1QeDCp0q!FG!X_w`Xn4{rmsTxUk`~(2)-chhk&OqtHdS6uaVE
z=txRlm@?KHUCozbPrMWD@WXH)x?BDVPrN7vSP%0!e=?o9Ftt~p4~|0{n2C=3VRUzF
zKo{38G=LHpr{`LsYo-^vd#*s+y9t}%boBWR=s*sjYpCQU?EmImG~vQjjYLN>5pCdM
zY=+N<-=nEJ_0kkrUG%-KXn+@>yJ<W+Mbpu>@&Jy&N6`V4xGc5X`7-vuXY$QdxF{x~
zBbbVP@S&*x0o}*Hg$0ME07|2QHbB=*2Xw^Og#SaQb_Y6@`|x@!cX|5Dta~rdrc^vl
zg(G`EZtO;<;waj2nJZEXYhYo@{m?)Mqf>MZI?}t)U2{L0$^YS5_$FSCCk{(fH69)C
ztSlEc@F3R4XVDkFM8Dg0ho`?<y()YJ9m(ftic5}2i>Wf&&gtm3>yOUySagc+M}HeW
zi9WXl-KN=nT)21&j7$wxL>FIE^o6cyCN9Uym<<=BU%w4eK7<`8m%K8~ZGUu1reZ66
z9zDQ*!Et!(Rk_S&Gg&UWQ*j?U@}21Zt#)<#ZnwpADPNDSi7n{!6-LEBf<*(Hi>CBh
z9E307`B?Uvv<9w2r|32`L-*o|{{DX^cfrYo&h<|8Bs_qAL`qznM%DoR%wCH=_W;`A
za`Xgz2Az@@(2Q+DQ~V{?!lPIhYm80@-T=(~|Nppv3m4xQw1HdEReLu&;stm%evi&+
z`|Hy4m!NZb75d&3G@!ZYc3g;N@<lYD_t7c+9&M-a81}yp*5N|CqH}Z^I>H;#7pJ0Y
zVi~$to<%dW6`k83(SU1SpFj6MN<AIjC5zGe<><&?Km+~;-6ff^?0@Iv__66DR1Vz*
z?a&d8Ksy|V?(-SwYF>(NzvrWV3;Nvd@ON~Mi{FsmYZRV=u9dUV=f~U-`~Pk#9Pv}=
z3HCDjHQR=!>{~Pgg~p}l%AyU_L`T>W9Y|j^&<oIZMn!odn(~=wyQ|Un-p+F2NOz)h
z^(`96f9RB)aAUe(2R%?)qAy;6c5qdAYd9nBFGJgX25oNxI<@b`{k?HN`)gF>8=oF5
zfxeiBj=Vm)26{&Q73l7`9$l0RumK*#I#~Ip<XPxQ$Dx_K7aibIY>Y1=8O&yWNEewx
zH>VL*LL+X7j<^Hb@K7`(GtdB5q9ghc{dKz^>tnSEY3>K0?~g+l+X8fo9z)w%gI(PJ
z+qiI1mANH-6zZWb^hQ_lpm1o^k3v6MH${CGn^K+@z8v+xq8T`fwpaSr)LtI?d~Iw*
z|NI9C({Hnx=%U(=cKj2%%Kwb|<5{eEl&i&}?Sf9taCBQu3Kyc=^98iM9Z~)nor)7C
zroT6=f?0oJUBX3IoPs{^9=c8Tpi`0mwsbU?LihWH=m;Lb=C~DIl!Ydx`qF5--SG;%
z25s+SEP#KY?H-xL{`aED<n$x6JX+2}w^2hh)g95f?t)I$V6>sp=wcm<J~tW7+*CB6
zS?GI9(Yb#P4P+zwoAc|*q{NFKsAz$|quZ+f?dhLvcEGBXN23kTLs#(<^tl(%qx)@i
zuD4^ZJv8;dqx-)29cfA$q5<_mGd(oRg$<1hr=gK9Ku@s8(KWCI{rG%=c68jGY3?gy
zOUf<L4#!|ayc_)%yo3h$1{&BlG&4KH?0zon=rG!F`6(%YM(Bv!p#gM5BOiiBJ{p~Z
z+tJlM6<v&T(5ZV0eSZV`{9EW$?T-5IQa%6ukGOH{)Rc*n&_HTnE&%lN+6`SBeWLy%
zwBr%j4#%RITZ0DtD!MDSqwW11_m7>H0xFHU-~TnZu%WhSin^mI>yK`u3(%BJK%bkA
zc62`)(8K7WT!UudZS>^ai+Py;uJk+LH1xd=*b#eSefR%;TsUVhV*@;h&S~Z8DUkEg
z`$MrF&c!_3h~02+)YrQ^{m>YUov6P9T{CZ?@Bf15<7xNg&-{wFVAcRe-<!_zL+GOE
zd|&Fg7diz4(F|OQW?(d$;#+VU&cw&C!i@BX&W-4*FEum$A+ssgp?ocx*@w`nd2D8U
z|6ilRhTlV{U>7>)dvP9qk5h5dtn@FX6`h?9nEq(SZp0?|IC{44Mi<?m=yokSC)J;Z
zF3$Godwu7y|4q?EDm<~4qr2g~c;FX2jdGQ_X>oQzI~a)0{q<;rw@3Y4Y)tu?a4$ON
zW#*;#s-kP90~*-5SuR{OqtMh(MN>NiP0_<>MmC@$+KfKG3k~3RbXyj>KLuVMeXlJV
z*g*8X5oq8O(68rwtcBSPT(sxn05-*1^V90R5U-^?0e$gD^q?yIK#IHqx;vU+9`;91
z$}#A3^TQ{wHs$r$48KKx6`%58?#Rz(T5;iAcR(}HHS80f7hV(&3$F>sg;})WDd@-_
zMi=k1=;GaguCc9HA3w$1fB&QKf;6HMXsT+WfwV?b-w9nKJ<(M>7Clgwq8+?|XX0z<
z50PUZO83viev}8JNAr_t`<u`}c48H`-#1)1=f^Ef+omGAXxgD8It!iC;pq06j5csD
zI`<Ev&p(Y$$$GTCUFcjNL>Jx3i_%xNF1}5<G3NgNe;wt*DJZo#&0RTcOSul3i4kZf
zMx%@FCUhisp_y11^=r^G{&jQ>e1JZ;7Y*PrIyJ?Xqywqa6866bMIS2sevd{YzX4sH
zccI&H4Hm*3Xa}F6bNW5HZI7S>$Xl8+Qv=<$P0-zP9@_C}G>}O+80Rm|rqupMg@K%~
zEUorN=!?CuG7dvCFa^!X40L4k(G09W*T!pD7k@(ccZL6@j5WdBT0*C;Cwi0*%yQwJ
z-H9FX5%j@tu?GH(uGX>-rwnvON8Srvd_&NYUx7A!HM%Coqf>P+n$bn!s<^)iZ6~{n
zi^g1hhknmbc_cM-D%wFkbYGv2F1{gge;C^Em~aZZNEe{bKZovyUDz4RKAO&n3(>D*
z7905ce<2sn;k)QaennG$1RY8F$I=T8&^6I3%Hz-g=Aw&jIhwh3=p4U}?ut*N{4F|w
zqi8?JJ?<2-|4!h-hH8YZ(UJ5)*ThJ48{UoX<K^LN=*hSXeeN(iW#yKqjys|m?2QIE
zFdT`wqZn(u|L1dI!yC~#+l_hn13HpoPo#)XL+7}5*c@&64D`7HXa+{2?Tm@?<S5^b
zX8Iv?x4nj0x6_+kID+lysy&Rg@q`trgI4JF=^0*tF4|G(T;7Au^$N7({phy+6U{({
zm1#RxLw8m8C||ac{cprmqGAR*6>GxH=*V`X9sYu*uH=&`L-o+L(i;tM6q=zdI``Aj
z_U5D8bS2u~Ms!Nwd6NC_B0E5Z`}$vOh{rsY9y}fMQ|^GxuoGT|<FOC!!)vhl)9DAr
zqv&%VquciQ|4V<aXpLPcUyt5j7aq!TaXJ+>o=Ja{x(GW`o`)Uq6Ksj)R;Bv0(Gko=
z51>V8%AY|;^eUSA&%=DH(_*fQt*LL1zIQX4(d@lkxQL!aQ?&s-IzPlhco^L-N72+5
zT$4J=3)`Xr48lAdiSC~1QU545qWl~>CHv8X=XYf7@%O*arqy2x?YIt}i+#|8<WV#O
zThKrXJ(m{M@!`o~URXP98n#0-)-CK84$8^?yDTcM3de@GhEp(i=40;6kNOpuN5gB-
z5pPEW{5kF)Ml+jvJ_TF~ZKom{P*u$R|Np4Rg$<vHuJ-fLMR_&);3Tx+>F8>og@bVw
zcE{o`q?2(Vy4@zB&)*&8+32oVhz7bG^YC@d{r5k=;i3)|C0|S_Z;RC_Uy5#<X;Hrf
z-5qbB=ffZ9h)!Lb)=DjO01eOpI-~b{MtJ}l$Y9LFVQbm{J~%ZVybm4m{pd)RginNP
z!k5F%;RoUFa9{Xycm!>?;JVaqv9Qd#*$>`xM(%$DIXbFt3U3eZMPHpCE)AauSBLAv
zH_-jC72RN;V=Fw0O|ixLl)J0ZWj%jAIdErwK!vNI_)C%0uok*;8li`EJ2ar4=qfn}
z&Ed$nKN>HkoJF78gSPuUn*4v!=Zn0YeyWswnKRIh*NzHz{H18}hoc|N>#zylf}Y;b
zpd;CW_hM#4IvMUm+gX99;(O@xhtQ*`=qqV;)I<Yshn_fRXQN^m`rrgKkO$B}7Na9r
z9{1OyDc*^W<N&(Nen#K>GyE4FK*3kj33CFP!J6p%&BJULE^>bwLn9i6b~p+5;9T5|
zH@=oWpyzB%BfA+r%jTj-)x+ree+%9DUtlf+=*BDhdJ3dET5gYdo`Hk7a0A|q&e3CN
zCRRszTa<UBf&CTr$G?%DFB?`xN8Av*V{7#JJJ5m6$Fp!{-2W4A^Ec2Lo6=%=9gXZ=
zH1hpu%JRRNEP>8lCG>;aB+6%^9iNY8WGI@6G3fi#(D&}gnz#}R;C9UY|3KTxMF%SO
zqN}#r<}|nUu{z~u=tzd38M+2-@Mg5*8R%MBfR6N$D8GmfWMkBShJJ4kq3_pvi!;y$
z+i}qhd!XBGB07inpo?WO8o<+0|62GFnu&c;K8)`B!f&VFL^aV4FAo=@i*`FY(A{sd
z|Bd_`Dh%WxddmNern178^k8lDxh7}>ZP7oZor%6T37xuo(f605&%G7(+t4Zb9$oDD
z-bwG3dncPxR*ecr+!9UMS>fgAsh>r^2LFd<;!X7VPtgW{K=*yYchi(qN9!A*0d<e^
z2(+Es(9F)ya^XlHj|ZMdNBSO`x}DevOKwf|ozMV#p^Ix6`u<q-cl7P(lq^I8eG2X9
zRWwuYNBJ}Kz3h*1@edkV(f88t+A8P+9nc2)pdDWn_2bdCGBuow{`guJ_uoJ>^ih=e
zq3!%07TT6ugxSnVT-Z_Vuq8UOZdeV^MI)bpj%+I0@B`>-Ux9hJA?m-xc9eg?e%R>!
zbRJB`u9V+J`#b3ae|56|t8(GU2csjn4*j(^7rWsz*awf`IoRXF{Fwo`1P9^ocs}<1
zDDCSf(D$E0|ETdcnz{GT?Ro$`vVX$@^q={M3rCjOo&qU}uGX692-~6Cr9T?^U^LK?
z=vui4a|cYg63y7FXeQsq4!8?#r{c${{c4!|Gf-<TjIcWz@nu*Ghoh^17B;|*=z;Vr
z*2nTYQmVV7Bb$n@iP`7~m!RA5@hCryu7T&#K;GQJ{&z07QK5U#)cuBzsKh5JuxjXP
zZjWZ9Kf2nlK%dW|8C-yNyb>MA8uVN8BHn@@qX7-rnVuiKll|{Ly^0DuydCZ60W{Ss
zu_mrV*T~-RZ?xf3pQaHvKm%%n4&)p(W5dt@??>BPjrR9ilt0aK;and;KMMb$DJrll
zMS3FIaCx-83EDs>bjk*!4Udicx1%GRgN<<ky6U%LZ9I8*3aBGCr<}cji+WtlK|6X4
z+u$yA@s#~6jkG%Y=iN@2hnJuoPeL;^6McRydK7O)JN!EC7ymqE<a9LfVaQs^W^Uuc
z6y1xi+9%M4pF<bP8|W{at!M^5LId85F1k`*r2D6!^{1g3=!YK31JS^4!rXy{ex&AN
zW%vJ@c;F*+5$!?e`d4&nihP+rb0_AZfjovb_$0d6)}d=*Bl`ZAxDF4Y?L7Hay8k-n
zr~DP#?q1CO|3Eq71r-JMq#v8dqYrjK7f~m4)sMkCI0YTSYIH4pfIjyfx^2sUoyupT
zC+PLq5+6kS`3PO)pJDF5f&McWruJ|2YgKe_nu0oL$F0z*>5Yzj5IV=h(UD9>JAMES
zXe0XGF7&yBSQm?YlRO;_c<49me;=4bMRj}{?dW5)qdjPYKcn08xP58yoPv(*baYW(
zfX?;Jn1>6oGro-eEHC(N%3MvfJOK0X#&5If#RsU!%_VxIZbTQ+yJ*KBq5Jv(8sOjP
z$dBEh=JphHakaui*cE-h7n<1tX!}Fa%v=>t%yMBvbI=!_Ko`+7Xos(%4Ss|M_G!2m
z-9|s*Re0Qi^v}J<qJg}K&haKRvpdniGvB2^jz`a%Y-ujsZe_z7XvEFYhPt2;pB?34
zXdu_4Q*<l3%I`)y_#gWG(^1}tZqxUo{3-hWKIA$6f1q$-M+Lu65tl?WQWbr$Rd^<P
zruRmlKO24SVzh%BqI_GF??(e#h6egnxE{^y+gRBBzncpi*cToO{|S%%Ar2Zepi{yc
zVWY5h*clD558BZXY=)!I0X!V{m*a51|IcyZzO4LXT1+*u7v;`qDrcjM=P`7ZKaHmR
zeRS&f<61n7x8kaw(#RVfOaZsWdenDC0~(7pa0=%Bf1o|hg$=$E?m#>K34I~|&uLAR
zMn_f^%~&J!ej9W@_YQAG+j|Oo;2Y>-D{&}gpfsAva);Rej^H#Z?65I9r(Mu<VF)_n
zap-=3AnG?n{io>a{s(>Uv|rM$Xo>zpIvYFS4d||V9{tvAMg!aX3;Vwb7Y%+*9bAT{
zdRjOWt5SXd-EJ?VBmV?lTwkLZIf#Be|3P=pNx!A~YUp!~(Sf!@N8Sr<=e#TzuFgx*
zIl30j#3H-_SB15HPd_%7V0Y^OMxX2aM;ht*IGFMTyZ}EzPtN9tQ~SNq_J^PW-Gv5{
zofi)*L663#(3F0FE|R~nCZ76d>bM8`wVQ*E=oxekyn=o^K0pKe1r6Yszfwn)us-FQ
z=s|ZL)^-11$b~7Kj=ne_P0dQo%^4c;X0*eP(39=!@Q<+Yku<jz(STZ@@Abg;crJFr
zdFVIeQ!M8G|C0+FJm&ATh{~a>xdArBi||aGfz5Gy+&})Gv?ki10iTO5(o4_)rl4!-
zfp96h&6lI8U#0H<^<3D%CTxuF#{&hArtMNZJTWYbHgpR5JD@uHerI$o^+iX1A)48d
z=yn_z_4h{ogP8TkV_ew4%jgumg|3CqZ~*4}H;w3AwBzAu$D^?|&OkeU2c5D{(G-7=
zwqN+av@7z^OgBU`)agI=zuV=UsJJ{H9Ea}zDQE-B&=+6CTt`v<6n+0kw85k3{yu@@
z#`o%=fu4b$50{_;jzim-n#mT(9TfAZ@W6Nx?Pxc;*bbt<hW|xhY@M$_?w3waw1XSa
zReldP$49U>?vDG%<}Z*t7b>CepN{UTZs^opo8`g|Z$S@`8R$W?99<+E(M9ww`oea!
zp*`WR=tv3{NCB5Ze=nShzE=Ycv;jJ`UC;mqh1p45c)~q_HuN6)wfYSE;fVzcWZX8F
zqk%3*_xXDCXx@!x>fb0AD^wu&r{M-@httrn-a>R>%g}+XPxaZ%CNA7IThKrbp+C7!
zKBho!PV1oMwrJ%2qkI$E;C*NZ%fqL_)#xsG0iBZ9(F`68|H0gU1G(_ADfRWy2D_ps
z)g@>OXP_yck9Bc5x;s8b13!YdW8QHEa{pH7Bk1#gg+&S%$enl<uo3lD(DP*gR&f8{
z&V>yvK|9=prfw_N!#(I6mMBsnw@quHM`&Yo%34ObE4n><qucqs@KW@-tI<V%Gdg99
zFzdE?k_#8#2K2>G&{TaL<)6`Q_BYy4(W1$6VU4g^*eUFXPTfW5fUZZ+i>c`Le!Xac
zwEw?|ii7CtEpmJTHXI{HQ(YPzaSJri_UPOWL>nH8ru@dZKMkGpW$1bEF52M%bh{QT
zmNHSX82dkuiuP1^P+W{26j`i=bJ5gqK&R+q^y~Kzx>m{+PpNEzzIO)t{6KWBuR+^c
z8uz!L0epo{?O)lrQR9RHxxepgi#5417Tsox&{h93+TlKQ+ht0mfU2NV(hYt7T=e}L
z(79fW9>uSrfqaPuP^4taV75wJ)JOMat0<ot_C?pkkhniA939>q-hnRO`_RR8Ke~n<
zMW=8z8qf|jLr0K+`1_wy1#(}#)@Vng&{U2`8@dmj>qY23|NpMe0xGKRd)Rlt&R0=U
zQ5nF(#%{%K#coAJMG3og?Cz^#cXwlVcXxMp=lATnd%i#Gx7Rv8=j=Y`-a8B>tDqEG
z4`t^uP_FF}D0lyTDDf|J{STIAoxsDo87nKB!?g18zY7z&Nyb2V=d(=LXP~^|y?}BT
z|AunyQ>3zvG!K+ZQv=G8c89XVaZs-PdgTKsNAHo^YOEBL*O7WKi#-2>n8>wT26Mur
zFc5x(Ct$%e?#|z5`wI)PuIcISd}A^cR%E>eO5;DFG~kogx;H97X|N-#38$$3K9sn4
z>3II7vl>j~?(YeE!fCJ^Op@N+`8K&Wti*a2EC3%s`KXxM%ia0?y}Gan>+!HCJfiEr
zFdyr}8LUg(9u{Uj3yS_i2A+R;Zrw6k&#woRn<g`qYa0M%$7Pf~pq$KVSPZ_=b+$~_
zO%(>~pdSPq!V6HIhV0(f27;hmni)_o=}B*%e<^Se#T=O0Zk@y?*p&4JSRCf^v2LRF
zP+q~7L3!nT2<6&;h6P~~U+V=d5X#M4S=kWEhC-oiup5+D)Ikm=(#a%sSgPC%<)%CU
z<?g-%CGfj4uAlW3q=dQAr-yRyRDt5x9m-QP7|JW;cqlJm3!&U2$JFk4$wWH&3gz*M
zm)T039LjU+2_>Ke912@P*~vpF_sn}JJ58R&YB&>=r=&QPm+D4P{5wN=AsPtfg=`Mw
z1RcgUCi1)<hw{R37fOOJP<Ea&tCc7>l%uW$<tA$hTf%54*Z3=x9eQW8ULh+&X|O$%
zd?TPVv>3{X?S_Tq`G3houBkn{b*-C2xw)cYRd@kPVlRK|V?`h=&AJUN1s6iOiSI!<
z$@fs+$QU`S6U+kT@vaKxQiMTiXaFoI&;KkYa>VDLJjWklO_(mHb=S6sauVyHoWKbv
z1s_1U2|q$Pxj4D3OW+0VtcyU&+gRBT%F)k*a&K*i&cA_tSsh-(JQ$MawmL2i<(jpG
z(m;P*N2`4+%!mF8l!Wo}SOtCIBGwh5d>DQXheMCN?nYlY6Uqis<>UF6n<Gm;Yi9+Z
z+)UM>+!IZq+{K-h{b63#qo7>F?NFYcr)vKN<zqwq0PAK>4imCYtMpaoQWg&2`Iiqm
zWl_l8UtL*W*+SV)8KvwECGlV=I~fb5@Ej=lmO#n39>#^+p*)s*p=|h+@`i(nT)SuL
z@E6L?6X&-+`1n9s7ld*tszJH?J3x8KU8wdOP;RbwQ1ZDKur678DE@_%kx<@0EQfNb
z9VeK`-S{2KU7Na~#o|zQ&<e^CcYqh+04N3O6tdouwTI#t31w%!l*5%Kl*eu%EDU!-
z`7r(g66Y|!GKq)c9}I%=3R@11p&VTcDE1I2op*%tVR;;s#^yt5XbZH%Q&9X~L%Da7
z6|pW+dMGzzPUsFB!Z`B$H)SG^Q7b5qR~IOOqg6i*%F!-|@`|_%%1wF?N`r5q?EEv7
zJZ?qx?uK&Bvp{Jyzp^rvhMPm@??85AA_+z-qm@gcyr67`@&a-Q%47Hl%8~wsax$L9
ztet0q(m)v~H)9Z#$FqrY4D7&q7c2lX7w7rU&7?7tm2d<c2lJJ%cDe^PWc>h&U(u3Q
zqwSzv%kHodTn$5@dnxM`u{{*~QdkJyhVlxVvb6QWRtt)KPHCQhe<qhu*x?^2*Dg~T
z>l&AZasu_BJZ>SdER297;W{`57B1^<41our9aac*Hx|H9_zK1==Wg`3@k$BzvyQ63
z$*|5>(P1SDuH^3gd7c+g9D7%GH#)*ERotClUT<B^o&P?ZPb6Sl*uT2F(E~n!3t^)g
z)?@kumS>&3rgil7V0G5RplswkluLA9*B>2BWM^)*EGB_+P18Vmt<DI2U=b+yKocmB
zYab|n)0K0f+_X!e+@u?z+*6mKyg)sKcK8VvgsEy<m()>}i4^Ju<!+t~<#~>VauY33
zu261JZddMC9#@`+a@Svn($Ev-2PjY1A7$z~PCti{n~A)_6^HVe)X{aQvLBSd$xsrn
zgmQ%2pd9IOD6a?Cq3rw>l*W?>S$>{S;{2g(tgy0-lRW=bn8*nPK`GP;=7mFHHn<te
zOXV#nALSC&wO*jILT(WwCzMN*8_Gs%LU}wxpgey4)xH+mS)YOOO8XW%-~W5mv))b@
zgYq==g!0B>0hGt*E|k~sRQ0XKYC?IO2EahL1Io^SLD_(J1M9<Z5hyQQO<@)o3B_+J
zlzU@4bcn-ICK7lP$~F54?eH&@*J|&E*3L6Sc>yX5<)&>0<t7Y;a>U_Kj=m3+OEeft
zUQ_j}q4Pwc+{CvU^8CwtwC^b78hSRe-T~!+a-=~}j<gGujz>ZtI1NgI7%2D5Whh7f
z0!qVfjja=k59Om~c_<qVhSE?ED0#*==J}V&dK7Z>7oa?^zo1;}%1zvz|DSyblsB9E
zVH)V&)M~6Sl($$lU<8bUS>YX64aRBaZUn>Ha3I_W<?+kc+}-(0U7-#pl~BBeRbinP
zR>uw~mtrn--t|yUVjGl`I<341<pe$|<F~Y)>kLqC+G<eZ`#|v<0p%%}4dv1~mN1cP
zwi?P!vKa=z8>&y-%CdVvdEC5oofAr;0?-|ngp#l<ltwE<c|B>N3{i$Dqbxd%9;)c4
z91NY;8cOHWl#5iq9?Hq=(e(+nUxRWFJciQ1A1FKaXl*r?9m>6t7s^Ho!m{%5zXB7v
zNrpqY7ZyV~kt0wFoze9TC_8=t<uQ5*rO{-;)*Fiquq^A!%27}r+Y>N9bZcYXgoU8o
zLsg;k|3GfdL>{MhPzrR0^7!<Da<pTioWw*ZJDdY$hg+cyo`Q1JXQ130my}P{{zKQl
zp!g*VvHVg&hZM-hBpl|1ax>0=IpICn5GHQx?)(X;Hc)QTO;8&A4dqCag<6l52b5RR
zoKT*gicpR^7|Ka?fzr4G%0{Mz^8Cwlz7B<Sc2;>A%FT3B`2flZJ%`!hN7Z|^v;2Ia
ze3bKt@_ZLpeO)M*u!*iibsY|+vEJ?2zufJkP{=jksg4Jsbb12H3EhL@_XtYD)a|YJ
zfId(zO+Hu%mV*AU8<gjNE|fygp`5^XSPaJNU^QCS!9;Gp#!%i8^@I|z7RpVs2g=Sa
z!$k0j@;#Kse(Cxjl(<A;7SlsH(Hu}tG9Q!;7J+h;mw|Gr9Kq_)56U$i0_7&03hi(%
zl%4H`veVB{uDPwFRVW^m2Gc;fMA@Jl41jWJ3qonMK9rA!ja5Gy(wM_o$wWHa044Eu
zC=Kj^(&14kiS9#b#OP!_R)v*Ouq5gg$|q2E?i+6TWruRff}tObfKqR=lRW=3naB|>
zgtCJbP(I3Sf^wIhf%2OD6v_*VSA^AAJ}5_CP1zL6=LH?1T&g}$3JufsI4E_Zp=@v-
z<o@Rq3nua$Pa*1&Ob`!Re#|y1bC#RYpOlP<9PL25{7&Y3WLe1BX25q0M<;JkpF$6*
zf*iD9WMF-b_^)y-NJC=9WeMwa6;$c8=s)eK(#cG^*VFMzH6NfasYhb*CE^R~?~DYr
zo08$f@MXM3mjz~JWMiblU;ZG~JULh-HJn1rm*q+$(X?I)-3!)tX)C^NlcN?X?)<j_
z#$y_giDWx5?j=y<k(?y5k#$@Wtz%=;Nz~lDv)9WJfMy?-7_@$P)ga3%N>s*U61KI>
z*D=zObu;4wemqD<X6AEfeF}bmSl?otz?My`I!p3TAo+f3%RBHFNrsQ7b*Sl$@!H-t
z*&9i^Q&i-*IeDLlV<p<QxPBlFKYHbqwRn`KR5-R4M7PE^3tKhTb4Yy@FE291VZDm^
z5?U>Wze~nz1=qR&wk-I@Ax}YQ$8d)+Sbp|p3JH&pAO{5+(?})~Z_-Bo5YU9+&$_=a
z*hJny`P^x|u9H}MH9XK|)7Z&0QH}LPVuzArC;GGKYUpu<vi6t1|5aSNWzmpg8<?J;
z!|nvRqu-{9rD%H^ZA9>IZKe{*d*dr2&)iCyX^YQj@^sYGD8hOxwhFB8<J*|nnb=2=
zHyiVKc9dgrm`&n7(w!z;1J^S8nSlp9ZPm>t2fQ6)DOj7}%_Q5d1&-2qAc;KnBp&GQ
z*25bV8G`*C{KWXo_`(Rl_ZwVDU2k%VEGDnW5NuJ*%hR~XDLEX3Ki106Qkp*wcqKiL
zY9Zw}P&S9@bI{ZAgH;g%{jdzfc{{95l1NSdo{cm@cM6^&@e6!A6V12gjWt?Wid4b>
z5<Y9RxajKRCog3M+0b`<`D=8>BYfhs{)DNX{0*6TEViRGY2;q4gp%MZ`ZFZxPSNf7
z?V_m2UQVDe`T{hz8rv1(77;%hdpTk<Vvm5QVM6?_5}O!`tbhs7|HNNDei)N6iu_ZD
zFp`Qi(Pk#V(`xHYP&fSFvy+$V*Pf!I(Rr}mO*7L~Uy->l`pKH-DLK09={zL=FdCHl
zMrCIwe0f9^NEFGpGki!qm;|>NBG>VIM$*sBqu7B<La>iyy+QpJ(Lh#;riA?|IF+~|
zIFHpj*YTaJjWk$Ekw7)%C;4ESNY6TyF`EQUaFjoEb4{z+*abf)W-P<+i#A*fU;cuy
z(GLIaaKAbFu$RM)$Q5Y(h~5WX@|$@AG8{)Sf>DKxd#SuGmQNFOrO@$HhfeXL<u_D$
zhCZ8a^Sz$yDb}s9jld={l)7Ky@OKY$(#jD{kO5A{Auq;W1Xg2x7v~w8L;^=rP-Gyw
zza+eke-=htP3(s5AEPFX7Sv{&W6RDl<T588@pQDu>XPM59C|>a>q0k;Sm$FaBdBl*
z)<Hi=W2VqiH+&LdtBO88_Nt5l5{$^Zx#FxvzO&_|x-(fPq8neindVU7Jcjio{m6E%
zX`AB2U%fQ)5_p0n7tpt-P<z@>h~FzlVvZ&^x;@emqbBn{=v?B@{3rQOq1Qf)?D*AT
zy%&8d!(4VWrQ^JWBmAXDr<^7AX>`eGE0bQj1cdkyB9feW1D&_VrwY1h_|HYp-@!Ka
zvd*UVj@UcV`WD81TEBqbck++JJ{8?p`3r&aK6@#~$IvBND7;u3+DYOm7%CGWGRX`(
z=I0+k#D3?RhXwEYq#lPyWxRh<q6^%QzLmN4Sl)zFu#99JFy9>Wc7##BF|Adg0-v}$
zC7k$jth>Ob9M@s;ALj%Y<5!<t&9$5KtS@16Nfss>sUyM<1M+v{toeNWf8n<TU3%u-
z^vduHSPtV20Z|lkb6poJ#u$oY5duWyf2*xVb0@UeAetyn+yQuit$f114&TnKb5Zmr
zbNP&7Bx{i?#Pwo4U~b~y(5aPwcnxcVp%zM!2HM$WioMoiTWM^Q&c){n>$MaVd5K>O
z*5_i`{dB&X2JflgX>DXXF%z{$ahNQZ9=Rl2&yHv4dM0y`bR@G=pa!gLZav}cIIAf=
z&?I4WWv{Pk|B-HC6Ol!ke<k`HEtJG31fQW~xrN>xiUh(s=tWw=736JZEsa{7;RJlI
zYul<e8Ykr22rcM)JxN7^NwR_>kG0(q%m=ZBJJ^4kgHL)UwPA5*#9_oY7oPMo_n%Db
zkUz|No8*Nl)E4d}PNW2l@S8eDBE56?B>Vr%B<i}Bjc9f}mMB%+XMTWjoLpz%UF~lP
ze2cCt{<-zwdc^0`QwK$oGe%ITFgu;BiIy=JDa*PE^rKP!POMR!M6GFn&j6kB4rV3(
znmPBBSFszEsDsBvj-wf4DD(G>y6CszB{GhPQrg08GK%~#Kb-P#?4o8pqJF|njNkN>
zm#Fu6UnHs@bLa0WTR}!ieD{-~7TJqo+oSrQtQ!#14wlqD#gqr1=jbNEXmYRNuovK$
zog935)nRmGV>fBH5aWv;fCQ#yeL*J36rA4@G=xMs7`aKdmGxLCa+}0W7+;C^(j3z%
zl!QiZk!K#h%V1pm`2)K~Dsn7kBdz4uK+B>K;mg-XEgb%%q52prk#Gk=gRz%p%t7ap
zkLX1<$I>m<!jrJ=KtErb+n}e>k{rd+U7;C~oak3NP=@0?jE+ncgW*6D3`cjA9o)e2
zJmV31m!u^ok|wJ#ZlN4Rqj$8}TXJO70_U)g)#4p!?zJX(;z|VND-XsIeE{$`+|3kc
zJ<^TVy@)j_t>na`6lLq0rOtXeyeN2x)jdr<2X<rF&{w0lCmgR0d(+q^qC?o!cIG4X
z<oe*(7ky7Eg~LR|=Th53{E84igc`-L%U2ny<0Eo60UywVVx7h?oNiHYviat$r(+Rr
zsYo-EbbhiQm9?;6tf*tULHRm@NJHXI;J=^JEoki(V<-Bp=%;C(d)Q_$?~JZitlabQ
zv*VvGF<(<ZPCFvymDg$Qr51i;E<ESyNI>ZqxDQtk=hr@ns6opj={WBo>@Hc4e;u;y
zME?-IjW+(Gi%Zrp+Biu&yWvLGkMsn`Vjs)AF#49nE{3V4MK{ANaz1I8o!U(q@v(`#
z$KNF#i2KU$P}?sI=jiP^bu&_{B)L**f4hkrfxbI>k<yGJ*pg_z^yb?0-qnWE**ZM7
z5gCRxGvhcT2HgQN2cs9MNJlI5RNj!G93vk-^{F88Cy|-vg0G`Lp)<9)$G99Lq$Y<G
z7hNQ!hU+1;)TZ*Yu0(h!HkX{m));^Ova!LJ28{x+0%fkEo546nOeDFlk@q(G@!Hlt
z{(7}BiUz!KT1>X`k_4xW>hKcVGYW;1-~n@yir6PmL}VTQm)LI-Y){d(Bd(?H?=S`B
zyDK6&u=T=Lo_TNLR}d#M)6Fb=F^#R3S@WW&V+e_wVhE;KT%0$M^fkqM>rVTSc!HjS
z1lPtt2)}}it`ti}k>#;YB`J9_X(91X$$T8#fWOEHy-)>+JLLQw9+a(c`Y%?{X9^B=
zy7L|!$4?Y^r|aT0IELK}rT9aJhzILn8r?_nU-&l1=Qp}Ej6dXBj^8Wv!^kC4lqN3X
z-$Z_fzdX)qw5#4YH`m>Mf@^i2i{NY|;j8dQR+5S=VV#P3A>Em!<^7Rf3R$P8p{#7I
z34UqOm!(dAa^<CF7HNk1#zB-*Q1VR={*o~7unGEKIfQPrHaQfZo~+lCw2|t3VSjYl
z30%ee4h2LK;?t7czM8Y2>Pw){Lt~CSOwO@`q!^l^D9Jnl1-i3dq?hCoiDv7r+*KEk
zBBhuoM892=S0Uybr()v20b63`!_eK+n2+!~zL(LLXCMxvFbVoHcB@ls8hA$oW3Yas
z^AOo3_Pd-;T$1I6&C!Xh)7{Jb0lpuJ8;>q8Mdp$xAO6>fZNhvNqar>_h?lQLUw1am
z`IkZIjnWUtQ7B6g<P!O+`5LQJgFg!Ie4X7&f#fv1fMQdLaS7jWHS%DatsAKb%b~kZ
z&g#x$e5^$0i>?eCXiUBl@&&H*x|{PD4v-+8uG1>3X>e&clcFVQD3D;0AB+Ig=c=dU
zFV^K)`SyxYiY>XMCHj$Mtw%%x=KIMyL$@T~S1o~W9%35P$s+vx$*~TfLF%(0))p%e
ze^)Cngh}wPO6)9oNfYrR*?bftV@SB4{Vvh-SfqhnNc>Tgi(g!d^&qYv$^OG91!FZa
zh4eZcLoafMyhreh&$<q_S?KIE)B^w9HgBhov4&(3+HpyCBC;CiD6_$}Y>rig?;y=L
zEL+f?#JfBxO5v4_F-A+(*T@6dM8=cRMqDG-FIhLx_CJ#2Kjvldzd-C&@|THyUTh;Z
zwyo%qG{!0vpIJ;N(FhXuhMmn6*FB5vA-oovZCGF9)j~@gr^Wkva;sFg4xdv*E@C7%
zgRgs}d%#Sj4&E+_L*aVn`0HL($75YWOf{@KsB???Txy7Pq2_(^db5?`suTTv^vTf&
z5o3~R7;)pw57#{$MYId?+RJ7=$$p0pJK)uysE07N$ft;-<)EYsXd}KX;~V;IIF_bD
zZx|oj6&Ox;qsZqK>mViH1nh{H@rB7tlEo*<bCQVsC1`PcGvIR?haFWMy4}ur#*Rws
zu5uEVo3PmOlwPY-s|~*G@aqh_>S@oQul&q|w2$@J2Vg%)DUpHLUGhw0D#}N+uQbqK
z4`~~QwFHb{{exo5NHCpsf0C{FpAAZ~edzy^IGGly$~p^v`^Z@U{dsb9$JUp8nX!q?
z#+He^v$1!S?@G;Lv4PQ--R6S<jCmv}01Gls6MU2;2}#z4@q`2-MXeKd&QsBNYDO@&
zjU;}q8!A9t74`RL{(^Xs?AWK{pF=(!8I0l>1wYYYAI4_wR2)l@%q2zja<tVXr-+@+
zNQZwmnyH0jNs0t(d>`f;vAg6F>)~uj<ShEs%x$~Ojki1kHq*}@(kIeGUPHQ_nr0^R
zBe<3!Y$`0yepZ=ZZuu1(#mb##3K8W^^fD=iwYHwjMAlt2<1;;x<oMM$gKm2TwN$Sl
zG?ny>hG@-SWbH?E1ENDzx0DR~*}@<61JQ@U1jLQP?#H-h?z!#hh$d?qJa=iveMGd=
zLp+X`8=1$$S46iZOI3X3Jhy6pOr0{ExFYz86e8Cd>~<VGkv}WC7mNz*-zDjpCyQ&C
z_3rp&%%wXM8^6731dyi{_S3{qGbi6EU`uKqx#JyppY<U6_`(Sk#ILCKTnT+7J+GwZ
z6y{loeTqH5_VX3pHexQDS?+o}qVSrf6$fFt%@B!1cbP1QiE2oOX6)!9oCiBowV&l?
z{KLN(>z<lj)kYK*3z1voHvFNd7>Hjv@=Uf&4(E>%o?vl?f<rNmWcaX7L5ukqM@b%|
z$rIy~htY>*jnMz3$Y-`al_q+?#d-wk;63cCX?7|8A~h-68~sc4shCeA_tFFfc%9N6
zPr<P$0U~)Y)+2c@Y*ld<dCR;mjkGp<-19Cq8;?60Y1yrR7vODDLgYH^3l9)g6aU((
zZ)IM%=ix}KC*pMFpBN%{;ng1RC-5-#^z^d?eNq}vtcT!+&I{c;vYmy8w2NNYeVA7y
zR}D@)A2GvO=f&>@>t1>g3GtifZkQqWGuoP(gYSFzAHp(-sE>?ET4gS~=l@JFvd~31
zoI$2}=AQe0juPbZWR;GnXlksa*S&gf$I)LPVxI1FGxi?XU9tuJA$lG{Y*WSrHLSx=
zq>aYO+>bmWPtZM}rii!vB(jZS8yIB>%1pAiI2>U7rg#%tT?of8M4nUR3c>9e;X;!B
zWK3q8dx=>J|KL-f`5cY0BDt-}{SW&dY{SSK*J&?L*BAnH$2&0kka*hv1WS@7==g~}
z;{?GX-<9V~pNAevi_k`KvQ*}LOf&GIM~k1DqaOKsGuq&>8;>nC@dhp-#|`Q=X1<BB
zk;sv(cQ6;(LSKE*mBfD+xjrzLuNWo7p4{B{&@=cVSxagclhDp5LS#6)lSJ*O+woLA
z#gTkQ*A|^fGpY<mC-MjTO5$EoA)}=-4q|sFwt(sX$j?!RRb@QpqH)PGqSFvDgr08F
zMRAFsLJj=f@LMJQGF)<A_ay7|*dOY;3e{5(la2KO=7+G~CEpwJ-Dcj*`aOR>N^854
z;6EH)@{giF%r}n;q=-jYPKL-}w7JZH$KHY0SslgyDn(1M{ru!f$nau(qxq~9uS&75
z%tdbEdy8?KafdO(oc!1;-A!%x0eQEhZB3mgu&;UKvA3fmR?k@deP!N;T8HqMPR^v%
z=*V0o9(|<3_MUZ3)_+-lVE)``<)Kx-r<$)Oz9HoA2u*q%M6MnjY&UdC&{dE}$e-X}
z1nkulx9c$s#9<k>C)f@X@I~$2SVv)7K{AosG$C@A;&UmIpZJaF{NX(G@7T6TcKojp
z_nZS0i6CF*L^-+HSZrnym*8H^N0BHa1x2!wq`o#(-c0(`%aN7TX-G3xJ)U5#!n``V
zLzLP?ncYNAAlq9q#iQL$WOvgn9ayKp|Dm?+EW<xBv{ek<9nCBHdF0AXTrJ%?szk<K
zO|;P5_|&Ur7hFXADKD}dzNL-yupKSjr<}+JqAF-)S7J(G%dG3_FqCy!Gu<<<Caal=
ztbuj4$-!)7k~Wb>Gw#reCGhz~hD<cx501vSoSu1R=HXQ9j&HO%{+VZ!xkUG5G-S*|
z8$<LPyvF|D7LB~<FJZqx#<Z{`BfswR9-WoeuB6MK9NS1@dzpWpc{%ptDUzMuLx^Zj
zrn2Z-zy@03F<Fb?GmNUswa;ewSEBbu=og_o$y_8DzR~lzM0^ao2;$<PKfrn%zR$6D
zM_1Tpn9<JzY}3pW&%GS^s5qa>^YL1!*;?W?5ZzuPN)wr$wa6&ub@7X!vm@yGvZt%?
z7QWSpmA~W|fR9U#q3?kGDT+?2_anX&@zbociFEol;NMXgzT+HDlK++F+L-7w#+tXK
zz&1t-;;K;KEDiT$o`GDU_${DFPrV>5Sx1@|UU)i^qv@el@{lnl?VKQD7m-(0pNLEu
zn9q?Y<}O)`pGXknDwS7j_VQF3h`+!3-r!gZVGB_Iso0W{>ttfS!{<lfRunI3c_MR>
zXy%h>V5F|=ld!8f`K5>dIy?)};!-HG%{n>fyc^{jQ=$fuS<N#qy&Z*#uc%Gb)rclU
zbYfg3rat30^VKxd6ON|QjIlN-X~&WA6S^l<EytKd&X)MjW<!zmSr?yCtS3^n8F^fC
zOnzp^B~?f~ha@9tVl=~(L?S!U4J6ng_#%bck$k0|lGA~IW}tgTd_6`_Y!~2lcoB-k
zqlt&)xvc9==+ZJC^M8IAMREK^R}*1%3dP6yKjy_KC{h;gVO<oSVx5X&BBg0C4{`nR
ze?a2+tmm>0WY^Of+n6^;mz|tn*wAO<Qs67HnGq<PGQ(accdW(gL&PyE^dRaSp3g8g
z$9p8~jqMNmPeeS$$D8?ZiAJ*1*?iXhbZeHD&%LO;i@5&S4>CkL;wO?!caYiATi2j9
z334-Pb57kTe4Mey@;6#jECPK8lD>it64lhComfXRq8K8}RDY3m915M*M(yM~Lqj6l
z@Tm>oV_R;c{u2$_2a7P?GoH}QOU4f7hZ!PAC>)n0$#wl%cXWe9=a@H#^NFcSqayEU
zAT#qV+JuQs#G4U^2Ct!yC;#u<W}JG^VH*PeWAK|n#ziRdn4pT<`F^G7Gg0uS`W)o4
z%plKE?4!hpeB`p$M&E__Q0BF;Pi1|QIx859sPUSOWc<M71;)1|tcl?i>!aG~K6CP0
z565oY`jGM;9zl!*ShwRPGJw_#sdqiH?4*U+=;kmo;M0N9^O-MTEMzQVxTHRDxoF9k
zoTV8qDMh_v<Pymj$1wfg`8&Q!4*ct)&reKUww_w+ieF0gZ%;iNwk-HZ<9C>Kb=F?w
zbcql8jP&VC{BGj5YV0>0j_5omJ_)s_it+e%)nNk0#cE!Xl}1-iufa2pP9!fQQV*vu
zHh&VeAZayx&zULSdpLHYElOK1*%)gZyO`IZY-*xfF~+H%7a2S>YY4ix_<7Kc4WFvo
zvgAvk-CTw%bzT)7!M_JwpV+8w<fN4_&SSm?E+TLf4(-tAU@UcY1}ow7RL{W^+YPqa
zjiN1_M`6Bw?`ykfrug9D=tKe$S2I7D+|~}7GM}p54<t!yl4QpB4E&DIY3R?G&U_5T
z*5Z4R`3X27)=Ax^Xbi(nj;r`3fKAv)m4rq+XYqHg>a1RqU>VN;k+_B=h9XCpH)Y<L
zc?ptFq{z5faZ8CAj4l`U>J)IvMJB7wgde>fTl8KkK~z>o4YHNMnn=BaU|q%>vL7Ow
zuU6he%fC3Ld$6`1mt>D-{hv&bO;k=p+&<>Nh`S7PQ12Idk>&C9glBRQ+|7+2y;?-z
z{txp(+{cpkFdKY`&Lulo@1#T^!(Y>Mq3wFKH~?L1GA&2XS4xZ&tRE0NfLw#{S#0`$
z@^)O%4NJy}c!<<i{#9FkWi6sJVNc7(T{232_tQxxvcAyGr={vm{4c3v9dab0a%=pm
z5nmSl%LGPy<1s<YX}1*PIl(hYIDo){v_2Y}Hypy)LhvPQWno+FJ|roGKDOk<CQ^r7
zIkl0&<XB_l3*MgDv1DL1i!q)yuHrpSx6+VIS7<qg3cbyU&z_DB<S0PX*U_|P6epj2
zK)a4tQ*8a9NF92aPIMwNcGa4ZdSDxgJE%JG4Zz1GYsn#!TY9C7&iJ}xpKbZnGK$b<
zT6N07JR|MCAz4~R1F<ngnh_u$X+#`)Aa~LAAT~&gn`Y1#PyaD^?VwBmEsONUnht(P
zCz3&V)|~vsvq3>Nm_g&06WNMQ&BW`DdfjBb7=0eH?PP?YcMy|9dpN_UjuCItcTenT
zu_rYDeDQO<CF&ra!PZudJw)8X>kJud>(TWm+KZ^0&d&IHJ~8RYa1s4+=JJcnB8iBN
zVcnXzUhH@~_9P6EqvRh#%mlhfiC;4OQpj6FPn0#axH!(lFb1br=wnM~bdT{1(=Fvt
zyBm6uyt>W@w@~z)`iZTWHn9NPWtzPK&!TIYSneW~3GBKYL3ufinmFxaEs_Q2VKmi8
zcj=+0QVHKOdQZ$n7onT@NL)JBm9Wjy!bPMg_C2g4(DOfiT4K)q7C-J~yt|nzzj=kt
z#C8c=TzV*j|7q48*x++K`Z2Ph7a6Cu8e2=l8$Xc+)VYG+QTlbs0DQNSBMe;{;%Bj+
zjb`reUXJzJoe$cEy1U766A{D6;*wGL9m2;=vQp{1R<rBT_rxB`ysjKM^J#kY{pEzH
zc1CtD-Lw9Uy$!kxiMaMFS!`vyIf(P4z;Fz9bRxqo7*loK0>9HFdPkvRj8yo3gIkHK
zi){eOC)4;mbhBbLpN#b?e3IfXa+OU?bmlZG{YaLs1}PV!I;v*NiMQrv#E;63-6V`d
z@L7^~VTgP~Cz4m!GS9&L45KpHf+$`O-5TQF!vbV4$EZY;BAJx`XksuY`GLx#^+d%!
z0N?cRoqT<1DvMtvUQ5s%l=6+L+^io{q%Z{vVn3lLB*89eif#cmmsFzZ_vARou<7Yc
z<zz%Mk?#U|MKYpmLEg*w1=~Eiu5{K8#R8|<`lpO};-{Bm7=3rb+7MR8V=VI$x{raB
z$VvH6q;05ev`6Pb+IRS;#9w3=_Ofd4sBQVMo<qB*v6oTXLAaFMg=tl!7%w_TM>WPH
zNneb=32F?ZS$D<JhxIZFt*2-+X-xO~j6xyUPBL6FKy9+_MuQ@`w4oH{nO~lclw?Rl
zMVn+o29Y&8RjzT;)2LXGY`xH(Wc^38CDRPP*isWS2EP^9;}BOJ-y7r$(xXVOjG+21
z?Q9QuKH?wEyYrCWDFW{^f26j9_?=)pB+o>xw~*e3W8Y1kEN}%iJ(-I%fNq<&{w|a>
zW%(XmyM{(~x7X_s8rt1nJ2Jda%%g<1MX6(UdfU9R#+<2W%i$LDx3bOO%N`llJuEmp
ztZ!Ikdwb`uVUgWKyV}Dd+eLMa2<{#h6`3c-JH!?*RZO8?w#7+PM?|#^YZn&UHkaLA
zJ}R<%SY(e-dzqLE!)%^eV?M32g(Qz|x6@WR`t(lQ^kg9&LM26ry_+-<J$RRGPeO8s
zcI_I~)h8x!x2<=An2U#PEj(h%T(`YQl`hoYE4Z6Im?omygoj30&Cpez7{52RM%m&A
z*aHHJ=PwXFIF*}^E(*r1Oy$-$MTUC8J$jNlJlI|-v`1KYc&I&V`KTUUgV{{+7~iaJ
ziM?W41iD?!9bdIEd7|77y2X6!;<nb;g9C7G*d7+a{v#wPX7*IKXPz;0*0}9Ro{1Q?
zVz;(_Xk}=uy?15v^>@47&l?l?+U=yrG(Y!7)8@PHk1lC*&k^0%=Dy6cj%?=8iil8q
s+id@r-zO%AoBN_fF>jN&pGg~YC5wCF^wImuxZ7=cV(yi356|=e0EL``IRF3v

diff --git a/internat/fr/kicad.po b/internat/fr/kicad.po
index 9655870a2b..74056cc77a 100644
--- a/internat/fr/kicad.po
+++ b/internat/fr/kicad.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: kicad\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-02-01 11:23+0100\n"
-"PO-Revision-Date: 2010-02-01 11:24+0100\n"
+"POT-Creation-Date: 2010-02-03 08:57+0100\n"
+"PO-Revision-Date: 2010-02-03 09:01+0100\n"
 "Last-Translator: \n"
 "Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n"
 "MIME-Version: 1.0\n"
@@ -1931,216 +1931,23 @@ msgstr "Nb Segms"
 msgid "Error: Unexpected end of file !"
 msgstr "Erreur: Fin de fichier inattendue !"
 
-#: pcbnew/pcbframe.cpp:114
-msgid "Through Via"
-msgstr "Via Traversante"
-
-#: pcbnew/pcbframe.cpp:114
-msgid "Show through vias"
-msgstr "Afficher vias traversantes"
-
-#: pcbnew/pcbframe.cpp:115
-msgid "Bl/Buried Via"
-msgstr "Via Av/Enterrée"
-
-#: pcbnew/pcbframe.cpp:115
-msgid "Show blind or buried vias"
-msgstr "Afficher vias enterrées/aveugles"
-
-#: pcbnew/pcbframe.cpp:116
-msgid "Micro Via"
-msgstr "Micro Via"
-
-#: pcbnew/pcbframe.cpp:116
-msgid "Show micro vias"
-msgstr "Afficher micro vias"
-
-#: pcbnew/pcbframe.cpp:117
-msgid "Ratsnest"
-msgstr "Chevelu"
-
-#: pcbnew/pcbframe.cpp:117
-msgid "Show unconnected nets as a ratsnest"
-msgstr "Afficher les connexions maquantes comme chevelul"
-
-#: pcbnew/pcbframe.cpp:119
-msgid "Pads Front"
-msgstr "Pad Dessus"
-
-#: pcbnew/pcbframe.cpp:119
-msgid "Show footprint pads on board's front"
-msgstr "Afficher les pads placés sur le dessus du ciruit imprimé"
-
-#: pcbnew/pcbframe.cpp:120
-msgid "Pads Back"
-msgstr "Pads Dessous"
-
-#: pcbnew/pcbframe.cpp:120
-msgid "Show footprint pads on board's back"
-msgstr "Afficher les pads placés sur le dessous du ciruit imprimé"
-
-#: pcbnew/pcbframe.cpp:122
-msgid "Text Front"
-msgstr "Texte Dessus"
-
-#: pcbnew/pcbframe.cpp:122
-#: pcbnew/pcbframe.cpp:123
-msgid "Show footprint text on board's back"
-msgstr "Afficher les textes sur modules situés sur le dessous du ciruit imprimé"
-
-#: pcbnew/pcbframe.cpp:123
-msgid "Text Back"
-msgstr "Texte Dessous"
-
-#: pcbnew/pcbframe.cpp:124
-msgid "Hidden Text"
-msgstr "Texte Invisible"
-
-#: pcbnew/pcbframe.cpp:124
-msgid "Show footprint text marked as invisible"
-msgstr "Afficher les textes sur modules marqués comme invisibles"
-
-#: pcbnew/pcbframe.cpp:126
-msgid "Anchors"
-msgstr "Ancres"
-
-#: pcbnew/pcbframe.cpp:126
-msgid "Show footprint and text origins as a cross"
-msgstr "Afficher origines des textes et modules par une croix"
-
-#: pcbnew/pcbframe.cpp:127
-msgid "Show the (x,y) grid dots"
-msgstr "Afficher les points de grille"
-
-#: pcbnew/pcbframe.cpp:128
-msgid "No-Connects"
-msgstr "Non Connectés"
-
-#: pcbnew/pcbframe.cpp:128
-msgid "Show a marker on pads which have no net connected"
-msgstr "Afficher un marqueur sur pads qui ne sont pad connectés"
-
-#: pcbnew/pcbframe.cpp:129
-msgid "Modules Front"
-msgstr "Modules Dessus"
-
-#: pcbnew/pcbframe.cpp:129
-msgid "Show footprints that are on board's front"
-msgstr "Afficher les modules situés sur le dessus du ciruit imprimé"
-
-#: pcbnew/pcbframe.cpp:130
-msgid "Modules Back"
-msgstr "Modules Dessous"
-
-#: pcbnew/pcbframe.cpp:130
-msgid "Show footprints that are on board's back"
-msgstr "Afficher les modules situés sur le dessous du ciruit imprimé"
-
-#: pcbnew/pcbframe.cpp:131
-msgid "Values"
-msgstr "Valeurs"
-
-#: pcbnew/pcbframe.cpp:131
-msgid "Show footprint's values"
-msgstr "Afficher les valeurs des modules"
-
-#: pcbnew/pcbframe.cpp:132
-msgid "References"
-msgstr "Références"
-
-#: pcbnew/pcbframe.cpp:132
-msgid "Show footprint's references"
-msgstr "Afficher les références des modules"
-
-#: pcbnew/pcbframe.cpp:185
-msgid "Show All Cu"
-msgstr "Afficher toutes couches cuivre"
-
-#: pcbnew/pcbframe.cpp:188
-msgid "Hide All Cu"
-msgstr "Cacher Cu"
-
-#: pcbnew/pcbframe.cpp:262
-msgid "Front copper layer"
-msgstr "Couche cuivre dessus"
-
-#: pcbnew/pcbframe.cpp:270
-msgid "An innner copper layer"
-msgstr "Couche interne"
-
-#: pcbnew/pcbframe.cpp:278
-msgid "Back copper layer"
-msgstr "Couche cuivre dessous"
-
-#: pcbnew/pcbframe.cpp:286
-msgid "Adhesive on board's front"
-msgstr "Afficher couche adhésive situés sur le dessus du ciruit imprimé"
-
-#: pcbnew/pcbframe.cpp:287
-msgid "Adhesive on board's back"
-msgstr "Couche adhésive sur le dessous du circuit imprimé"
-
-#: pcbnew/pcbframe.cpp:288
-msgid "Solder paste on board's front"
-msgstr "Couche de pâte à souder sur dessus du circuit imprimé"
-
-#: pcbnew/pcbframe.cpp:289
-msgid "Solder paste on board's back"
-msgstr "Couche de pate à souder sur dessous du circuit imprimé"
-
-#: pcbnew/pcbframe.cpp:290
-msgid "Silkscreen on board's front"
-msgstr "Sérigraphie sur le dessus du ciruit imprimé"
-
-#: pcbnew/pcbframe.cpp:291
-msgid "Silkscreen on board's back"
-msgstr "Sérigraphie sur le dessous du ciruit imprimé "
-
-#: pcbnew/pcbframe.cpp:292
-msgid "Solder mask on board's front"
-msgstr "Couche masque soudure sur le dessus du ciruit imprimée"
-
-#: pcbnew/pcbframe.cpp:293
-msgid "Solder mask on board's back"
-msgstr "Couche masque soudure sur le dessous du ciruit imprimée"
-
-#: pcbnew/pcbframe.cpp:294
-msgid "Explanatory drawings"
-msgstr "Couche dessins explicatifs"
-
-#: pcbnew/pcbframe.cpp:295
-msgid "Explanatory comments"
-msgstr "Couche commentaires"
-
-#: pcbnew/pcbframe.cpp:296
-msgid "TDB"
-msgstr ""
-
-#: pcbnew/pcbframe.cpp:297
-msgid "TBD"
-msgstr ""
-
-#: pcbnew/pcbframe.cpp:298
-msgid "Board's perimeter definition"
-msgstr "Couche de définition des contours du circuit imprimé"
-
-#: pcbnew/pcbframe.cpp:675
+#: pcbnew/pcbframe.cpp:335
 msgid "Visibles"
 msgstr "Visibles"
 
-#: pcbnew/pcbframe.cpp:766
+#: pcbnew/pcbframe.cpp:426
 msgid "Board modified, Save before exit ?"
 msgstr "Circuit Imprimé modifié,  Sauver avant de quitter ?"
 
-#: pcbnew/pcbframe.cpp:767
+#: pcbnew/pcbframe.cpp:427
 msgid "Confirmation"
 msgstr "Confirmation"
 
-#: pcbnew/pcbframe.cpp:806
+#: pcbnew/pcbframe.cpp:466
 msgid "3D Frame already opened"
 msgstr "Fenêtre 3D déjà ouverte"
 
-#: pcbnew/pcbframe.cpp:810
+#: pcbnew/pcbframe.cpp:470
 msgid "3D Viewer"
 msgstr "Visu 3D"
 
@@ -2301,6 +2108,199 @@ msgstr "Pour une liste de pads non connecté, clic droit pour ouvrir un menu"
 msgid "Unconnected"
 msgstr "Non connecté"
 
+#: pcbnew/class_pcb_layer_widget.cpp:69
+msgid "Through Via"
+msgstr "Via Traversante"
+
+#: pcbnew/class_pcb_layer_widget.cpp:69
+msgid "Show through vias"
+msgstr "Afficher vias traversantes"
+
+#: pcbnew/class_pcb_layer_widget.cpp:70
+msgid "Bl/Buried Via"
+msgstr "Via Av/Enterrée"
+
+#: pcbnew/class_pcb_layer_widget.cpp:70
+msgid "Show blind or buried vias"
+msgstr "Afficher vias enterrées/aveugles"
+
+#: pcbnew/class_pcb_layer_widget.cpp:71
+msgid "Micro Via"
+msgstr "Micro Via"
+
+#: pcbnew/class_pcb_layer_widget.cpp:71
+msgid "Show micro vias"
+msgstr "Afficher micro vias"
+
+#: pcbnew/class_pcb_layer_widget.cpp:72
+msgid "Ratsnest"
+msgstr "Chevelu"
+
+#: pcbnew/class_pcb_layer_widget.cpp:72
+msgid "Show unconnected nets as a ratsnest"
+msgstr "Afficher les connexions maquantes comme chevelul"
+
+#: pcbnew/class_pcb_layer_widget.cpp:74
+msgid "Pads Front"
+msgstr "Pad Dessus"
+
+#: pcbnew/class_pcb_layer_widget.cpp:74
+msgid "Show footprint pads on board's front"
+msgstr "Afficher les pads placés sur le dessus du ciruit imprimé"
+
+#: pcbnew/class_pcb_layer_widget.cpp:75
+msgid "Pads Back"
+msgstr "Pads Dessous"
+
+#: pcbnew/class_pcb_layer_widget.cpp:75
+msgid "Show footprint pads on board's back"
+msgstr "Afficher les pads placés sur le dessous du ciruit imprimé"
+
+#: pcbnew/class_pcb_layer_widget.cpp:77
+msgid "Text Front"
+msgstr "Texte Dessus"
+
+#: pcbnew/class_pcb_layer_widget.cpp:77
+#: pcbnew/class_pcb_layer_widget.cpp:78
+msgid "Show footprint text on board's back"
+msgstr "Afficher les textes sur modules situés sur le dessous du ciruit imprimé"
+
+#: pcbnew/class_pcb_layer_widget.cpp:78
+msgid "Text Back"
+msgstr "Texte Dessous"
+
+#: pcbnew/class_pcb_layer_widget.cpp:79
+msgid "Hidden Text"
+msgstr "Texte Invisible"
+
+#: pcbnew/class_pcb_layer_widget.cpp:79
+msgid "Show footprint text marked as invisible"
+msgstr "Afficher les textes sur modules marqués comme invisibles"
+
+#: pcbnew/class_pcb_layer_widget.cpp:81
+msgid "Anchors"
+msgstr "Ancres"
+
+#: pcbnew/class_pcb_layer_widget.cpp:81
+msgid "Show footprint and text origins as a cross"
+msgstr "Afficher origines des textes et modules par une croix"
+
+#: pcbnew/class_pcb_layer_widget.cpp:82
+msgid "Show the (x,y) grid dots"
+msgstr "Afficher les points de grille"
+
+#: pcbnew/class_pcb_layer_widget.cpp:83
+msgid "No-Connects"
+msgstr "Non Connectés"
+
+#: pcbnew/class_pcb_layer_widget.cpp:83
+msgid "Show a marker on pads which have no net connected"
+msgstr "Afficher un marqueur sur pads qui ne sont pad connectés"
+
+#: pcbnew/class_pcb_layer_widget.cpp:84
+msgid "Modules Front"
+msgstr "Modules Dessus"
+
+#: pcbnew/class_pcb_layer_widget.cpp:84
+msgid "Show footprints that are on board's front"
+msgstr "Afficher les modules situés sur le dessus du ciruit imprimé"
+
+#: pcbnew/class_pcb_layer_widget.cpp:85
+msgid "Modules Back"
+msgstr "Modules Dessous"
+
+#: pcbnew/class_pcb_layer_widget.cpp:85
+msgid "Show footprints that are on board's back"
+msgstr "Afficher les modules situés sur le dessous du ciruit imprimé"
+
+#: pcbnew/class_pcb_layer_widget.cpp:86
+msgid "Values"
+msgstr "Valeurs"
+
+#: pcbnew/class_pcb_layer_widget.cpp:86
+msgid "Show footprint's values"
+msgstr "Afficher les valeurs des modules"
+
+#: pcbnew/class_pcb_layer_widget.cpp:87
+msgid "References"
+msgstr "Références"
+
+#: pcbnew/class_pcb_layer_widget.cpp:87
+msgid "Show footprint's references"
+msgstr "Afficher les références des modules"
+
+#: pcbnew/class_pcb_layer_widget.cpp:140
+msgid "Show All Cu"
+msgstr "Afficher toutes couches cuivre"
+
+#: pcbnew/class_pcb_layer_widget.cpp:143
+msgid "Hide All Cu"
+msgstr "Cacher Cu"
+
+#: pcbnew/class_pcb_layer_widget.cpp:217
+msgid "Front copper layer"
+msgstr "Couche cuivre dessus"
+
+#: pcbnew/class_pcb_layer_widget.cpp:225
+msgid "An innner copper layer"
+msgstr "Couche interne"
+
+#: pcbnew/class_pcb_layer_widget.cpp:233
+msgid "Back copper layer"
+msgstr "Couche cuivre dessous"
+
+#: pcbnew/class_pcb_layer_widget.cpp:241
+msgid "Adhesive on board's front"
+msgstr "Afficher couche adhésive situés sur le dessus du ciruit imprimé"
+
+#: pcbnew/class_pcb_layer_widget.cpp:242
+msgid "Adhesive on board's back"
+msgstr "Couche adhésive sur le dessous du circuit imprimé"
+
+#: pcbnew/class_pcb_layer_widget.cpp:243
+msgid "Solder paste on board's front"
+msgstr "Couche de pâte à souder sur dessus du circuit imprimé"
+
+#: pcbnew/class_pcb_layer_widget.cpp:244
+msgid "Solder paste on board's back"
+msgstr "Couche de pate à souder sur dessous du circuit imprimé"
+
+#: pcbnew/class_pcb_layer_widget.cpp:245
+msgid "Silkscreen on board's front"
+msgstr "Sérigraphie sur le dessus du ciruit imprimé"
+
+#: pcbnew/class_pcb_layer_widget.cpp:246
+msgid "Silkscreen on board's back"
+msgstr "Sérigraphie sur le dessous du ciruit imprimé "
+
+#: pcbnew/class_pcb_layer_widget.cpp:247
+msgid "Solder mask on board's front"
+msgstr "Couche masque soudure sur le dessus du ciruit imprimée"
+
+#: pcbnew/class_pcb_layer_widget.cpp:248
+msgid "Solder mask on board's back"
+msgstr "Couche masque soudure sur le dessous du ciruit imprimée"
+
+#: pcbnew/class_pcb_layer_widget.cpp:249
+msgid "Explanatory drawings"
+msgstr "Couche dessins explicatifs"
+
+#: pcbnew/class_pcb_layer_widget.cpp:250
+msgid "Explanatory comments"
+msgstr "Couche commentaires"
+
+#: pcbnew/class_pcb_layer_widget.cpp:251
+msgid "TDB"
+msgstr ""
+
+#: pcbnew/class_pcb_layer_widget.cpp:252
+msgid "TBD"
+msgstr ""
+
+#: pcbnew/class_pcb_layer_widget.cpp:253
+msgid "Board's perimeter definition"
+msgstr "Couche de définition des contours du circuit imprimé"
+
 #: pcbnew/moduleframe.cpp:254
 msgid "Module Editor: Module modified! Continue?"
 msgstr "Editeur de Module: Module modifié!  Continuer ?"
@@ -3958,28 +3958,28 @@ msgstr "Contours_PCB"
 msgid "BAD INDEX"
 msgstr "BAD INDEX"
 
-#: pcbnew/class_board.cpp:907
+#: pcbnew/class_board.cpp:893
 #: pcbnew/class_module.cpp:867
 msgid "Pads"
 msgstr "Pads"
 
-#: pcbnew/class_board.cpp:910
+#: pcbnew/class_board.cpp:896
 msgid "Vias"
 msgstr "Vias"
 
-#: pcbnew/class_board.cpp:913
+#: pcbnew/class_board.cpp:899
 msgid "Nodes"
 msgstr "Nodes"
 
-#: pcbnew/class_board.cpp:916
+#: pcbnew/class_board.cpp:902
 msgid "Nets"
 msgstr "Nets"
 
-#: pcbnew/class_board.cpp:924
+#: pcbnew/class_board.cpp:910
 msgid "Links"
 msgstr "Liens"
 
-#: pcbnew/class_board.cpp:927
+#: pcbnew/class_board.cpp:913
 msgid "Connect"
 msgstr "Connect"
 
@@ -7022,7 +7022,7 @@ msgstr "Epaiss. ligne par défaut"
 msgid "Plot: %s\n"
 msgstr "Trace: %s\n"
 
-#: eeschema/libframe.cpp:292
+#: eeschema/libframe.cpp:291
 msgid ""
 "Component was modified!\n"
 "Discard changes?"
@@ -7030,7 +7030,7 @@ msgstr ""
 "Le composant a été modifié\n"
 "Perdre les  changements"
 
-#: eeschema/libframe.cpp:305
+#: eeschema/libframe.cpp:304
 #, c-format
 msgid ""
 "Library \"%s\" was modified!\n"
@@ -7039,40 +7039,40 @@ msgstr ""
 "Librairie \"%s\"  modifiée!\n"
 "Perdre les changements ?"
 
-#: eeschema/libframe.cpp:415
+#: eeschema/libframe.cpp:414
 #, c-format
 msgid "Part %c"
 msgstr "Composant %c"
 
-#: eeschema/libframe.cpp:677
+#: eeschema/libframe.cpp:676
 msgid "Add pin"
 msgstr "Addition de \"pins\""
 
-#: eeschema/libframe.cpp:681
+#: eeschema/libframe.cpp:680
 msgid "Set pin options"
 msgstr "Choix options de pin"
 
-#: eeschema/libframe.cpp:698
+#: eeschema/libframe.cpp:697
 msgid "Add rectangle"
 msgstr "Ajout de rectangle"
 
-#: eeschema/libframe.cpp:702
+#: eeschema/libframe.cpp:701
 msgid "Add circle"
 msgstr "Ajout de cercle"
 
-#: eeschema/libframe.cpp:706
+#: eeschema/libframe.cpp:705
 msgid "Add arc"
 msgstr "Ajout d'arc"
 
-#: eeschema/libframe.cpp:710
+#: eeschema/libframe.cpp:709
 msgid "Add line"
 msgstr "Addition de lignes"
 
-#: eeschema/libframe.cpp:714
+#: eeschema/libframe.cpp:713
 msgid "Set anchor position"
 msgstr "Ajuster Position Ancre"
 
-#: eeschema/libframe.cpp:724
+#: eeschema/libframe.cpp:723
 msgid "Export"
 msgstr "Exporter"
 
@@ -7111,19 +7111,19 @@ msgstr "Labels"
 msgid "Hierar."
 msgstr "Hiérar."
 
-#: eeschema/eelayer.cpp:239
+#: eeschema/eelayer.cpp:238
 msgid "White"
 msgstr "Blanc"
 
-#: eeschema/eelayer.cpp:240
+#: eeschema/eelayer.cpp:239
 msgid "Black"
 msgstr "Noir"
 
-#: eeschema/eelayer.cpp:243
+#: eeschema/eelayer.cpp:242
 msgid "Background Color:"
 msgstr "Couleur du Fond:"
 
-#: eeschema/eelayer.cpp:275
+#: eeschema/eelayer.cpp:274
 msgid "Apply"
 msgstr "Appliquer"
 
@@ -8361,27 +8361,6 @@ msgstr "> %-28.28s PinSheet %-7.7s (Feuille %s) pos: %3.3f, %3.3f\n"
 msgid "#End labels\n"
 msgstr "#End labels\n"
 
-#: eeschema/eeschema.cpp:131
-msgid "Eeschema is already running, Continue?"
-msgstr "Eeschema est en cours d'exécution. Continuer ?"
-
-#: eeschema/class_libentry.cpp:59
-msgid "none"
-msgstr "rien"
-
-#: eeschema/class_libentry.cpp:321
-msgid "value"
-msgstr "valeur"
-
-#: eeschema/class_libentry.cpp:321
-msgid "reference"
-msgstr "référence"
-
-#: eeschema/class_libentry.cpp:323
-#, c-format
-msgid "An attempt was made to remove the %s field from component %s in library %s."
-msgstr "Une tentative a été faite pour supprimer le champ %s du composant %s en librairie %s."
-
 #: eeschema/tool_sch.cpp:34
 #: eeschema/menubar.cpp:45
 msgid "New schematic project"
@@ -8412,6 +8391,7 @@ msgid "Navigate schematic hierarchy"
 msgstr "Navigateur de hiérarchie"
 
 #: eeschema/tool_sch.cpp:84
+#: eeschema/menubar.cpp:92
 msgid "Print schematic"
 msgstr "Impression des feuilles de schéma"
 
@@ -8464,12 +8444,12 @@ msgid "Place a bus"
 msgstr "Placer un bus"
 
 #: eeschema/tool_sch.cpp:179
-#: eeschema/menubar.cpp:294
+#: eeschema/menubar.cpp:296
 msgid "Place a wire to bus entry"
 msgstr "Placer une Entrée de Bus (type fil vers bus)"
 
 #: eeschema/tool_sch.cpp:183
-#: eeschema/menubar.cpp:301
+#: eeschema/menubar.cpp:303
 msgid "Place a bus to bus entry"
 msgstr "Placer une Entrée de Bus (type bus vers bus)"
 
@@ -8478,7 +8458,7 @@ msgid "Place no connect flag"
 msgstr "Placer symbole de non connexion"
 
 #: eeschema/tool_sch.cpp:192
-#: eeschema/menubar.cpp:313
+#: eeschema/menubar.cpp:315
 msgid "Place net name"
 msgstr "Place  nom de net"
 
@@ -8495,7 +8475,7 @@ msgid "Place a junction"
 msgstr "Placer une jonction"
 
 #: eeschema/tool_sch.cpp:206
-#: eeschema/menubar.cpp:336
+#: eeschema/menubar.cpp:338
 msgid "Place a hierarchical label. This label will be seen as a pin sheet in the sheet symbol"
 msgstr "Placer un label hiérachique. Ce label sera vu comme une pin dans la feuille mère symbole"
 
@@ -8524,7 +8504,7 @@ msgid "Turn grid off"
 msgstr "Ne pas afficher la grille"
 
 #: eeschema/tool_sch.cpp:270
-#: eeschema/schframe.cpp:497
+#: eeschema/schframe.cpp:505
 msgid "Show hidden pins"
 msgstr "Force affichage des pins invisibles"
 
@@ -8532,6 +8512,51 @@ msgstr "Force affichage des pins invisibles"
 msgid "HV orientation for wires and bus"
 msgstr "Force direction H, V  pour les fils et bus"
 
+#: eeschema/eeschema_config.cpp:333
+msgid "Save Project Settings"
+msgstr "Sauver Optionsr Projet"
+
+#: eeschema/eeschema.cpp:131
+msgid "Eeschema is already running, Continue?"
+msgstr "Eeschema est en cours d'exécution. Continuer ?"
+
+#: eeschema/class_libentry.cpp:59
+msgid "none"
+msgstr "rien"
+
+#: eeschema/class_libentry.cpp:321
+msgid "value"
+msgstr "valeur"
+
+#: eeschema/class_libentry.cpp:321
+msgid "reference"
+msgstr "référence"
+
+#: eeschema/class_libentry.cpp:323
+#, c-format
+msgid "An attempt was made to remove the %s field from component %s in library %s."
+msgstr "Une tentative a été faite pour supprimer le champ %s du composant %s en librairie %s."
+
+#: eeschema/schframe.cpp:358
+msgid "Schematic modified, Save before exit ?"
+msgstr "Schématique modifiée,  Sauver avant de quitter ?"
+
+#: eeschema/schframe.cpp:493
+msgid "Draw wires and buses in any direction"
+msgstr "Tracer les fils et bus avec direction quelconque"
+
+#: eeschema/schframe.cpp:494
+msgid "Draw horizontal and vertical wires and buses only"
+msgstr "Autoriser fils et bus verticaux et horizontaux seulement"
+
+#: eeschema/schframe.cpp:504
+msgid "Do not show hidden pins"
+msgstr "Ne pas affichager les pins invisibles"
+
+#: eeschema/schframe.cpp:596
+msgid "Schematic"
+msgstr "Schématique"
+
 #: eeschema/find.cpp:210
 msgid "Pin "
 msgstr "Pin "
@@ -8745,279 +8770,255 @@ msgstr "Ouvrir un projet schématique existant"
 msgid "Open a recent opened schematic project"
 msgstr "Ouvrir un projet schématique récemment ouvert"
 
-#: eeschema/menubar.cpp:69
+#: eeschema/menubar.cpp:70
 msgid "&Save Whole Schematic Project\tCtrl+S"
 msgstr "Sauver Tout  le Projet Schématique\tCtrl+S"
 
-#: eeschema/menubar.cpp:70
+#: eeschema/menubar.cpp:71
 msgid "Save all sheets in the schematic project"
 msgstr "Sauver toutes les feuilles du projet schématique"
 
-#: eeschema/menubar.cpp:74
-msgid "&Save Current Sheet Only"
-msgstr "Sauver la Feuille &Courante:"
-
 #: eeschema/menubar.cpp:75
+msgid "Save &Current Sheet Only"
+msgstr "Sauver la Feuille &Courante Seule"
+
+#: eeschema/menubar.cpp:76
 msgid "Save only current schematic sheet"
 msgstr "Sauver seulement la feuille active"
 
-#: eeschema/menubar.cpp:81
+#: eeschema/menubar.cpp:82
 msgid "Save Current Sheet &as\tShift+Ctrl+S"
 msgstr "Sauver Feuille Courante &sous\tShift+Ctrl+S"
 
-#: eeschema/menubar.cpp:82
+#: eeschema/menubar.cpp:83
 msgid "Save current schematic sheet as..."
 msgstr "Sauver la feuille active sous ..."
 
-#: eeschema/menubar.cpp:90
+#: eeschema/menubar.cpp:91
 #, fuzzy
 msgid "P&rint\tCtrl+P"
 msgstr "&Ouvrir\tCtrl+O"
 
-#: eeschema/menubar.cpp:91
-msgid "Print schematic sheet"
-msgstr "Impression des feuilles de schéma"
-
-#: eeschema/menubar.cpp:98
+#: eeschema/menubar.cpp:99
 msgid "Plot PostScript"
 msgstr "Tracé Postscript"
 
-#: eeschema/menubar.cpp:99
+#: eeschema/menubar.cpp:100
 msgid "Plot schematic sheet in PostScript format"
 msgstr "Tracer les feuilles schématiques en format Postscript"
 
-#: eeschema/menubar.cpp:104
+#: eeschema/menubar.cpp:105
 msgid "Plot HPGL"
 msgstr "Tracé HPGL"
 
-#: eeschema/menubar.cpp:105
+#: eeschema/menubar.cpp:106
 msgid "Plot schematic sheet in HPGL format"
 msgstr "Tracer les feuilles schématiques en format HPGL"
 
-#: eeschema/menubar.cpp:110
+#: eeschema/menubar.cpp:111
 msgid "Plot SVG"
 msgstr "Tracé  SVG"
 
-#: eeschema/menubar.cpp:111
+#: eeschema/menubar.cpp:112
 msgid "Plot schematic sheet in SVG format"
 msgstr "Tracer les feuilles schématiques en format SVG"
 
-#: eeschema/menubar.cpp:116
+#: eeschema/menubar.cpp:117
 msgid "Plot DXF"
 msgstr "Tracé DXF"
 
-#: eeschema/menubar.cpp:117
+#: eeschema/menubar.cpp:118
 msgid "Plot schematic sheet in DXF format"
 msgstr "Tracer les feuilles schématiques en format DXF"
 
-#: eeschema/menubar.cpp:125
+#: eeschema/menubar.cpp:126
 msgid "Plot to Clipboard"
 msgstr "Tracé dans Presse papier"
 
-#: eeschema/menubar.cpp:126
+#: eeschema/menubar.cpp:127
 msgid "Export drawings to clipboard"
 msgstr " Exporter le dessin dans le presse-papier"
 
-#: eeschema/menubar.cpp:134
+#: eeschema/menubar.cpp:135
 msgid "Plot schematic sheet in HPGL, PostScript or SVG format"
 msgstr "Tracer les feuilles schématiques en format HPGL,  POSTSCRIPT ou SVG"
 
-#: eeschema/menubar.cpp:141
+#: eeschema/menubar.cpp:143
 msgid "Quit EESchema"
 msgstr "Quitter EESchema"
 
-#: eeschema/menubar.cpp:182
+#: eeschema/menubar.cpp:184
 msgid "&Find\tCtrl+F"
 msgstr "&Chercher\tCtrl+F"
 
-#: eeschema/menubar.cpp:191
+#: eeschema/menubar.cpp:193
 msgid "Backannotate"
 msgstr "Rétro Annotation"
 
-#: eeschema/menubar.cpp:192
+#: eeschema/menubar.cpp:194
 msgid "Back annotated footprint fields"
 msgstr "Rétroannotation des champs modules"
 
-#: eeschema/menubar.cpp:238
+#: eeschema/menubar.cpp:240
 msgid "Fit the schematic sheet on the screen"
 msgstr "Ajuster la feuille de schéma à l'écran"
 
-#: eeschema/menubar.cpp:254
+#: eeschema/menubar.cpp:256
 msgid "Redraw the schematic view"
 msgstr "Redessin de l'écran"
 
-#: eeschema/menubar.cpp:268
+#: eeschema/menubar.cpp:270
 msgid "&Component"
 msgstr "&Composant"
 
-#: eeschema/menubar.cpp:269
+#: eeschema/menubar.cpp:271
 msgid "Place the component"
 msgstr "Placer le Composant"
 
-#: eeschema/menubar.cpp:274
+#: eeschema/menubar.cpp:276
 msgid "&Power port"
 msgstr "Power Symbole"
 
-#: eeschema/menubar.cpp:275
+#: eeschema/menubar.cpp:277
 msgid "Place the power port"
 msgstr "Placer le Symbole Power"
 
-#: eeschema/menubar.cpp:280
+#: eeschema/menubar.cpp:282
 msgid "&Wire"
 msgstr "&Fil"
 
-#: eeschema/menubar.cpp:281
+#: eeschema/menubar.cpp:283
 msgid "Place the wire"
 msgstr "Place fil"
 
-#: eeschema/menubar.cpp:286
+#: eeschema/menubar.cpp:288
 msgid "&Bus"
 msgstr "&Bus"
 
-#: eeschema/menubar.cpp:287
+#: eeschema/menubar.cpp:289
 msgid "Place bus"
 msgstr "Place bus"
 
-#: eeschema/menubar.cpp:293
+#: eeschema/menubar.cpp:295
 msgid "W&ire to bus entry"
 msgstr "Entrées de bus (type fil vers bus)"
 
-#: eeschema/menubar.cpp:300
+#: eeschema/menubar.cpp:302
 msgid "B&us to bus entry"
 msgstr "Entrées de bus (type bus vers bus)"
 
-#: eeschema/menubar.cpp:306
+#: eeschema/menubar.cpp:308
 msgid "No connect flag"
 msgstr "Symbole de Non Connexion"
 
-#: eeschema/menubar.cpp:307
+#: eeschema/menubar.cpp:309
 msgid "Place a no connect flag"
 msgstr "Placer un Symbole de Non Connexion"
 
-#: eeschema/menubar.cpp:312
+#: eeschema/menubar.cpp:314
 msgid "Net name"
 msgstr "Net Name"
 
-#: eeschema/menubar.cpp:318
+#: eeschema/menubar.cpp:320
 msgid "Global label"
 msgstr "Label Global"
 
-#: eeschema/menubar.cpp:319
+#: eeschema/menubar.cpp:321
 msgid "Place a global label. Warning: all global labels with the same name are connected in whole hierarchy"
 msgstr "Placer un label global. Attention: tous les labels globaux avec le même nom sont connectés dans toute la hiérarchie"
 
-#: eeschema/menubar.cpp:325
+#: eeschema/menubar.cpp:327
 msgid "Junction"
 msgstr "Jonction"
 
-#: eeschema/menubar.cpp:326
+#: eeschema/menubar.cpp:328
 msgid "Place junction"
 msgstr "Place jonction"
 
-#: eeschema/menubar.cpp:335
+#: eeschema/menubar.cpp:337
 msgid "Hierarchical label"
 msgstr "Label Hiérarchique"
 
-#: eeschema/menubar.cpp:343
+#: eeschema/menubar.cpp:345
 msgid "Hierarchical sheet"
 msgstr "Feuille Hiérrachique"
 
-#: eeschema/menubar.cpp:344
+#: eeschema/menubar.cpp:346
 msgid "Create a hierarchical sheet"
 msgstr "Créer une Feuille Hiérachique"
 
-#: eeschema/menubar.cpp:350
+#: eeschema/menubar.cpp:352
 msgid "Import Hierarchical Label"
 msgstr "Importer Label Hiérarchique"
 
-#: eeschema/menubar.cpp:351
+#: eeschema/menubar.cpp:353
 msgid "Place a pin sheet created by importing a hierarchical label from sheet"
 msgstr "Placer une pin hiérarchique créée par importation d'un label hiérarchique de la feuille"
 
-#: eeschema/menubar.cpp:358
+#: eeschema/menubar.cpp:360
 msgid "Add Hierarchical Pin to Sheet"
 msgstr "Ajouter Pins de Hiérarchie dans feuille"
 
-#: eeschema/menubar.cpp:359
+#: eeschema/menubar.cpp:361
 msgid "Place a hierarchical pin to sheet"
 msgstr "Addition de pins de hiérarchie dans les feuilles symboles de hiérarchie"
 
-#: eeschema/menubar.cpp:369
+#: eeschema/menubar.cpp:371
 msgid "Graphic line or polygon"
 msgstr "Ligne ou polygone graphique"
 
-#: eeschema/menubar.cpp:370
+#: eeschema/menubar.cpp:372
 msgid "Place graphic lines or polygons"
 msgstr "Placer lignes ou  polygones graphiques"
 
-#: eeschema/menubar.cpp:377
+#: eeschema/menubar.cpp:379
 msgid "Graphic text"
 msgstr "Texte graphique"
 
-#: eeschema/menubar.cpp:378
+#: eeschema/menubar.cpp:380
 msgid "Place graphic text for comment"
 msgstr "Placer textes graphiques en commentaire."
 
-#: eeschema/menubar.cpp:392
+#: eeschema/menubar.cpp:394
 msgid "Library preferences"
 msgstr "Préférences pour Librairie"
 
-#: eeschema/menubar.cpp:397
+#: eeschema/menubar.cpp:399
 msgid "&Colors"
 msgstr "&Couleurs"
 
-#: eeschema/menubar.cpp:398
+#: eeschema/menubar.cpp:400
 msgid "Color preferences"
 msgstr "Préférences de couleurs"
 
-#: eeschema/menubar.cpp:403
+#: eeschema/menubar.cpp:405
 msgid "&Options"
 msgstr "&Options"
 
-#: eeschema/menubar.cpp:404
+#: eeschema/menubar.cpp:406
 msgid "Eeschema general options and preferences"
 msgstr "Options et préférences générales de Eeschema"
 
-#: eeschema/menubar.cpp:418
+#: eeschema/menubar.cpp:420
 msgid "&Save preferences"
 msgstr "&Sauver Préférences"
 
-#: eeschema/menubar.cpp:424
+#: eeschema/menubar.cpp:426
 msgid "&Read preferences"
 msgstr "&Lire Préférences"
 
-#: eeschema/menubar.cpp:436
+#: eeschema/menubar.cpp:438
 msgid "Open the eeschema manual"
 msgstr "Ouvrir la documentation de eeschema"
 
-#: eeschema/menubar.cpp:444
+#: eeschema/menubar.cpp:446
 msgid "About eeschema schematic designer"
 msgstr "Au sujet de Eeschema (outil de conception schématique)"
 
-#: eeschema/menubar.cpp:457
+#: eeschema/menubar.cpp:459
 msgid "&Place"
 msgstr "&Placer"
 
-#: eeschema/schframe.cpp:350
-msgid "Schematic modified, Save before exit ?"
-msgstr "Schématique modifiée,  Sauver avant de quitter ?"
-
-#: eeschema/schframe.cpp:485
-msgid "Draw wires and buses in any direction"
-msgstr "Tracer les fils et bus avec direction quelconque"
-
-#: eeschema/schframe.cpp:486
-msgid "Draw horizontal and vertical wires and buses only"
-msgstr "Autoriser fils et bus verticaux et horizontaux seulement"
-
-#: eeschema/schframe.cpp:496
-msgid "Do not show hidden pins"
-msgstr "Ne pas affichager les pins invisibles"
-
-#: eeschema/schframe.cpp:588
-msgid "Schematic"
-msgstr "Schématique"
-
 #: eeschema/files-io.cpp:71
 msgid "Clear schematic hierarchy?"
 msgstr "Effacer la hiérarchie schématique?"
@@ -9830,31 +9831,39 @@ msgid "Text Shape:"
 msgstr "Aspect Texte:"
 
 #: eeschema/dialog_bodygraphictext_properties_base.cpp:82
+#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:56
 msgid "Align left"
 msgstr "Alignement à gauche"
 
 #: eeschema/dialog_bodygraphictext_properties_base.cpp:82
 #: eeschema/dialog_bodygraphictext_properties_base.cpp:88
+#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:56
+#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:69
 msgid "Align center"
 msgstr "Alignement au centre"
 
 #: eeschema/dialog_bodygraphictext_properties_base.cpp:82
+#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:56
 msgid "Align right"
 msgstr "Alignement à droite"
 
 #: eeschema/dialog_bodygraphictext_properties_base.cpp:84
+#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:58
 msgid "Horiz. Justify"
 msgstr "Justification Horiz."
 
 #: eeschema/dialog_bodygraphictext_properties_base.cpp:88
+#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:69
 msgid "Align bottom"
 msgstr "Alignement en bas"
 
 #: eeschema/dialog_bodygraphictext_properties_base.cpp:88
+#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:69
 msgid "Align top"
 msgstr "Alignement au sommet"
 
 #: eeschema/dialog_bodygraphictext_properties_base.cpp:90
+#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:71
 msgid "Vert. Justify"
 msgstr "Vert. Justifié"
 
@@ -9943,12 +9952,10 @@ msgid "Datasheet"
 msgstr "Documentation"
 
 #: eeschema/dialog_SVG_print_base.cpp:25
-#: eeschema/dialog_print_using_printer_base.cpp:25
 msgid "Default Pen Size"
 msgstr "Dimension Plume par Défaut"
 
 #: eeschema/dialog_SVG_print_base.cpp:30
-#: eeschema/dialog_print_using_printer_base.cpp:30
 msgid "Selection of the default pen thickness used to draw items, when their thickness is set to 0."
 msgstr "Valeur de la dimension de la plume utilisée par défaut pour tracer les éléments, lorsque leur épaisseur est à 0."
 
@@ -9960,17 +9967,34 @@ msgstr "Imprimer Page Courante"
 msgid "Print All"
 msgstr "Imprimer Tout"
 
-#: eeschema/dialog_print_using_printer_base.cpp:52
-msgid "Current"
-msgstr "Courant"
+#: eeschema/dialog_print_using_printer_base.cpp:22
+msgid "Print sheet &reference and title block"
+msgstr "Imprimer ca&rtouche"
 
-#: eeschema/dialog_print_using_printer_base.cpp:52
-msgid "All"
-msgstr "Tout"
+#: eeschema/dialog_print_using_printer_base.cpp:29
+msgid "Print in &black and white only"
+msgstr "Imprimer en &noir et blanc seulement"
 
-#: eeschema/eeschema_config.cpp:328
-msgid "Save Project Settings"
-msgstr "Sauver Optionsr Projet"
+#: eeschema/dialog_print_using_printer_base.cpp:38
+msgid "Page Setup"
+msgstr "Options Page"
+
+#: eeschema/dialog_print_using_printer.cpp:241
+msgid "Print Schematic"
+msgstr "Impression Schématique"
+
+#: eeschema/dialog_print_using_printer.cpp:246
+msgid "An error occurred attempting to print the schematic."
+msgstr "Une erreur s'est produite lors de l'impression."
+
+#: eeschema/dialog_print_using_printer.cpp:247
+msgid "Printing"
+msgstr "Impression"
+
+#: eeschema/dialog_print_using_printer.cpp:260
+#, c-format
+msgid "Print page %d"
+msgstr "Imprimer page %d"
 
 #: eeschema/eelibs_read_libraryfiles.cpp:61
 msgid "\n"
@@ -9984,23 +10008,6 @@ msgstr " erreur!"
 msgid "The following libraries could not be found:"
 msgstr "Les librairies suivantes n'ont pas pu être trouvées:"
 
-#: eeschema/dialog_print_using_printer.cpp:113
-msgid "Error initializing printer information."
-msgstr "Erreur init info imprimante"
-
-#: eeschema/dialog_print_using_printer.cpp:239
-msgid "Printer error!"
-msgstr "Problème d'imprimante!"
-
-#: eeschema/dialog_print_using_printer.cpp:308
-msgid "There was a problem printing."
-msgstr "Il y a un problème d'impression."
-
-#: eeschema/dialog_print_using_printer.cpp:322
-#, c-format
-msgid "Print page %d"
-msgstr "Imprimer page %d"
-
 #: eeschema/class_BodyItem_Text.cpp:85
 #, c-format
 msgid "text only had %d parameters of the required 8"
@@ -10203,6 +10210,11 @@ msgstr "Filtrage Modules"
 msgid "Undefined"
 msgstr "Non Défini"
 
+#: eeschema/classes_body_items.cpp:68
+#: eeschema/classes_body_items.cpp:74
+msgid "All"
+msgstr "Tout"
+
 #: eeschema/classes_body_items.cpp:76
 msgid "no"
 msgstr "non"
@@ -10435,9 +10447,6 @@ msgstr "Taille du te&xte:"
 
 #: eeschema/dialog_sch_sheet_props_base.cpp:42
 #: eeschema/dialog_sch_sheet_props_base.cpp:63
-#: eeschema/dialog_lib_edit_pin_base.cpp:41
-#: eeschema/dialog_lib_edit_pin_base.cpp:64
-#: eeschema/dialog_lib_edit_pin_base.cpp:87
 msgid "units"
 msgstr "unités"
 
@@ -10897,7 +10906,7 @@ msgstr "Clock Active Bas"
 msgid "Active Low Output"
 msgstr "Sortie Active Bas"
 
-#: cvpcb/cvframe.cpp:284
+#: cvpcb/cvframe.cpp:285
 msgid ""
 "Net and component list modified.\n"
 "Save before exit ?"
@@ -10905,26 +10914,26 @@ msgstr ""
 "Netlist et liste composants modifiés,\n"
 "Sauver avant de quitter ?"
 
-#: cvpcb/cvframe.cpp:308
+#: cvpcb/cvframe.cpp:309
 msgid "Problem when saving files, exit anyway ?"
 msgstr "Problème en sauvant les fichiers, quitter quand même"
 
-#: cvpcb/cvframe.cpp:434
+#: cvpcb/cvframe.cpp:435
 msgid "Delete selections"
 msgstr "Effacement des associations existantes"
 
-#: cvpcb/cvframe.cpp:448
+#: cvpcb/cvframe.cpp:449
 #: cvpcb/init.cpp:65
 #: cvpcb/init.cpp:115
 #, c-format
 msgid "Components: %d (free: %d)"
 msgstr "Composants: %d (libres: %d)"
 
-#: cvpcb/cvframe.cpp:470
+#: cvpcb/cvframe.cpp:471
 msgid "unnamed"
 msgstr "non nommé"
 
-#: cvpcb/cvframe.cpp:472
+#: cvpcb/cvframe.cpp:473
 msgid "Open Net List"
 msgstr "Ouvrir Fichier Netliste"
 
@@ -11028,11 +11037,11 @@ msgstr "Cvpcb est en cours d'exécution. Continuer ?"
 msgid " [no file]"
 msgstr " [pas de fichier]"
 
-#: cvpcb/setvisu.cpp:47
+#: cvpcb/setvisu.cpp:48
 msgid "Footprint: "
 msgstr "Module: "
 
-#: cvpcb/setvisu.cpp:50
+#: cvpcb/setvisu.cpp:51
 msgid "Lib: "
 msgstr "Lib: "
 
@@ -11124,22 +11133,22 @@ msgstr "Modules (Tous): %d"
 msgid "Footprints (filtered): %d"
 msgstr "Modules (filtrés): %d"
 
-#: cvpcb/loadcmp.cpp:46
+#: cvpcb/loadcmp.cpp:47
 #, c-format
 msgid "PCB foot print library file <%s> could not be found in the default search paths."
 msgstr "Le fichier librairie de modules PCB <%s> n'a pas pu être trouvé dans les chemins de recherche par défaut."
 
-#: cvpcb/loadcmp.cpp:57
+#: cvpcb/loadcmp.cpp:58
 #, c-format
 msgid "Could not open PCB foot print library file <%s>."
 msgstr "Ne peut ouvrir le fichier librairie de modules PCB <%s>."
 
-#: cvpcb/loadcmp.cpp:70
+#: cvpcb/loadcmp.cpp:71
 #, c-format
 msgid "<%s> is not a valid Kicad PCB foot print library."
 msgstr "<%s> in'est pas un fichier de module PCB  Kicad valide."
 
-#: cvpcb/loadcmp.cpp:131
+#: cvpcb/loadcmp.cpp:132
 #, c-format
 msgid "Module %s not found"
 msgstr "Module %s non trouvé"
@@ -11216,62 +11225,42 @@ msgstr "Montre la liste filtrée des modules pour le composant courant"
 msgid "Display the full footprint list (without filtering)"
 msgstr "Montre la liste complète des modules"
 
-#: cvpcb/displayframe.cpp:156
-msgid "Display Options"
-msgstr "Options d'Affichage"
-
-#: cvpcb/displayframe.cpp:162
-msgid "Zoom in (F1)"
-msgstr "Zoom + (F1)"
-
-#: cvpcb/displayframe.cpp:166
-msgid "Zoom out (F2)"
-msgstr "Zoom - (F2)"
-
-#: cvpcb/displayframe.cpp:170
-msgid "Redraw view (F3)"
-msgstr "Redessin de l'écran (F3)"
-
-#: cvpcb/displayframe.cpp:174
-msgid "Zoom auto (Home)"
-msgstr "Zoom Automatique (Home)"
-
-#: cvpcb/dialog_display_options.cpp:150
-#: cvpcb/dialog_display_options.cpp:162
+#: cvpcb/dialog_display_options.cpp:151
+#: cvpcb/dialog_display_options.cpp:163
 msgid "&Line"
 msgstr "&Ligne"
 
-#: cvpcb/dialog_display_options.cpp:151
-#: cvpcb/dialog_display_options.cpp:163
+#: cvpcb/dialog_display_options.cpp:152
+#: cvpcb/dialog_display_options.cpp:164
 msgid "&Filled"
 msgstr "&Plein"
 
-#: cvpcb/dialog_display_options.cpp:152
-#: cvpcb/dialog_display_options.cpp:164
+#: cvpcb/dialog_display_options.cpp:153
+#: cvpcb/dialog_display_options.cpp:165
 msgid "&Sketch"
 msgstr "&Contour"
 
-#: cvpcb/dialog_display_options.cpp:154
+#: cvpcb/dialog_display_options.cpp:155
 msgid "Edges:"
 msgstr "Contours:"
 
-#: cvpcb/dialog_display_options.cpp:177
+#: cvpcb/dialog_display_options.cpp:178
 msgid "Fill &pad"
 msgstr "&Pad Plein"
 
-#: cvpcb/dialog_display_options.cpp:183
+#: cvpcb/dialog_display_options.cpp:184
 msgid "Fill &via"
 msgstr "&Via Pleine"
 
-#: cvpcb/dialog_display_options.cpp:189
+#: cvpcb/dialog_display_options.cpp:190
 msgid "Show pad &number"
 msgstr "Afficher le n° de &pad"
 
-#: cvpcb/dialog_display_options.cpp:193
+#: cvpcb/dialog_display_options.cpp:194
 msgid "Display pad number"
 msgstr "Afficher numéro des pastilles"
 
-#: cvpcb/dialog_display_options.cpp:220
+#: cvpcb/dialog_display_options.cpp:221
 msgid "&Apply"
 msgstr "&Appliquer"
 
@@ -11279,6 +11268,26 @@ msgstr "&Appliquer"
 msgid "Footprint alias files"
 msgstr "Fichier Alias Modules"
 
+#: cvpcb/class_DisplayFootprintsFrame.cpp:157
+msgid "Display Options"
+msgstr "Options d'Affichage"
+
+#: cvpcb/class_DisplayFootprintsFrame.cpp:163
+msgid "Zoom in (F1)"
+msgstr "Zoom + (F1)"
+
+#: cvpcb/class_DisplayFootprintsFrame.cpp:167
+msgid "Zoom out (F2)"
+msgstr "Zoom - (F2)"
+
+#: cvpcb/class_DisplayFootprintsFrame.cpp:171
+msgid "Redraw view (F3)"
+msgstr "Redessin de l'écran (F3)"
+
+#: cvpcb/class_DisplayFootprintsFrame.cpp:175
+msgid "Zoom auto (Home)"
+msgstr "Zoom Automatique (Home)"
+
 #: kicad/kicad.cpp:78
 #: kicad/prjconfig.cpp:108
 msgid "Working dir: "
@@ -11809,20 +11818,20 @@ msgstr "Ext. Fichiers Gerber"
 msgid "D code File Ext:"
 msgstr "Ext. Fichiers DCodes:"
 
-#: gerbview/set_color.cpp:247
-#: gerbview/set_color.cpp:273
+#: gerbview/set_color.cpp:249
+#: gerbview/set_color.cpp:275
 msgid "Show None"
 msgstr "Rien Afficher"
 
-#: gerbview/set_color.cpp:256
+#: gerbview/set_color.cpp:258
 msgid "Show All"
 msgstr "Tout Afficher"
 
-#: gerbview/set_color.cpp:268
+#: gerbview/set_color.cpp:270
 msgid "Switch on all of the Gerber layers"
 msgstr "Affiche toutes les couches Gerber"
 
-#: gerbview/set_color.cpp:276
+#: gerbview/set_color.cpp:278
 msgid "Switch off all of the Gerber layers"
 msgstr "N'affiche pas les couches Gerber"
 
@@ -11852,7 +11861,7 @@ msgstr "Effacer couche %d"
 msgid "GerbView project files (.cnf)|*.cnf"
 msgstr "Fichiers projet GerbView (.cnf)|*.cnf"
 
-#: gerbview/gerbview.cpp:91
+#: gerbview/gerbview.cpp:92
 msgid "GerbView is already running. Continue?"
 msgstr "Gerbview est en cours d'exécution. Continuer ?"
 
@@ -12178,9 +12187,21 @@ msgstr " Afficher Limites de Page"
 msgid "Show D codes"
 msgstr "Montrer DCodes"
 
-#: gerbview/gerberframe.cpp:212
-msgid "Layer modified,  Continue ?"
-msgstr "Couche modifiée,  Continuer ?"
+#: gerbview/class_gerbview_layer_widget.cpp:64
+msgid "DCodes"
+msgstr "DCodes"
+
+#: gerbview/class_gerbview_layer_widget.cpp:64
+msgid "Show DCodes identification"
+msgstr ""
+
+#: gerbview/class_gerbview_layer_widget.cpp:118
+msgid "Show All Layers"
+msgstr "Monter Toutes les Couches"
+
+#: gerbview/class_gerbview_layer_widget.cpp:121
+msgid "Hide All Layers"
+msgstr "Cacher Toutes les Couches"
 
 #: common/gestfich.cpp:446
 #, c-format
@@ -12364,27 +12385,27 @@ msgstr "Fichiers \"Portable document format\"  (*.pdf)|*.pdf"
 msgid "All files (*)|*"
 msgstr "Tous les fichiers (*)|*"
 
-#: common/common.cpp:228
+#: common/common.cpp:227
 msgid " (\"):"
 msgstr " (\"):"
 
-#: common/common.cpp:250
+#: common/common.cpp:249
 msgid "inches"
 msgstr "Pouces"
 
-#: common/common.cpp:258
+#: common/common.cpp:257
 msgid "centimeters"
 msgstr "centimètres"
 
-#: common/common.cpp:261
+#: common/common.cpp:260
 msgid "Unknown"
 msgstr "Inconnu"
 
-#: common/common.cpp:339
+#: common/common.cpp:338
 msgid " \""
 msgstr " \""
 
-#: common/drawframe.cpp:330
+#: common/drawframe.cpp:332
 msgid "??"
 msgstr "??"
 
@@ -12945,19 +12966,19 @@ msgstr "ERC Warning"
 msgid "Erc Error"
 msgstr "ERC Erreur"
 
-#: eeschema/eelayer.h:255
+#: eeschema/eelayer.h:246
 msgid "Device"
 msgstr "Composant"
 
-#: eeschema/eelayer.h:261
+#: eeschema/eelayer.h:252
 msgid "Sheets"
 msgstr "Feuilles"
 
-#: eeschema/eelayer.h:267
+#: eeschema/eelayer.h:258
 msgid "Erc Mark"
 msgstr "Marqueur ERC"
 
-#: eeschema/eelayer.h:273
+#: eeschema/eelayer.h:264
 msgid "Other"
 msgstr "Autre"
 
@@ -13181,6 +13202,18 @@ msgstr "Options d'Affichage"
 msgid "Page Settings"
 msgstr "Ajustage opt Page"
 
+#~ msgid "Print schematic sheet"
+#~ msgstr "Impression des feuilles de schéma"
+#~ msgid "Current"
+#~ msgstr "Courant"
+#~ msgid "Error initializing printer information."
+#~ msgstr "Erreur init info imprimante"
+#~ msgid "Printer error!"
+#~ msgstr "Problème d'imprimante!"
+#~ msgid "There was a problem printing."
+#~ msgstr "Il y a un problème d'impression."
+#~ msgid "Layer modified,  Continue ?"
+#~ msgstr "Couche modifiée,  Continuer ?"
 #~ msgid "Switch on all of the copper layers"
 #~ msgstr "Affiche toutes les couches cuivre"
 #~ msgid "Switch off all of the copper layers"
@@ -13249,8 +13282,6 @@ msgstr "Ajustage opt Page"
 #~ msgstr "Sauver sous..."
 #~ msgid "Show board in the 3D viewer"
 #~ msgstr "Visualisation du circuit en 3D"
-#~ msgid "Show All Copper Layers"
-#~ msgstr "Monter Toutes les Couches Cuivre."
 #~ msgid "Show No Copper Layers"
 #~ msgstr "Monter aucune Couche Cuivre."
 #~ msgid "Click here to select this layer"
@@ -13355,8 +13386,6 @@ msgstr "Ajustage opt Page"
 #~ msgstr "&Style:"
 #~ msgid "On-board, copper"
 #~ msgstr "PCB, cuivre"
-#~ msgid "All Layers On"
-#~ msgstr "Toutes Couches Actives"
 #~ msgid "Single Side"
 #~ msgstr "Simple Face"
 #~ msgid "Single Side, SMD on Back"
diff --git a/pcbnew/CMakeLists.txt b/pcbnew/CMakeLists.txt
index fbaff54a82..f09724149c 100644
--- a/pcbnew/CMakeLists.txt
+++ b/pcbnew/CMakeLists.txt
@@ -27,6 +27,7 @@ set(PCBNEW_SRCS
     block.cpp
     block_module_editor.cpp
     build_BOM_from_board.cpp
+    class_pcb_layer_widget.cpp
     clean.cpp
 #   cleaningoptions_dialog.cpp
     connect.cpp
diff --git a/pcbnew/class_pcb_layer_widget.cpp b/pcbnew/class_pcb_layer_widget.cpp
new file mode 100644
index 0000000000..146b1addc1
--- /dev/null
+++ b/pcbnew/class_pcb_layer_widget.cpp
@@ -0,0 +1,347 @@
+/*
+ * This program source code file is part of KICAD, a free EDA CAD application.
+ *
+ * Copyright (C) 2004-2010 Jean-Pierre Charras, jean-pierre.charras@gpisa-lab.inpg.fr
+ * Copyright (C) 2010 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
+ * Copyright (C) 2010 Kicad Developers, see change_log.txt for contributors.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, you may find one here:
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ * or you may search the http://www.gnu.org website for the version 2 license,
+ * or you may write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ */
+
+
+/******************************************************/
+/* class_pcb_layer_widget.cpp - Pcbnew layers manager */
+/******************************************************/
+
+#include "fctsys.h"
+#include "appl_wxstruct.h"
+#include "common.h"
+#include "class_drawpanel.h"
+#include "confirm.h"
+#include "pcbnew.h"
+#include "wxPcbStruct.h"
+#include "pcbstruct.h"      // enum PCB_VISIBLE
+#include "collectors.h"
+#include "bitmaps.h"
+#include "pcbnew_id.h"
+#include "layer_widget.h"
+#include "class_pcb_layer_widget.h"
+
+
+/**
+ * Class PCB_LAYER_WIDGET
+ * is here to implement the abtract functions of LAYER_WIDGET so they
+ * may be tied into the WinEDA_PcbFrame's data and so we can add a popup
+ * menu which is specific to PCBNEW's needs.
+ */
+
+
+PCB_LAYER_WIDGET::PCB_LAYER_WIDGET( WinEDA_PcbFrame* aParent, wxWindow* aFocusOwner, int aPointSize ) :
+    LAYER_WIDGET( aParent, aFocusOwner, aPointSize ),
+    myframe( aParent )
+{
+    BOARD*  board = myframe->GetBoard();
+
+    // Fixed "Rendering" tab rows within the LAYER_WIDGET, only the initial color
+    // is changed before appending to the LAYER_WIDGET.  This is an automatic variable
+    // not a static variable, change the color & state after copying from code to renderRows
+    // on the stack.
+    LAYER_WIDGET::ROW renderRows[16] = {
+
+#define RR  LAYER_WIDGET::ROW   // Render Row abreviation to reduce source width
+
+             // text                id                      color       tooltip                 checked
+        RR( _( "Through Via" ),     VIA_THROUGH_VISIBLE,    WHITE,      _( "Show through vias" ) ),
+        RR( _( "Bl/Buried Via" ),   VIA_BBLIND_VISIBLE,     WHITE,      _( "Show blind or buried vias" )  ),
+        RR( _( "Micro Via" ),       VIA_MICROVIA_VISIBLE,   WHITE,      _( "Show micro vias") ),
+        RR( _( "Ratsnest" ),        RATSNEST_VISIBLE,       WHITE,      _( "Show unconnected nets as a ratsnest") ),
+
+        RR( _( "Pads Front" ),      PAD_FR_VISIBLE,         WHITE,      _( "Show footprint pads on board's front" ) ),
+        RR( _( "Pads Back" ),       PAD_BK_VISIBLE,         WHITE,      _( "Show footprint pads on board's back" ) ),
+
+        RR( _( "Text Front" ),      MOD_TEXT_FR_VISIBLE,    WHITE,      _( "Show footprint text on board's back" ) ),
+        RR( _( "Text Back" ),       MOD_TEXT_BK_VISIBLE,    WHITE,      _( "Show footprint text on board's back" ) ),
+        RR( _( "Hidden Text" ),     MOD_TEXT_INVISIBLE,     WHITE,      _( "Show footprint text marked as invisible" ) ),
+
+        RR( _( "Anchors" ),         ANCHOR_VISIBLE,         WHITE,      _( "Show footprint and text origins as a cross" ) ),
+        RR( _( "Grid" ),            GRID_VISIBLE,           WHITE,      _( "Show the (x,y) grid dots" ) ),
+        RR( _( "No-Connects" ),     NO_CONNECTS_VISIBLE,    -1,         _( "Show a marker on pads which have no net connected" ) ),
+        RR( _( "Modules Front" ),   MOD_FR_VISIBLE,         -1,         _( "Show footprints that are on board's front") ),
+        RR( _( "Modules Back" ),    MOD_BK_VISIBLE,         -1,         _( "Show footprints that are on board's back") ),
+        RR( _( "Values" ),          MOD_VALUES_VISIBLE,     -1,         _( "Show footprint's values") ),
+        RR( _( "References" ),      MOD_REFERENCES_VISIBLE, -1,         _( "Show footprint's references") ),
+    };
+
+    for( unsigned row=0;  row<DIM(renderRows);  ++row )
+    {
+        if( renderRows[row].color != -1 )       // does this row show a color?
+        {
+            // this window frame must have an established BOARD, i.e. after SetBoard()
+            renderRows[row].color = board->GetVisibleElementColor( renderRows[row].id );
+        }
+        renderRows[row].state = board->IsElementVisible( renderRows[row].id );
+    }
+
+    AppendRenderRows( renderRows, DIM(renderRows) );
+
+    //-----<Popup menu>-------------------------------------------------
+    // handle the popup menu over the layer window.
+    m_LayerScrolledWindow->Connect( wxEVT_RIGHT_DOWN,
+        wxMouseEventHandler( PCB_LAYER_WIDGET::onRightDownLayers ), NULL, this );
+
+    // since Popupmenu() calls this->ProcessEvent() we must call this->Connect()
+    // and not m_LayerScrolledWindow->Connect()
+    Connect( ID_SHOW_ALL_COPPERS, ID_SHOW_NO_COPPERS, wxEVT_COMMAND_MENU_SELECTED,
+        wxCommandEventHandler( PCB_LAYER_WIDGET::onPopupSelection ), NULL, this );
+
+    // install the right click handler into each control at end of ReFill()
+    // using installRightLayerClickHandler
+}
+
+
+void PCB_LAYER_WIDGET::installRightLayerClickHandler()
+{
+    int rowCount = GetLayerRowCount();
+    for( int row=0;  row<rowCount;  ++row )
+    {
+        for( int col=0; col<LYR_COLUMN_COUNT;  ++col )
+        {
+            wxWindow* w = getLayerComp( row, col );
+
+            w->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler(
+                PCB_LAYER_WIDGET::onRightDownLayers ), NULL, this );
+        }
+    }
+}
+
+
+void PCB_LAYER_WIDGET::onRightDownLayers( wxMouseEvent& event )
+{
+    wxMenu          menu;
+
+    // menu text is capitalized:
+    // http://library.gnome.org/devel/hig-book/2.20/design-text-labels.html.en#layout-capitalization
+    menu.Append( new wxMenuItem( &menu, ID_SHOW_ALL_COPPERS,
+        _("Show All Cu") ) );
+
+    menu.Append( new wxMenuItem( &menu, ID_SHOW_NO_COPPERS,
+        _( "Hide All Cu" ) ) );
+
+    PopupMenu( &menu );
+
+    passOnFocus();
+}
+
+void PCB_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event )
+{
+    int     rowCount;
+    int     menuId = event.GetId();
+    bool    visible;
+
+    switch( menuId )
+    {
+    case ID_SHOW_ALL_COPPERS:
+        visible = true;
+        goto L_change_coppers;
+
+    case ID_SHOW_NO_COPPERS:
+        visible = false;
+    L_change_coppers:
+        int lastCu = -1;
+        rowCount = GetLayerRowCount();
+        for( int row=rowCount-1;  row>=0;  --row )
+        {
+            wxCheckBox* cb = (wxCheckBox*) getLayerComp( row, 3 );
+            int layer = getDecodedId( cb->GetId() );
+            if( IsValidCopperLayerIndex( layer ) )
+            {
+                lastCu = row;
+                break;
+            }
+        }
+
+        for( int row=0;  row<rowCount;  ++row )
+        {
+            wxCheckBox* cb = (wxCheckBox*) getLayerComp( row, 3 );
+            int layer = getDecodedId( cb->GetId() );
+
+            if( IsValidCopperLayerIndex( layer ) )
+            {
+                cb->SetValue( visible );
+
+                bool isLastCopperLayer = (row==lastCu);
+
+                OnLayerVisible( layer, visible, isLastCopperLayer );
+
+                if( isLastCopperLayer )
+                    break;
+            }
+        }
+        break;
+    }
+}
+
+
+void PCB_LAYER_WIDGET::ReFill()
+{
+    BOARD*  brd = myframe->GetBoard();
+    int     layer;
+
+    int enabledLayers = brd->GetEnabledLayers();
+
+//    m_Layers->Freeze();     // no screen updates until done modifying
+
+    ClearLayerRows();
+
+    // show all coppers first, with front on top, back on bottom, then technical layers
+
+    layer = LAYER_N_FRONT;
+    if( enabledLayers & (1 << layer) )
+    {
+        AppendLayerRow( LAYER_WIDGET::ROW(
+            brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ), _("Front copper layer"), true ) );
+    }
+
+    for( layer = LAYER_N_FRONT-1;  layer >= 1;  --layer )
+    {
+        if( enabledLayers & (1 << layer) )
+        {
+            AppendLayerRow( LAYER_WIDGET::ROW(
+                brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ), _("An innner copper layer"), true ) );
+        }
+    }
+
+    layer = LAYER_N_BACK;
+    if( enabledLayers & (1 << layer) )
+    {
+        AppendLayerRow( LAYER_WIDGET::ROW(
+            brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ), _("Back copper layer"), true ) );
+    }
+
+    // technical layers are shown in this order:
+    static const struct {
+        int         layerId;
+        wxString    tooltip;
+    } techLayerSeq[] = {
+        { ADHESIVE_N_FRONT,     _( "Adhesive on board's front" )    },
+        { ADHESIVE_N_BACK,      _( "Adhesive on board's back" )     },
+        { SOLDERPASTE_N_FRONT,  _( "Solder paste on board's front" )},
+        { SOLDERPASTE_N_BACK,   _( "Solder paste on board's back" ) },
+        { SILKSCREEN_N_FRONT,   _( "Silkscreen on board's front" )  },
+        { SILKSCREEN_N_BACK,    _( "Silkscreen on board's back" )   },
+        { SOLDERMASK_N_FRONT,   _( "Solder mask on board's front" ) },
+        { SOLDERMASK_N_BACK,    _( "Solder mask on board's back" )  },
+        { DRAW_N,               _( "Explanatory drawings" )         },
+        { COMMENT_N,            _( "Explanatory comments" )         },
+        { ECO1_N,               _( "TDB" )                          },
+        { ECO2_N,               _( "TBD" )                          },
+        { EDGE_N,               _( "Board's perimeter definition" ) },
+    };
+
+    for( unsigned i=0;  i<DIM(techLayerSeq);  ++i )
+    {
+        layer = techLayerSeq[i].layerId;
+
+        if( !(enabledLayers & (1 << layer)) )
+            continue;
+
+        AppendLayerRow( LAYER_WIDGET::ROW(
+            brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ),
+            techLayerSeq[i].tooltip, true ) );
+    }
+
+    installRightLayerClickHandler();
+
+//    m_Layers->Thaw();
+}
+
+//-----<LAYER_WIDGET callbacks>-------------------------------------------
+
+void PCB_LAYER_WIDGET::OnLayerColorChange( int aLayer, int aColor )
+{
+    myframe->GetBoard()->SetLayerColor( aLayer, aColor );
+    myframe->DrawPanel->Refresh();
+}
+
+bool PCB_LAYER_WIDGET::OnLayerSelect( int aLayer )
+{
+    // the layer change from the PCB_LAYER_WIDGET can be denied by returning
+    // false from this function.
+    myframe->setActiveLayer( aLayer, false );
+    myframe->syncLayerBox();
+    if(DisplayOpt.ContrastModeDisplay)
+        myframe->DrawPanel->Refresh();
+
+    return true;
+}
+
+void PCB_LAYER_WIDGET::OnLayerVisible( int aLayer, bool isVisible, bool isFinal )
+{
+    BOARD* brd = myframe->GetBoard();
+
+    int visibleLayers = brd->GetVisibleLayers();
+
+    if( isVisible )
+        visibleLayers |= (1 << aLayer);
+    else
+        visibleLayers &= ~(1 << aLayer);
+
+    brd->SetVisibleLayers( visibleLayers );
+
+    if( isFinal )
+        myframe->DrawPanel->Refresh();
+}
+
+void PCB_LAYER_WIDGET::OnRenderColorChange( int aId, int aColor )
+{
+    myframe->GetBoard()->SetVisibleElementColor( aId, aColor );
+    myframe->DrawPanel->Refresh();
+}
+
+void PCB_LAYER_WIDGET::OnRenderEnable( int aId, bool isEnabled )
+{
+    BOARD*  brd = myframe->GetBoard();
+
+    /* @todo:
+
+        move:
+
+        GRID_VISIBLE,   ? maybe not this one
+        into m_VisibleElements and get rid of globals.
+   */
+
+    switch( aId )
+    {
+        // see todo above, don't really want anything except IsElementVisible() here.
+
+    case GRID_VISIBLE:
+        // @todo, make read/write accessors for grid control so the write accessor can fire updates to
+        // grid state listeners.  I think the grid state should be kept in the BOARD.
+        brd->SetElementVisibility( aId, isEnabled );    // set visibilty flag also in list, and myframe->m_Draw_Grid
+        break;
+
+    default:
+        brd->SetElementVisibility( aId, isEnabled );
+    }
+
+    myframe->DrawPanel->Refresh();
+}
+
+//-----</LAYER_WIDGET callbacks>------------------------------------------
+
+
diff --git a/pcbnew/class_pcb_layer_widget.h b/pcbnew/class_pcb_layer_widget.h
new file mode 100644
index 0000000000..5510a4418e
--- /dev/null
+++ b/pcbnew/class_pcb_layer_widget.h
@@ -0,0 +1,81 @@
+/*
+ * This program source code file is part of KICAD, a free EDA CAD application.
+ *
+ * Copyright (C) 2004-2010 Jean-Pierre Charras, jean-pierre.charras@gpisa-lab.inpg.fr
+ * Copyright (C) 2010 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
+ * Copyright (C) 2010 Kicad Developers, see change_log.txt for contributors.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, you may find one here:
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ * or you may search the http://www.gnu.org website for the version 2 license,
+ * or you may write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ */
+
+
+/************************************************************/
+/* class_pcb_layer_widget.h : header for the layers manager */
+/************************************************************/
+
+#ifndef _CLASS_PCB_LAYER_WIDGET_H_
+#define _CLASS_PCB_LAYER_WIDGET_H_
+
+/**
+ * Class PCB_LAYER_WIDGET
+ * is here to implement the abtract functions of LAYER_WIDGET so they
+ * may be tied into the WinEDA_PcbFrame's data and so we can add a popup
+ * menu which is specific to PCBNEW's needs.
+ */
+class PCB_LAYER_WIDGET : public LAYER_WIDGET
+{
+    WinEDA_PcbFrame*    myframe;
+
+    // popup menu ids.
+#define ID_SHOW_ALL_COPPERS     wxID_HIGHEST
+#define ID_SHOW_NO_COPPERS      (wxID_HIGHEST+1)
+
+    /**
+     * Function OnRightDownLayers
+     * puts up a popup menu for the layer panel.
+     */
+    void onRightDownLayers( wxMouseEvent& event );
+
+    void onPopupSelection( wxCommandEvent& event );
+
+    /// this is for the popup menu, the right click handler has to be installed
+    /// on every child control within the layer panel.
+    void installRightLayerClickHandler();
+
+public:
+
+    /**
+     * Constructor
+     * @param aPointSize is the font point size to use within the widget.  This
+     *  effectively sets the overal size of the widget via the row height and bitmap
+     *  button sizes.
+     */
+    PCB_LAYER_WIDGET( WinEDA_PcbFrame* aParent, wxWindow* aFocusOwner, int aPointSize = 10 );
+
+    void ReFill();
+
+    //-----<implement LAYER_WIDGET abstract callback functions>-----------
+    void OnLayerColorChange( int aLayer, int aColor );
+    bool OnLayerSelect( int aLayer );
+    void OnLayerVisible( int aLayer, bool isVisible, bool isFinal );
+    void OnRenderColorChange( int aId, int aColor );
+    void OnRenderEnable( int aId, bool isEnabled );
+    //-----</implement LAYER_WIDGET abstract callback functions>----------
+};
+
+#endif  // _CLASS_PCB_LAYER_WIDGET_H_
diff --git a/pcbnew/dialog_general_options.cpp b/pcbnew/dialog_general_options.cpp
index fd596519aa..574bdcbae4 100644
--- a/pcbnew/dialog_general_options.cpp
+++ b/pcbnew/dialog_general_options.cpp
@@ -44,18 +44,6 @@ void Dialog_GeneralOptions::init()
     wxString timevalue;
     timevalue << g_TimeOut / 60;
     m_SaveTime->SetValue( timevalue );
-
-/*
- *   int layer_count[] = {1,2,4,6,8,10,12,14,16};
- *   m_LayerNumber->SetSelection(1);
- *   for ( unsigned ii = 0; ii < sizeof(layer_count); ii++ )
- *   {
- *       if ( g_DesignSettings.m_CopperLayerCount != layer_count[ii] )
- *           continue;
- *       m_LayerNumber->SetSelection(ii);
- *       break;
- *   }
- */
     m_MaxShowLinks->SetValue( g_MaxLinksShowed );
 
     m_DrcOn->SetValue( Drc_On );
@@ -249,21 +237,11 @@ void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event )
 
     case ID_TB_OPTIONS_SHOW_EXTRA_VERTICAL_TOOLBAR1:
         m_show_microwave_tools = state;
-#if !defined(KICAD_AUIMANAGER)
-        // show auxiliary Vertical toolbar (Microwave tool)
-        m_AuxVToolBar->Show(m_show_microwave_tools);
-        {
-        wxSizeEvent SizeEv( GetSize() );
-        OnSize( SizeEv );
-        }
-#else
         m_auimgr.GetPane( wxT( "m_AuxVToolBar" ) ).Show( m_show_microwave_tools );
         m_auimgr.Update();
-#endif
         break;
 
-    case ID_TB_OPTIONS_SHOW_MANAGE_LAYERS_VERTICAL_TOOLBAR:
-#if defined(KICAD_AUIMANAGER)
+    case ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR:
         // show auxiliary Vertical layers and visibility manager toolbar
         m_show_layer_manager_tools = state;
         m_auimgr.GetPane( wxT( "m_LayersManagerToolBar" ) ).Show( m_show_layer_manager_tools );
@@ -274,7 +252,6 @@ void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event )
         else
             GetMenuBar()->SetLabel(ID_MENU_PCB_SHOW_HIDE_LAYERS_MANAGER_DIALOG,
                                 _("Show &Layers Manager" ) );
-#endif
         break;
 
     default:
diff --git a/pcbnew/menubar_pcbframe.cpp b/pcbnew/menubar_pcbframe.cpp
index 0834f51188..06c900a3be 100644
--- a/pcbnew/menubar_pcbframe.cpp
+++ b/pcbnew/menubar_pcbframe.cpp
@@ -397,7 +397,7 @@ void WinEDA_PcbFrame::ReCreateMenuBar()
     item = new wxMenuItem( configmenu, ID_MENU_PCB_SHOW_HIDE_LAYERS_MANAGER_DIALOG,
                            _( "Hide &Layers Manager" ),
                            _( "Show/hide the layers manager toolbar" ) );
-    item->SetBitmap( palette_xpm );
+    item->SetBitmap( layers_manager_xpm );
     configmenu->Append( item );
 
     /* General */
diff --git a/pcbnew/pcbframe.cpp b/pcbnew/pcbframe.cpp
index 9dbee7193c..09bea6399d 100644
--- a/pcbnew/pcbframe.cpp
+++ b/pcbnew/pcbframe.cpp
@@ -45,350 +45,7 @@
 #include "kbool/include/kbool/booleng.h"
 #include "layer_widget.h"
 #include "dialog_design_rules.h"
-
-
-
-/**
- * Class PCB_LAYER_WIDGET
- * is here to implement the abtract functions of LAYER_WIDGET so they
- * may be tied into the WinEDA_PcbFrame's data and so we can add a popup
- * menu which is specific to PCBNEW's needs.
- */
-class PCB_LAYER_WIDGET : public LAYER_WIDGET
-{
-    WinEDA_PcbFrame*    myframe;
-
-    // popup menu ids.
-#define ID_SHOW_ALL_COPPERS     wxID_HIGHEST
-#define ID_SHOW_NO_COPPERS      (wxID_HIGHEST+1)
-
-    /**
-     * Function OnRightDownLayers
-     * puts up a popup menu for the layer panel.
-     */
-    void onRightDownLayers( wxMouseEvent& event );
-
-    void onPopupSelection( wxCommandEvent& event );
-
-    /// this is for the popup menu, the right click handler has to be installed
-    /// on every child control within the layer panel.
-    void installRightLayerClickHandler();
-
-public:
-
-    /**
-     * Constructor
-     * @param aPointSize is the font point size to use within the widget.  This
-     *  effectively sets the overal size of the widget via the row height and bitmap
-     *  button sizes.
-     */
-    PCB_LAYER_WIDGET( WinEDA_PcbFrame* aParent, wxWindow* aFocusOwner, int aPointSize = 10 );
-
-    void ReFill();
-
-    //-----<implement LAYER_WIDGET abstract callback functions>-----------
-    void OnLayerColorChange( int aLayer, int aColor );
-    bool OnLayerSelect( int aLayer );
-    void OnLayerVisible( int aLayer, bool isVisible, bool isFinal );
-    void OnRenderColorChange( int aId, int aColor );
-    void OnRenderEnable( int aId, bool isEnabled );
-    //-----</implement LAYER_WIDGET abstract callback functions>----------
-};
-
-
-PCB_LAYER_WIDGET::PCB_LAYER_WIDGET( WinEDA_PcbFrame* aParent, wxWindow* aFocusOwner, int aPointSize ) :
-    LAYER_WIDGET( aParent, aFocusOwner, aPointSize ),
-    myframe( aParent )
-{
-    BOARD*  board = myframe->GetBoard();
-
-    // Fixed "Rendering" tab rows within the LAYER_WIDGET, only the initial color
-    // is changed before appending to the LAYER_WIDGET.  This is an automatic variable
-    // not a static variable, change the color & state after copying from code to renderRows
-    // on the stack.
-    LAYER_WIDGET::ROW renderRows[16] = {
-
-#define RR  LAYER_WIDGET::ROW   // Render Row abreviation to reduce source width
-
-             // text                id                      color       tooltip                 checked
-        RR( _( "Through Via" ),     VIA_THROUGH_VISIBLE,    WHITE,      _( "Show through vias" ) ),
-        RR( _( "Bl/Buried Via" ),   VIA_BBLIND_VISIBLE,     WHITE,      _( "Show blind or buried vias" )  ),
-        RR( _( "Micro Via" ),       VIA_MICROVIA_VISIBLE,   WHITE,      _( "Show micro vias") ),
-        RR( _( "Ratsnest" ),        RATSNEST_VISIBLE,       WHITE,      _( "Show unconnected nets as a ratsnest") ),
-
-        RR( _( "Pads Front" ),      PAD_FR_VISIBLE,         WHITE,      _( "Show footprint pads on board's front" ) ),
-        RR( _( "Pads Back" ),       PAD_BK_VISIBLE,         WHITE,      _( "Show footprint pads on board's back" ) ),
-
-        RR( _( "Text Front" ),      MOD_TEXT_FR_VISIBLE,    WHITE,      _( "Show footprint text on board's back" ) ),
-        RR( _( "Text Back" ),       MOD_TEXT_BK_VISIBLE,    WHITE,      _( "Show footprint text on board's back" ) ),
-        RR( _( "Hidden Text" ),     MOD_TEXT_INVISIBLE,     WHITE,      _( "Show footprint text marked as invisible" ) ),
-
-        RR( _( "Anchors" ),         ANCHOR_VISIBLE,         WHITE,      _( "Show footprint and text origins as a cross" ) ),
-        RR( _( "Grid" ),            GRID_VISIBLE,           WHITE,      _( "Show the (x,y) grid dots" ) ),
-        RR( _( "No-Connects" ),     NO_CONNECTS_VISIBLE,    -1,         _( "Show a marker on pads which have no net connected" ) ),
-        RR( _( "Modules Front" ),   MOD_FR_VISIBLE,         -1,         _( "Show footprints that are on board's front") ),
-        RR( _( "Modules Back" ),    MOD_BK_VISIBLE,         -1,         _( "Show footprints that are on board's back") ),
-        RR( _( "Values" ),          MOD_VALUES_VISIBLE,     -1,         _( "Show footprint's values") ),
-        RR( _( "References" ),      MOD_REFERENCES_VISIBLE, -1,         _( "Show footprint's references") ),
-    };
-
-    for( unsigned row=0;  row<DIM(renderRows);  ++row )
-    {
-        if( renderRows[row].color != -1 )       // does this row show a color?
-        {
-            // this window frame must have an established BOARD, i.e. after SetBoard()
-            renderRows[row].color = board->GetVisibleElementColor( renderRows[row].id );
-        }
-        renderRows[row].state = board->IsElementVisible( renderRows[row].id );
-    }
-
-    AppendRenderRows( renderRows, DIM(renderRows) );
-
-    //-----<Popup menu>-------------------------------------------------
-    // handle the popup menu over the layer window.
-    m_LayerScrolledWindow->Connect( wxEVT_RIGHT_DOWN,
-        wxMouseEventHandler( PCB_LAYER_WIDGET::onRightDownLayers ), NULL, this );
-
-    // since Popupmenu() calls this->ProcessEvent() we must call this->Connect()
-    // and not m_LayerScrolledWindow->Connect()
-    Connect( ID_SHOW_ALL_COPPERS, ID_SHOW_NO_COPPERS, wxEVT_COMMAND_MENU_SELECTED,
-        wxCommandEventHandler( PCB_LAYER_WIDGET::onPopupSelection ), NULL, this );
-
-    // install the right click handler into each control at end of ReFill()
-    // using installRightLayerClickHandler
-}
-
-
-void PCB_LAYER_WIDGET::installRightLayerClickHandler()
-{
-    int rowCount = GetLayerRowCount();
-    for( int row=0;  row<rowCount;  ++row )
-    {
-        for( int col=0; col<LYR_COLUMN_COUNT;  ++col )
-        {
-            wxWindow* w = getLayerComp( row, col );
-
-            w->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler(
-                PCB_LAYER_WIDGET::onRightDownLayers ), NULL, this );
-        }
-    }
-}
-
-
-void PCB_LAYER_WIDGET::onRightDownLayers( wxMouseEvent& event )
-{
-    wxMenu          menu;
-
-    // menu text is capitalized:
-    // http://library.gnome.org/devel/hig-book/2.20/design-text-labels.html.en#layout-capitalization
-    menu.Append( new wxMenuItem( &menu, ID_SHOW_ALL_COPPERS,
-        _("Show All Cu") ) );
-
-    menu.Append( new wxMenuItem( &menu, ID_SHOW_NO_COPPERS,
-        _( "Hide All Cu" ) ) );
-
-    PopupMenu( &menu );
-
-    passOnFocus();
-}
-
-void PCB_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event )
-{
-    int     rowCount;
-    int     menuId = event.GetId();
-    bool    visible;
-
-    switch( menuId )
-    {
-    case ID_SHOW_ALL_COPPERS:
-        visible = true;
-        goto L_change_coppers;
-
-    case ID_SHOW_NO_COPPERS:
-        visible = false;
-    L_change_coppers:
-        int lastCu = -1;
-        rowCount = GetLayerRowCount();
-        for( int row=rowCount-1;  row>=0;  --row )
-        {
-            wxCheckBox* cb = (wxCheckBox*) getLayerComp( row, 3 );
-            int layer = getDecodedId( cb->GetId() );
-            if( IsValidCopperLayerIndex( layer ) )
-            {
-                lastCu = row;
-                break;
-            }
-        }
-
-        for( int row=0;  row<rowCount;  ++row )
-        {
-            wxCheckBox* cb = (wxCheckBox*) getLayerComp( row, 3 );
-            int layer = getDecodedId( cb->GetId() );
-
-            if( IsValidCopperLayerIndex( layer ) )
-            {
-                cb->SetValue( visible );
-
-                bool isLastCopperLayer = (row==lastCu);
-
-                OnLayerVisible( layer, visible, isLastCopperLayer );
-
-                if( isLastCopperLayer )
-                    break;
-            }
-        }
-        break;
-    }
-}
-
-
-void PCB_LAYER_WIDGET::ReFill()
-{
-    BOARD*  brd = myframe->GetBoard();
-    int     layer;
-
-    int enabledLayers = brd->GetEnabledLayers();
-
-//    m_Layers->Freeze();     // no screen updates until done modifying
-
-    ClearLayerRows();
-
-    // show all coppers first, with front on top, back on bottom, then technical layers
-
-    layer = LAYER_N_FRONT;
-    if( enabledLayers & (1 << layer) )
-    {
-        AppendLayerRow( LAYER_WIDGET::ROW(
-            brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ), _("Front copper layer"), true ) );
-    }
-
-    for( layer = LAYER_N_FRONT-1;  layer >= 1;  --layer )
-    {
-        if( enabledLayers & (1 << layer) )
-        {
-            AppendLayerRow( LAYER_WIDGET::ROW(
-                brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ), _("An innner copper layer"), true ) );
-        }
-    }
-
-    layer = LAYER_N_BACK;
-    if( enabledLayers & (1 << layer) )
-    {
-        AppendLayerRow( LAYER_WIDGET::ROW(
-            brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ), _("Back copper layer"), true ) );
-    }
-
-    // technical layers are shown in this order:
-    static const struct {
-        int         layerId;
-        wxString    tooltip;
-    } techLayerSeq[] = {
-        { ADHESIVE_N_FRONT,     _( "Adhesive on board's front" )    },
-        { ADHESIVE_N_BACK,      _( "Adhesive on board's back" )     },
-        { SOLDERPASTE_N_FRONT,  _( "Solder paste on board's front" )},
-        { SOLDERPASTE_N_BACK,   _( "Solder paste on board's back" ) },
-        { SILKSCREEN_N_FRONT,   _( "Silkscreen on board's front" )  },
-        { SILKSCREEN_N_BACK,    _( "Silkscreen on board's back" )   },
-        { SOLDERMASK_N_FRONT,   _( "Solder mask on board's front" ) },
-        { SOLDERMASK_N_BACK,    _( "Solder mask on board's back" )  },
-        { DRAW_N,               _( "Explanatory drawings" )         },
-        { COMMENT_N,            _( "Explanatory comments" )         },
-        { ECO1_N,               _( "TDB" )                          },
-        { ECO2_N,               _( "TBD" )                          },
-        { EDGE_N,               _( "Board's perimeter definition" ) },
-    };
-
-    for( unsigned i=0;  i<DIM(techLayerSeq);  ++i )
-    {
-        layer = techLayerSeq[i].layerId;
-
-        if( !(enabledLayers & (1 << layer)) )
-            continue;
-
-        AppendLayerRow( LAYER_WIDGET::ROW(
-            brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ),
-            techLayerSeq[i].tooltip, true ) );
-    }
-
-    installRightLayerClickHandler();
-
-//    m_Layers->Thaw();
-}
-
-//-----<LAYER_WIDGET callbacks>-------------------------------------------
-
-void PCB_LAYER_WIDGET::OnLayerColorChange( int aLayer, int aColor )
-{
-    myframe->GetBoard()->SetLayerColor( aLayer, aColor );
-    myframe->DrawPanel->Refresh();
-}
-
-bool PCB_LAYER_WIDGET::OnLayerSelect( int aLayer )
-{
-    // the layer change from the PCB_LAYER_WIDGET can be denied by returning
-    // false from this function.
-    myframe->setActiveLayer( aLayer, false );
-    myframe->syncLayerBox();
-    if(DisplayOpt.ContrastModeDisplay)
-        myframe->DrawPanel->Refresh();
-
-    return true;
-}
-
-void PCB_LAYER_WIDGET::OnLayerVisible( int aLayer, bool isVisible, bool isFinal )
-{
-    BOARD* brd = myframe->GetBoard();
-
-    int visibleLayers = brd->GetVisibleLayers();
-
-    if( isVisible )
-        visibleLayers |= (1 << aLayer);
-    else
-        visibleLayers &= ~(1 << aLayer);
-
-    brd->SetVisibleLayers( visibleLayers );
-
-    if( isFinal )
-        myframe->DrawPanel->Refresh();
-}
-
-void PCB_LAYER_WIDGET::OnRenderColorChange( int aId, int aColor )
-{
-    myframe->GetBoard()->SetVisibleElementColor( aId, aColor );
-    myframe->DrawPanel->Refresh();
-}
-
-void PCB_LAYER_WIDGET::OnRenderEnable( int aId, bool isEnabled )
-{
-    BOARD*  brd = myframe->GetBoard();
-
-    /* @todo:
-
-        move:
-
-        GRID_VISIBLE,   ? maybe not this one
-        into m_VisibleElements and get rid of globals.
-   */
-
-    switch( aId )
-    {
-        // see todo above, don't really want anything except IsElementVisible() here.
-
-    case GRID_VISIBLE:
-        // @todo, make read/write accessors for grid control so the write accessor can fire updates to
-        // grid state listeners.  I think the grid state should be kept in the BOARD.
-        brd->SetElementVisibility( aId, isEnabled );    // set visibilty flag also in list, and myframe->m_Draw_Grid
-        break;
-
-    default:
-        brd->SetElementVisibility( aId, isEnabled );
-    }
-
-    myframe->DrawPanel->Refresh();
-}
-
-//-----</LAYER_WIDGET callbacks>------------------------------------------
-
+#include "class_pcb_layer_widget.h"
 
 
 
@@ -634,6 +291,9 @@ WinEDA_PcbFrame::WinEDA_PcbFrame( wxWindow* father,
 
     m_InternalUnits = PCB_INTERNAL_UNIT;    // Unites internes = 1/10000 inch
     SetBaseScreen( ScreenPcb );
+
+    // LoadSettings() *after* creating m_LayersManager, because LoadSettings()
+    // initialize parameters in m_LayersManager
     LoadSettings();
     SetSize( m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y );