From 90c3d230d97eabcf3971f53f02b255cac130de08 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 21 Mar 2012 09:05:58 +1100 Subject: [PATCH 1/9] SITL: improve the simulated compass this implements a much more accurate model of a compass using matrix rotations, instead of trying to calculate components directly --- libraries/Desktop/support/desktop.h | 2 +- libraries/Desktop/support/sitl.cpp | 4 +- libraries/Desktop/support/sitl_compass.cpp | 55 +++++++++++----------- 3 files changed, 30 insertions(+), 31 deletions(-) diff --git a/libraries/Desktop/support/desktop.h b/libraries/Desktop/support/desktop.h index 8ff6756ddf..814117b996 100644 --- a/libraries/Desktop/support/desktop.h +++ b/libraries/Desktop/support/desktop.h @@ -20,7 +20,7 @@ void sitl_input(void); void sitl_setup(void); int sitl_gps_pipe(void); ssize_t sitl_gps_read(int fd, void *buf, size_t count); -void sitl_update_compass(float heading, float roll, float pitch, float yaw); +void sitl_update_compass(float roll, float pitch, float yaw); void sitl_update_gps(double latitude, double longitude, float altitude, double speedN, double speedE, bool have_lock); void sitl_update_adc(float roll, float pitch, float yaw, diff --git a/libraries/Desktop/support/sitl.cpp b/libraries/Desktop/support/sitl.cpp index 7e0976620a..205522898d 100644 --- a/libraries/Desktop/support/sitl.cpp +++ b/libraries/Desktop/support/sitl.cpp @@ -278,7 +278,7 @@ static void timer_handler(int signum) sim_state.xAccel, sim_state.yAccel, sim_state.zAccel, sim_state.airspeed); sitl_update_barometer(sim_state.altitude); - sitl_update_compass(sim_state.heading, sim_state.rollDeg, sim_state.pitchDeg, sim_state.heading); + sitl_update_compass(sim_state.rollDeg, sim_state.pitchDeg, sim_state.heading); sei(); } @@ -326,7 +326,7 @@ void sitl_setup(void) // setup some initial values sitl_update_barometer(desktop_state.initial_height); sitl_update_adc(0, 0, 0, 0, 0, 0, 0, 0, -9.8, 0); - sitl_update_compass(0, 0, 0, 0); + sitl_update_compass(0, 0, 0); sitl_update_gps(0, 0, 0, 0, 0, false); } diff --git a/libraries/Desktop/support/sitl_compass.cpp b/libraries/Desktop/support/sitl_compass.cpp index 46a3653def..8d1d319a37 100644 --- a/libraries/Desktop/support/sitl_compass.cpp +++ b/libraries/Desktop/support/sitl_compass.cpp @@ -20,40 +20,40 @@ #define MAG_OFS_Y 13.0 #define MAG_OFS_Z -18.0 +// declination in Canberra (degrees) +#define MAG_DECLINATION 12.1 + +// inclination in Canberra (degrees) +#define MAG_INCLINATION -66 + +// magnetic field strength in Canberra as observed +// using an APM1 with 5883L compass +#define MAG_FIELD_STRENGTH 818 + /* given a magnetic heading, and roll, pitch, yaw values, calculate consistent magnetometer components All angles are in radians */ -static Vector3f heading_to_mag(float heading, float roll, float pitch, float yaw) +static Vector3f heading_to_mag(float roll, float pitch, float yaw) { - Vector3f v; - double headX, headY, cos_roll, sin_roll, cos_pitch, sin_pitch, scale; - const double magnitude = 665; + Vector3f Bearth, m; + Matrix3f R; - cos_roll = cos(roll); - sin_roll = sin(roll); - cos_pitch = cos(pitch); - sin_pitch = sin(pitch); + // Bearth is the magnetic field in Canberra. We need to adjust + // it for inclination and declination + Bearth(MAG_FIELD_STRENGTH, 0, 0); + R.from_euler(0, -ToRad(MAG_INCLINATION), ToRad(MAG_DECLINATION)); + Bearth = R * Bearth; + // create a rotation matrix for the given attitude + R.from_euler(roll, pitch, yaw); - headY = -sin(heading); - headX = cos(heading); - - if (fabs(cos_roll) < 1.0e-20) { - cos_roll = 1.0e-10; - } - if (fabs(cos_pitch) < 1.0e-20) { - cos_pitch = 1.0e-10; - } - - v.z = -0.6*cos(roll)*cos(pitch); - v.y = (headY + v.z*sin_roll) / cos_roll; - v.x = (headX - (v.y*sin_roll*sin_pitch + v.z*cos_roll*sin_pitch)) / cos_pitch; - scale = magnitude / sqrt((v.x*v.x) + (v.y*v.y) + (v.z*v.z)); - v *= scale; - return v; + // convert the earth frame magnetic vector to body frame, and + // apply the offsets + m = R.transposed() * Bearth - Vector3f(MAG_OFS_X, MAG_OFS_Y, MAG_OFS_Z); + return m; } @@ -62,12 +62,11 @@ static Vector3f heading_to_mag(float heading, float roll, float pitch, float yaw setup the compass with new input all inputs are in degrees */ -void sitl_update_compass(float heading, float roll, float pitch, float yaw) +void sitl_update_compass(float roll, float pitch, float yaw) { extern AP_Compass_HIL compass; - Vector3f m = heading_to_mag(ToRad(heading), - ToRad(roll), + Vector3f m = heading_to_mag(ToRad(roll), ToRad(pitch), ToRad(yaw)); - compass.setHIL(m.x - MAG_OFS_X, m.y - MAG_OFS_Y, m.z - MAG_OFS_Z); + compass.setHIL(m.x, m.y, m.z); } From 9cba330eeda5b05edf3b474768abca454a78b0e3 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 21 Mar 2012 09:06:30 +1100 Subject: [PATCH 2/9] autotest: fixed the declination to match new compass we now use the declination for Canberra --- Tools/autotest/ArduCopter.parm | 3 ++- Tools/autotest/ArduPlane.parm | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Tools/autotest/ArduCopter.parm b/Tools/autotest/ArduCopter.parm index fc310f1ce0..45742f3a72 100644 --- a/Tools/autotest/ArduCopter.parm +++ b/Tools/autotest/ArduCopter.parm @@ -1,6 +1,7 @@ FRAME 0 MAG_ENABLE 1 LOG_BITMASK 4095 +COMPASS_DEC 0.211 RC1_MAX 2000.000000 RC1_MIN 1000.000000 RC1_TRIM 1500.000000 @@ -49,4 +50,4 @@ THR_FAILSAFE 1 # RTL 6 ! # CIRCLE 7 ! # POSITION 8 -# LAND 9 ! \ No newline at end of file +# LAND 9 ! diff --git a/Tools/autotest/ArduPlane.parm b/Tools/autotest/ArduPlane.parm index bad1c82b82..7a95108056 100644 --- a/Tools/autotest/ArduPlane.parm +++ b/Tools/autotest/ArduPlane.parm @@ -9,6 +9,7 @@ ARSPD_FBW_MAX 30 ARSPD_FBW_MIN 10 KFF_RDDRMIX 0.5 KFF_PTCHCOMP 0.3 +COMPASS_DEC 0.211 THR_MAX 100 HDNG2RLL_D 0.5 HDNG2RLL_I 0.01 From 17fbb8ea26d776dbfcb4b8d9a3963d79eb0cc78a Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 21 Mar 2012 09:06:48 +1100 Subject: [PATCH 3/9] Math: fixed the build of the eulers test in SITL --- libraries/AP_Math/examples/eulers/eulers.pde | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/AP_Math/examples/eulers/eulers.pde b/libraries/AP_Math/examples/eulers/eulers.pde index 3614e472a9..1c7cb4825c 100644 --- a/libraries/AP_Math/examples/eulers/eulers.pde +++ b/libraries/AP_Math/examples/eulers/eulers.pde @@ -22,6 +22,7 @@ FastSerialPort(Serial, 0); #include #include #include +#include Arduino_Mega_ISR_Registry isr_registry; AP_Baro_BMP085_HIL barometer; AP_Compass_HIL compass; From fe55a7633519d4e2e160d0775deca4ad1dab6c8d Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 21 Mar 2012 10:43:48 +1100 Subject: [PATCH 4/9] Math: moved matrix multiple operations to .cpp file this means we only link this in once, rather than for every use of matrix multiply, which saves us some flash space We need to be careful not to put large pieces of code in template headers, as if the operation is used a lot, it costs us a lot of code space --- libraries/AP_Math/matrix3.cpp | 29 +++++++++++++++++++++++++++++ libraries/AP_Math/matrix3.h | 22 +++------------------- 2 files changed, 32 insertions(+), 19 deletions(-) diff --git a/libraries/AP_Math/matrix3.cpp b/libraries/AP_Math/matrix3.cpp index d819a37263..236a4263ff 100644 --- a/libraries/AP_Math/matrix3.cpp +++ b/libraries/AP_Math/matrix3.cpp @@ -153,8 +153,37 @@ void Matrix3::rotate(const Vector3 &g) (*this) += temp_matrix; } + +// multiplication by a vector +template +Vector3 Matrix3::operator *(const Vector3 &v) const +{ + return Vector3(a.x * v.x + a.y * v.y + a.z * v.z, + b.x * v.x + b.y * v.y + b.z * v.z, + c.x * v.x + c.y * v.y + c.z * v.z); +} + +// multiplication by another Matrix3 +template +Matrix3 Matrix3::operator *(const Matrix3 &m) const +{ + Matrix3 temp (Vector3(a.x * m.a.x + a.y * m.b.x + a.z * m.c.x, + a.x * m.a.y + a.y * m.b.y + a.z * m.c.y, + a.x * m.a.z + a.y * m.b.z + a.z * m.c.z), + Vector3(b.x * m.a.x + b.y * m.b.x + b.z * m.c.x, + b.x * m.a.y + b.y * m.b.y + b.z * m.c.y, + b.x * m.a.z + b.y * m.b.z + b.z * m.c.z), + Vector3(c.x * m.a.x + c.y * m.b.x + c.z * m.c.x, + c.x * m.a.y + c.y * m.b.y + c.z * m.c.y, + c.x * m.a.z + c.y * m.b.z + c.z * m.c.z)); + return temp; +} + + // only define for float template void Matrix3::rotation(enum Rotation); template void Matrix3::rotate(const Vector3 &g); template void Matrix3::from_euler(float roll, float pitch, float yaw); template void Matrix3::to_euler(float *roll, float *pitch, float *yaw); +template Vector3 Matrix3::operator *(const Vector3 &v) const; +template Matrix3 Matrix3::operator *(const Matrix3 &m) const; diff --git a/libraries/AP_Math/matrix3.h b/libraries/AP_Math/matrix3.h index db5cbe088e..f11b6153bf 100644 --- a/libraries/AP_Math/matrix3.h +++ b/libraries/AP_Math/matrix3.h @@ -90,27 +90,11 @@ public: { return *this = *this / num; } // multiplication by a vector - Vector3 operator *(const Vector3 &v) const - { - return Vector3(a.x * v.x + a.y * v.y + a.z * v.z, - b.x * v.x + b.y * v.y + b.z * v.z, - c.x * v.x + c.y * v.y + c.z * v.z); - } + Vector3 operator *(const Vector3 &v) const; // multiplication by another Matrix3 - Matrix3 operator *(const Matrix3 &m) const - { - Matrix3 temp (Vector3(a.x * m.a.x + a.y * m.b.x + a.z * m.c.x, - a.x * m.a.y + a.y * m.b.y + a.z * m.c.y, - a.x * m.a.z + a.y * m.b.z + a.z * m.c.z), - Vector3(b.x * m.a.x + b.y * m.b.x + b.z * m.c.x, - b.x * m.a.y + b.y * m.b.y + b.z * m.c.y, - b.x * m.a.z + b.y * m.b.z + b.z * m.c.z), - Vector3(c.x * m.a.x + c.y * m.b.x + c.z * m.c.x, - c.x * m.a.y + c.y * m.b.y + c.z * m.c.y, - c.x * m.a.z + c.y * m.b.z + c.z * m.c.z)); - return temp; - } + Matrix3 operator *(const Matrix3 &m) const; + Matrix3 &operator *=(const Matrix3 &m) { return *this = *this * m; } From 739294ca70b313d14b5394d4434a255ad608ba88 Mon Sep 17 00:00:00 2001 From: Michael Oborne Date: Wed, 21 Mar 2012 20:13:08 +0800 Subject: [PATCH 5/9] APM Planner 1.1.55 fix issue 573 fix issue 572 fix issue 571 fix issue 570 fix issue 564 fix issue 560 fix issue 555 fix issue 536 add CH6_LOITER_RATE_D fix joystick axis 5-8 - can use joystick for camera pan/tilt --- Tools/ArdupilotMegaPlanner/Common.cs | 4 +- Tools/ArdupilotMegaPlanner/CommsTCPSerial.cs | 10 + .../GCSViews/Configuration.Designer.cs | 88 +- .../GCSViews/Configuration.cs | 12 +- .../GCSViews/Configuration.resx | 11167 ++++++---------- .../GCSViews/FlightData.cs | 11 +- Tools/ArdupilotMegaPlanner/Joystick.cs | 9 + Tools/ArdupilotMegaPlanner/Log.cs | 2 +- Tools/ArdupilotMegaPlanner/MagCalib.cs | 2 +- Tools/ArdupilotMegaPlanner/MainV2.cs | 10 +- .../Properties/AssemblyInfo.cs | 2 +- Tools/ArdupilotMegaPlanner/Setup/Setup.cs | 14 +- .../bin/Release/ArdupilotMegaPlanner.pdb | Bin 1007104 -> 1007104 bytes Tools/ArdupilotMegaPlanner/temp.Designer.cs | 12 + Tools/ArdupilotMegaPlanner/temp.cs | 5 + 15 files changed, 4573 insertions(+), 6775 deletions(-) diff --git a/Tools/ArdupilotMegaPlanner/Common.cs b/Tools/ArdupilotMegaPlanner/Common.cs index 5f8e8df3ff..bb5aecd2d0 100644 --- a/Tools/ArdupilotMegaPlanner/Common.cs +++ b/Tools/ArdupilotMegaPlanner/Common.cs @@ -380,8 +380,8 @@ namespace ArdupilotMega CH6_OPTFLOW_KD = 19, CH6_NAV_I = 20, - - CH6_LOITER_RATE_P = 22 + CH6_LOITER_RATE_P = 22, + CH6_LOITER_RATE_D = 23 } diff --git a/Tools/ArdupilotMegaPlanner/CommsTCPSerial.cs b/Tools/ArdupilotMegaPlanner/CommsTCPSerial.cs index aa42322d42..0331169c87 100644 --- a/Tools/ArdupilotMegaPlanner/CommsTCPSerial.cs +++ b/Tools/ArdupilotMegaPlanner/CommsTCPSerial.cs @@ -19,6 +19,8 @@ namespace System.IO.Ports byte[] rbuffer = new byte[0]; int rbufferread = 0; + int retrys = 3; + public int WriteBufferSize { get; set; } public int WriteTimeout { get; set; } public int ReceivedBytesThreshold { get; set; } @@ -121,6 +123,14 @@ namespace System.IO.Ports client.Close(); } catch { } + + // this should only happen if we have established a connection in the first place + if (client != null && retrys > 0) + { + client.Connect(ArdupilotMega.MainV2.config["TCP_host"].ToString(), int.Parse(ArdupilotMega.MainV2.config["TCP_port"].ToString())); + retrys--; + } + throw new Exception("The socket/serialproxy is closed"); } } diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.Designer.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.Designer.cs index 5ec9e1d4f9..23aab4e460 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.Designer.cs @@ -30,8 +30,8 @@ { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Configuration)); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); this.Params = new System.Windows.Forms.DataGridView(); this.Command = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Value = new System.Windows.Forms.DataGridViewTextBoxColumn(); @@ -236,6 +236,8 @@ this.RATE_RLL_P = new System.Windows.Forms.NumericUpDown(); this.label91 = new System.Windows.Forms.Label(); this.TabPlanner = new System.Windows.Forms.TabPage(); + this.label33 = new System.Windows.Forms.Label(); + this.CMB_ratesensors = new System.Windows.Forms.ComboBox(); this.label26 = new System.Windows.Forms.Label(); this.CMB_videoresolutions = new System.Windows.Forms.ComboBox(); this.label12 = new System.Windows.Forms.Label(); @@ -287,8 +289,8 @@ this.BUT_load = new ArdupilotMega.MyButton(); this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); this.BUT_compare = new ArdupilotMega.MyButton(); - this.label33 = new System.Windows.Forms.Label(); - this.CMB_ratesensors = new System.Windows.Forms.ComboBox(); + this.myLabel3 = new ArdupilotMega.MyLabel(); + this.myLabel4 = new ArdupilotMega.MyLabel(); ((System.ComponentModel.ISupportInitialize)(this.Params)).BeginInit(); this.ConfigTabs.SuspendLayout(); this.TabAP.SuspendLayout(); @@ -409,14 +411,14 @@ this.Params.AllowUserToAddRows = false; this.Params.AllowUserToDeleteRows = false; resources.ApplyResources(this.Params, "Params"); - dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle3.BackColor = System.Drawing.Color.Maroon; - dataGridViewCellStyle3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - dataGridViewCellStyle3.ForeColor = System.Drawing.Color.White; - dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.Params.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle3; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle1.BackColor = System.Drawing.Color.Maroon; + dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle1.ForeColor = System.Drawing.Color.White; + dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.Params.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; this.Params.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.Params.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.Command, @@ -425,14 +427,14 @@ this.mavScale, this.RawValue}); this.Params.Name = "Params"; - dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.ActiveCaption; - dataGridViewCellStyle4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.Params.RowHeadersDefaultCellStyle = dataGridViewCellStyle4; + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.ActiveCaption; + dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.Params.RowHeadersDefaultCellStyle = dataGridViewCellStyle2; this.Params.RowHeadersVisible = false; this.Params.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.Params_CellValueChanged); // @@ -1093,6 +1095,8 @@ // // TabAC // + this.TabAC.Controls.Add(this.myLabel4); + this.TabAC.Controls.Add(this.myLabel3); this.TabAC.Controls.Add(this.TUNE_LOW); this.TabAC.Controls.Add(this.TUNE_HIGH); this.TabAC.Controls.Add(this.myLabel2); @@ -1765,6 +1769,25 @@ resources.ApplyResources(this.TabPlanner, "TabPlanner"); this.TabPlanner.Name = "TabPlanner"; // + // label33 + // + resources.ApplyResources(this.label33, "label33"); + this.label33.Name = "label33"; + // + // CMB_ratesensors + // + this.CMB_ratesensors.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CMB_ratesensors.FormattingEnabled = true; + this.CMB_ratesensors.Items.AddRange(new object[] { + resources.GetString("CMB_ratesensors.Items"), + resources.GetString("CMB_ratesensors.Items1"), + resources.GetString("CMB_ratesensors.Items2"), + resources.GetString("CMB_ratesensors.Items3"), + resources.GetString("CMB_ratesensors.Items4")}); + resources.ApplyResources(this.CMB_ratesensors, "CMB_ratesensors"); + this.CMB_ratesensors.Name = "CMB_ratesensors"; + this.CMB_ratesensors.SelectedIndexChanged += new System.EventHandler(this.CMB_ratesensors_SelectedIndexChanged); + // // label26 // resources.ApplyResources(this.label26, "label26"); @@ -2136,24 +2159,17 @@ this.BUT_compare.UseVisualStyleBackColor = true; this.BUT_compare.Click += new System.EventHandler(this.BUT_compare_Click); // - // label33 + // myLabel3 // - resources.ApplyResources(this.label33, "label33"); - this.label33.Name = "label33"; + resources.ApplyResources(this.myLabel3, "myLabel3"); + this.myLabel3.Name = "myLabel3"; + this.myLabel3.resize = false; // - // CMB_ratesensors + // myLabel4 // - this.CMB_ratesensors.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.CMB_ratesensors.FormattingEnabled = true; - this.CMB_ratesensors.Items.AddRange(new object[] { - resources.GetString("CMB_ratesensors.Items"), - resources.GetString("CMB_ratesensors.Items1"), - resources.GetString("CMB_ratesensors.Items2"), - resources.GetString("CMB_ratesensors.Items3"), - resources.GetString("CMB_ratesensors.Items4")}); - resources.ApplyResources(this.CMB_ratesensors, "CMB_ratesensors"); - this.CMB_ratesensors.Name = "CMB_ratesensors"; - this.CMB_ratesensors.SelectedIndexChanged += new System.EventHandler(this.CMB_ratesensors_SelectedIndexChanged); + resources.ApplyResources(this.myLabel4, "myLabel4"); + this.myLabel4.Name = "myLabel4"; + this.myLabel4.resize = false; // // Configuration // @@ -2546,5 +2562,7 @@ private System.Windows.Forms.NumericUpDown TUNE_HIGH; private System.Windows.Forms.Label label33; private System.Windows.Forms.ComboBox CMB_ratesensors; + private MyLabel myLabel4; + private MyLabel myLabel3; } } diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs index fa70b64583..b7023440b0 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs @@ -363,7 +363,9 @@ namespace ArdupilotMega.GCSViews thisctl.Minimum = -9000; thisctl.Value = (decimal)(float)param[value]; thisctl.Increment = (decimal)0.001; - if (thisctl.Name.EndsWith("_P") || thisctl.Name.EndsWith("_I") || thisctl.Name.EndsWith("_D") || thisctl.Value == 0 || thisctl.Value.ToString("0.###", new System.Globalization.CultureInfo("en-US")).Contains(".")) + if (thisctl.Name.EndsWith("_P") || thisctl.Name.EndsWith("_I") || thisctl.Name.EndsWith("_D") + || thisctl.Name.EndsWith("_LOW") || thisctl.Name.EndsWith("_HIGH") || thisctl.Value == 0 + || thisctl.Value.ToString("0.###", new System.Globalization.CultureInfo("en-US")).Contains(".")) { thisctl.DecimalPlaces = 3; } @@ -373,6 +375,12 @@ namespace ArdupilotMega.GCSViews thisctl.DecimalPlaces = 1; } + if (thisctl.Name.EndsWith("_IMAX")) + { + thisctl.Maximum = 180; + thisctl.Minimum = -180; + } + thisctl.Enabled = true; thisctl.BackColor = Color.FromArgb(0x43, 0x44, 0x45); @@ -403,7 +411,7 @@ namespace ArdupilotMega.GCSViews } if (text.Length == 0) { - Console.WriteLine(name + " not found"); + //Console.WriteLine(name + " not found"); } } diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.resx b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.resx index 58f1fa790f..337222af94 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.resx +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.resx @@ -192,6 +192,210 @@ Top, Bottom, Left, Right + + 111, 82 + + + 78, 20 + + + 11 + + + THR_FS_VALUE + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 0 + + + NoControl + + + 6, 86 + + + 50, 13 + + + 12 + + + FS Value + + + label5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 1 + + + 111, 59 + + + 78, 20 + + + 9 + + + THR_MAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 2 + + + NoControl + + + 6, 63 + + + 27, 13 + + + 13 + + + Max + + + label6 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 3 + + + 111, 36 + + + 78, 20 + + + 7 + + + THR_MIN + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 4 + + + NoControl + + + 6, 40 + + + 24, 13 + + + 14 + + + Min + + + label7 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 5 + + + 111, 13 + + + 78, 20 + + + 5 + + + TRIM_THROTTLE + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 6 + + + NoControl + + + 6, 17 + + + 36, 13 + + + 15 + + + Cruise + + + label8 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 7 + + + 405, 217 + + + 195, 108 + + + 0 + + + Throttle 0-100% + groupBox3 @@ -204,6 +408,210 @@ 0 + + 111, 82 + + + 78, 20 + + + 0 + + + ARSPD_RATIO + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 0 + + + NoControl + + + 6, 87 + + + 32, 13 + + + 1 + + + Ratio + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 1 + + + 111, 59 + + + 78, 20 + + + 2 + + + ARSPD_FBW_MAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 2 + + + NoControl + + + 6, 59 + + + 53, 13 + + + 3 + + + FBW max + + + label2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 3 + + + 111, 36 + + + 78, 20 + + + 4 + + + ARSPD_FBW_MIN + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 4 + + + NoControl + + + 6, 40 + + + 50, 13 + + + 5 + + + FBW min + + + label3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 5 + + + 111, 13 + + + 78, 20 + + + 5 + + + TRIM_ARSPD_CM + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 6 + + + NoControl + + + 6, 17 + + + 64, 13 + + + 6 + + + Cruise + + + label4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 7 + + + 406, 325 + + + 195, 108 + + + 1 + + + Airspeed m/s + groupBox1 @@ -216,6 +624,162 @@ 1 + + 111, 59 + + + 78, 20 + + + 9 + + + LIM_PITCH_MIN + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 0 + + + NoControl + + + 6, 63 + + + 51, 13 + + + 10 + + + Pitch Min + + + label39 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 1 + + + 111, 36 + + + 78, 20 + + + 7 + + + LIM_PITCH_MAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 2 + + + NoControl + + + 6, 40 + + + 54, 13 + + + 11 + + + Pitch Max + + + label38 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 3 + + + 111, 13 + + + 78, 20 + + + 5 + + + LIM_ROLL_CD + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 4 + + + NoControl + + + 6, 17 + + + 55, 13 + + + 12 + + + Bank Max + + + label37 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 5 + + + 205, 325 + + + 195, 108 + + + 2 + + + Navigation Angles + groupBox2 @@ -228,6 +792,114 @@ 2 + + 111, 36 + + + 78, 20 + + + 7 + + + XTRK_ANGLE_CD + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox15 + + + 0 + + + NoControl + + + 6, 40 + + + 61, 13 + + + 8 + + + Entry Angle + + + label79 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox15 + + + 1 + + + 111, 13 + + + 78, 20 + + + 5 + + + XTRK_GAIN_SC + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox15 + + + 2 + + + NoControl + + + 6, 17 + + + 52, 13 + + + 9 + + + Gain (cm) + + + label80 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox15 + + + 3 + + + 4, 325 + + + 195, 108 + + + 3 + + + Xtrack Pids + groupBox15 @@ -240,6 +912,162 @@ 3 + + 111, 13 + + + 78, 20 + + + 13 + + + KFF_PTCH2THR + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox16 + + + 0 + + + NoControl + + + 6, 17 + + + 36, 13 + + + 14 + + + P to T + + + label83 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox16 + + + 1 + + + 111, 59 + + + 78, 20 + + + 9 + + + KFF_RDDRMIX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox16 + + + 2 + + + NoControl + + + 6, 63 + + + 61, 13 + + + 15 + + + Rudder Mix + + + label78 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox16 + + + 3 + + + 111, 36 + + + 78, 20 + + + 7 + + + KFF_PTCHCOMP + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox16 + + + 4 + + + NoControl + + + 6, 40 + + + 61, 13 + + + 16 + + + Pitch Comp + + + label81 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox16 + + + 5 + + + 205, 217 + + + 195, 108 + + + 4 + + + Other Mix's + groupBox16 @@ -252,6 +1080,210 @@ 4 + + 111, 82 + + + 78, 20 + + + 11 + + + ENRGY2THR_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 0 + + + NoControl + + + 6, 86 + + + 54, 13 + + + 12 + + + INT_MAX + + + label73 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 1 + + + 111, 59 + + + 78, 20 + + + 9 + + + ENRGY2THR_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 2 + + + NoControl + + + 6, 63 + + + 15, 13 + + + 13 + + + D + + + label74 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 3 + + + 111, 36 + + + 78, 20 + + + 7 + + + ENRGY2THR_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label75 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 5 + + + 111, 13 + + + 78, 20 + + + 5 + + + ENRGY2THR_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 6 + + + NoControl + + + 6, 17 + + + 14, 13 + + + 15 + + + P + + + label76 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 7 + + + 4, 217 + + + 195, 108 + + + 5 + + + Energy/Alt Pid + groupBox14 @@ -264,6 +1296,210 @@ 5 + + 111, 82 + + + 78, 20 + + + 0 + + + ALT2PTCH_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 0 + + + NoControl + + + 6, 86 + + + 54, 13 + + + 1 + + + INT_MAX + + + label69 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 1 + + + 111, 59 + + + 78, 20 + + + 2 + + + ALT2PTCH_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 2 + + + NoControl + + + 6, 63 + + + 15, 13 + + + 3 + + + D + + + label70 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 3 + + + 111, 36 + + + 78, 20 + + + 4 + + + ALT2PTCH_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 5 + + + I + + + label71 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 5 + + + 111, 13 + + + 78, 20 + + + 6 + + + ALT2PTCH_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 6 + + + NoControl + + + 6, 17 + + + 14, 13 + + + 7 + + + P + + + label72 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 7 + + + 406, 109 + + + 195, 108 + + + 6 + + + Nav Pitch Alt Pid + groupBox13 @@ -276,6 +1512,210 @@ 6 + + 111, 82 + + + 78, 20 + + + 0 + + + ARSP2PTCH_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 0 + + + NoControl + + + 6, 86 + + + 54, 13 + + + 1 + + + INT_MAX + + + label65 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 1 + + + 111, 59 + + + 78, 20 + + + 2 + + + ARSP2PTCH_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 2 + + + NoControl + + + 6, 63 + + + 15, 13 + + + 3 + + + D + + + label66 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 3 + + + 111, 36 + + + 78, 20 + + + 4 + + + ARSP2PTCH_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 5 + + + I + + + label67 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 5 + + + 111, 13 + + + 78, 20 + + + 6 + + + ARSP2PTCH_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 6 + + + NoControl + + + 6, 17 + + + 14, 13 + + + 7 + + + P + + + label68 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 7 + + + 205, 109 + + + 195, 108 + + + 7 + + + Nav Pitch AS Pid + groupBox12 @@ -288,6 +1728,210 @@ 7 + + 111, 82 + + + 78, 20 + + + 11 + + + HDNG2RLL_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 0 + + + NoControl + + + 6, 86 + + + 54, 13 + + + 12 + + + INT_MAX + + + label61 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 1 + + + 111, 59 + + + 78, 20 + + + 9 + + + HDNG2RLL_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 2 + + + NoControl + + + 6, 63 + + + 15, 13 + + + 13 + + + D + + + label62 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 3 + + + 111, 36 + + + 78, 20 + + + 7 + + + HDNG2RLL_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label63 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 5 + + + 111, 13 + + + 78, 20 + + + 5 + + + HDNG2RLL_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 6 + + + NoControl + + + 6, 17 + + + 14, 13 + + + 15 + + + P + + + label64 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 7 + + + 4, 109 + + + 195, 108 + + + 8 + + + Nav Roll Pid + groupBox11 @@ -300,6 +1944,210 @@ 8 + + 111, 82 + + + 78, 20 + + + 11 + + + YW2SRV_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 0 + + + NoControl + + + 6, 86 + + + 54, 13 + + + 12 + + + INT_MAX + + + label57 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 1 + + + 111, 59 + + + 78, 20 + + + 9 + + + YW2SRV_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 2 + + + NoControl + + + 6, 63 + + + 15, 13 + + + 13 + + + D + + + label58 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 3 + + + 111, 36 + + + 78, 20 + + + 7 + + + YW2SRV_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label59 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 5 + + + 111, 13 + + + 78, 20 + + + 5 + + + YW2SRV_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 6 + + + NoControl + + + 6, 17 + + + 14, 13 + + + 15 + + + P + + + label60 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 7 + + + 406, 1 + + + 195, 108 + + + 9 + + + Servo Yaw Pid + groupBox10 @@ -312,6 +2160,210 @@ 9 + + 111, 82 + + + 78, 20 + + + 11 + + + PTCH2SRV_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 0 + + + NoControl + + + 6, 86 + + + 54, 13 + + + 12 + + + INT_MAX + + + label53 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 1 + + + 111, 59 + + + 78, 20 + + + 9 + + + PTCH2SRV_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 2 + + + NoControl + + + 6, 63 + + + 15, 13 + + + 13 + + + D + + + label54 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 3 + + + 111, 36 + + + 78, 20 + + + 7 + + + PTCH2SRV_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label55 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 5 + + + 111, 13 + + + 78, 20 + + + 5 + + + PTCH2SRV_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 6 + + + NoControl + + + 6, 17 + + + 14, 13 + + + 15 + + + P + + + label56 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 7 + + + 205, 1 + + + 195, 108 + + + 10 + + + Servo Pitch Pid + groupBox9 @@ -324,6 +2376,210 @@ 10 + + 111, 82 + + + 78, 20 + + + 11 + + + RLL2SRV_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 0 + + + NoControl + + + 6, 86 + + + 54, 13 + + + 12 + + + INT_MAX + + + label49 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 1 + + + 111, 59 + + + 78, 20 + + + 9 + + + RLL2SRV_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 2 + + + NoControl + + + 6, 63 + + + 15, 13 + + + 13 + + + D + + + label50 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 3 + + + 111, 36 + + + 78, 20 + + + 7 + + + RLL2SRV_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label51 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 5 + + + 111, 13 + + + 78, 20 + + + 5 + + + RLL2SRV_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 6 + + + NoControl + + + 6, 17 + + + 14, 13 + + + 15 + + + P + + + label52 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 7 + + + 4, 1 + + + 195, 108 + + + 11 + + + Servo Roll Pid + groupBox8 @@ -363,6 +2619,63 @@ 0 + + 626, 294 + + + 27, 23 + + + 24 + + + Max + + + myLabel4 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + TabAC + + + 0 + + + 534, 295 + + + 29, 23 + + + 23 + + + Min + + + myLabel3 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + TabAC + + + 1 + + + 569, 298 + + + 51, 20 + + + 22 + TUNE_LOW @@ -373,7 +2686,16 @@ TabAC - 0 + 2 + + + 659, 298 + + + 46, 20 + + + 21 TUNE_HIGH @@ -385,7 +2707,19 @@ TabAC - 1 + 3 + + + 534, 270 + + + 53, 23 + + + 20 + + + Ch6 Opt myLabel2 @@ -397,7 +2731,82 @@ TabAC - 2 + 4 + + + CH6_NONE + + + CH6_STABILIZE_KP + + + CH6_STABILIZE_KI + + + CH6_YAW_KP + + + CH6_RATE_KP + + + CH6_RATE_KI + + + CH6_YAW_RATE_KP + + + CH6_THROTTLE_KP + + + CH6_TOP_BOTTOM_RATIO + + + CH6_RELAY + + + CH6_TRAVERSE_SPEED + + + CH6_NAV_P + + + CH6_LOITER_P + + + CH6_HELI_EXTERNAL_GYRO + + + CH6_THR_HOLD_KP + + + CH6_Z_GAIN + + + CH6_DAMP + + + CH6_OPTFLOW_KP + + + CH6_OPTFLOW_KI + + + CH6_OPTFLOW_KD + + + CH6_NAV_I + + + CH6_RATE_KD + + + 593, 270 + + + 112, 21 + + + 19 TUNE @@ -409,7 +2818,19 @@ TabAC - 3 + 5 + + + 534, 322 + + + 53, 23 + + + 18 + + + Ch7 Opt myLabel1 @@ -421,7 +2842,40 @@ TabAC - 4 + 6 + + + Do Nothing + + + + + + + + + Simple Mode + + + RTL + + + + + + + + + Save WP + + + 593, 322 + + + 112, 21 + + + 17 CH7_OPT @@ -433,8 +2887,212 @@ TabAC + 7 + + + 80, 60 + + + 78, 20 + + + 14 + + + THR_RATE_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 0 + + + NoControl + + + 6, 63 + + + 10, 13 + + + 15 + + + D + + + label29 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 1 + + + NoControl + + + 6, 86 + + + 65, 13 + + + 16 + + + IMAX + + + label14 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 2 + + + 80, 83 + + + 78, 20 + + + 11 + + + THR_RATE_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 3 + + + 80, 37 + + + 78, 20 + + + 7 + + + THR_RATE_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label20 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + 5 + + 80, 13 + + + 78, 20 + + + 5 + + + THR_RATE_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 6 + + + NoControl + + + 6, 16 + + + 14, 13 + + + 15 + + + P + + + label25 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 7 + + + 6, 260 + + + 170, 110 + + + 16 + + + Throttle Rate + groupBox5 @@ -445,7 +3103,22 @@ TabAC - 6 + 8 + + + True + + + 3, 240 + + + 154, 17 + + + 13 + + + Lock Pitch and Roll Values CHK_lockrollpitch @@ -457,8 +3130,260 @@ TabAC + 9 + + + 80, 60 + + + 78, 20 + + + 18 + + + NAV_LAT_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 0 + + + NoControl + + + 6, 63 + + + 10, 13 + + + 19 + + + D + + + label27 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 1 + + + 80, 107 + + + 78, 20 + + + 16 + + + WP_SPEED_MAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 2 + + + NoControl + + + 6, 110 + + + 54, 13 + + + 17 + + + m/s + + + label9 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 3 + + + 80, 84 + + + 78, 20 + + + 11 + + + NAV_LAT_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 4 + + + NoControl + + + 6, 87 + + + 65, 13 + + + 12 + + + IMAX + + + label13 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 5 + + + 80, 37 + + + 78, 20 + + 7 + + NAV_LAT_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 6 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label15 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 7 + + + 80, 13 + + + 78, 20 + + + 5 + + + NAV_LAT_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 8 + + + NoControl + + + 6, 16 + + + 14, 13 + + + 15 + + + P + + + label16 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 9 + + + 534, 126 + + + 170, 131 + + + 0 + + + Nav WP + groupBox4 @@ -469,7 +3394,67 @@ TabAC - 8 + 10 + + + 80, 13 + + + 78, 20 + + + 5 + + + XTRK_GAIN_SC1 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox6 + + + 0 + + + NoControl + + + 6, 16 + + + 38, 13 + + + 15 + + + Gain + + + label18 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox6 + + + 1 + + + 358, 260 + + + 170, 43 + + + 2 + + + Crosstrack Correction groupBox6 @@ -481,7 +3466,163 @@ TabAC - 9 + 11 + + + 80, 63 + + + 78, 20 + + + 11 + + + THR_ALT_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox7 + + + 0 + + + NoControl + + + 6, 66 + + + 65, 13 + + + 12 + + + IMAX + + + label19 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox7 + + + 1 + + + 80, 37 + + + 78, 20 + + + 7 + + + THR_ALT_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox7 + + + 2 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label21 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox7 + + + 3 + + + 80, 13 + + + 78, 20 + + + 5 + + + THR_ALT_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox7 + + + 4 + + + NoControl + + + 6, 16 + + + 14, 13 + + + 15 + + + P + + + label22 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox7 + + + 5 + + + 182, 260 + + + 170, 110 + + + 3 + + + Altitude Hold groupBox7 @@ -493,7 +3634,163 @@ TabAC - 10 + 12 + + + 80, 61 + + + 78, 20 + + + 11 + + + HLD_LAT_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox19 + + + 0 + + + NoControl + + + 6, 64 + + + 65, 13 + + + 12 + + + IMAX + + + label28 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox19 + + + 1 + + + 80, 37 + + + 78, 20 + + + 7 + + + HLD_LAT_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox19 + + + 2 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label30 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox19 + + + 3 + + + 80, 13 + + + 78, 20 + + + 5 + + + HLD_LAT_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox19 + + + 4 + + + NoControl + + + 6, 16 + + + 14, 13 + + + 15 + + + P + + + label31 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox19 + + + 5 + + + 531, 6 + + + 170, 95 + + + 6 + + + Loiter groupBox19 @@ -505,8 +3802,164 @@ TabAC + 13 + + + 80, 63 + + + 78, 20 + + 11 + + STB_YAW_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox20 + + + 0 + + + NoControl + + + 6, 66 + + + 65, 13 + + + 12 + + + IMAX + + + label32 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox20 + + + 1 + + + 80, 37 + + + 78, 20 + + + 7 + + + STB_YAW_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox20 + + + 2 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label34 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox20 + + + 3 + + + 80, 13 + + + 78, 20 + + + 5 + + + STB_YAW_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox20 + + + 4 + + + NoControl + + + 6, 16 + + + 14, 13 + + + 15 + + + P + + + label35 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox20 + + + 5 + + + 358, 6 + + + 170, 95 + + + 7 + + + Stabilize Yaw + groupBox20 @@ -517,8 +3970,212 @@ TabAC + 14 + + + 80, 88 + + + 78, 20 + + + 16 + + + STAB_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 0 + + + NoControl + + + 6, 91 + + + 65, 13 + + + 17 + + + Stabilize D + + + lblSTAB_D + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 1 + + + 80, 63 + + + 78, 20 + + + 11 + + + STB_PIT_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 2 + + + NoControl + + + 6, 66 + + + 65, 13 + + 12 + + IMAX + + + label36 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 3 + + + 80, 37 + + + 78, 20 + + + 7 + + + STB_PIT_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label41 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 5 + + + 80, 13 + + + 78, 20 + + + 5 + + + STB_PIT_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 6 + + + NoControl + + + 6, 16 + + + 14, 13 + + + 15 + + + P + + + label42 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 7 + + + 182, 6 + + + 170, 114 + + + 8 + + + Stabilize Pitch + groupBox21 @@ -529,7 +4186,163 @@ TabAC - 13 + 15 + + + 80, 63 + + + 78, 20 + + + 11 + + + STB_RLL_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 0 + + + NoControl + + + 6, 66 + + + 65, 13 + + + 12 + + + IMAX + + + label43 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 1 + + + 80, 37 + + + 78, 20 + + + 7 + + + STB_RLL_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 2 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label45 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 3 + + + 80, 13 + + + 78, 20 + + + 5 + + + STB_RLL_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 4 + + + NoControl + + + 6, 16 + + + 14, 13 + + + 15 + + + P + + + label46 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 5 + + + 6, 6 + + + 170, 95 + + + 9 + + + Stabilize Roll groupBox22 @@ -541,7 +4354,211 @@ TabAC - 14 + 16 + + + 80, 60 + + + 78, 20 + + + 8 + + + RATE_YAW_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 0 + + + NoControl + + + 6, 63 + + + 10, 13 + + + 9 + + + D + + + label10 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 1 + + + 80, 84 + + + 78, 20 + + + 0 + + + RATE_YAW_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 2 + + + NoControl + + + 6, 87 + + + 65, 13 + + + 1 + + + IMAX + + + label47 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 3 + + + 80, 37 + + + 78, 20 + + + 4 + + + RATE_YAW_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 5 + + + I + + + label77 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 5 + + + 80, 13 + + + 78, 20 + + + 6 + + + RATE_YAW_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 6 + + + NoControl + + + 6, 16 + + + 14, 13 + + + 7 + + + P + + + label82 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 7 + + + 358, 126 + + + 170, 108 + + + 10 + + + Rate Yaw groupBox23 @@ -553,7 +4570,211 @@ TabAC - 15 + 17 + + + 80, 60 + + + 78, 20 + + + 10 + + + RATE_PIT_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 0 + + + NoControl + + + 6, 63 + + + 10, 13 + + + 11 + + + D + + + label11 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 1 + + + 80, 83 + + + 78, 20 + + + 0 + + + RATE_PIT_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 2 + + + NoControl + + + 6, 86 + + + 65, 13 + + + 1 + + + IMAX + + + label84 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 3 + + + 80, 37 + + + 78, 20 + + + 4 + + + RATE_PIT_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 5 + + + I + + + label86 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 5 + + + 80, 13 + + + 78, 20 + + + 6 + + + RATE_PIT_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 6 + + + NoControl + + + 6, 16 + + + 14, 13 + + + 7 + + + P + + + label87 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 7 + + + 182, 126 + + + 170, 108 + + + 11 + + + Rate Pitch groupBox24 @@ -565,7 +4786,211 @@ TabAC - 16 + 18 + + + 80, 60 + + + 78, 20 + + + 12 + + + RATE_RLL_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 0 + + + NoControl + + + 6, 63 + + + 10, 13 + + + 13 + + + D + + + label17 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 1 + + + 80, 83 + + + 78, 20 + + + 0 + + + RATE_RLL_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 2 + + + NoControl + + + 6, 86 + + + 68, 13 + + + 1 + + + IMAX + + + label88 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 3 + + + 80, 37 + + + 78, 20 + + + 4 + + + RATE_RLL_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 5 + + + I + + + label90 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 5 + + + 80, 13 + + + 78, 20 + + + 6 + + + RATE_RLL_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 6 + + + NoControl + + + 6, 16 + + + 14, 13 + + + 7 + + + P + + + label91 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 7 + + + 6, 126 + + + 170, 108 + + + 12 + + + Rate Roll groupBox25 @@ -577,7 +5002,7 @@ TabAC - 17 + 19 4, 22 @@ -744,9 +5169,6 @@ 4 - - 17, 17 - NoControl @@ -762,6 +5184,9 @@ GDI+ (old type) + + 17, 17 + OpenGL = Disabled GDI+ = Enabled @@ -1907,6711 +6332,6 @@ GDI+ = Enabled 2 - - THR_FS_VALUE - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 0 - - - label5 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 1 - - - THR_MAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 2 - - - label6 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 3 - - - THR_MIN - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 4 - - - label7 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 5 - - - TRIM_THROTTLE - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 6 - - - label8 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 7 - - - 405, 217 - - - 195, 108 - - - 0 - - - Throttle 0-100% - - - groupBox3 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 0 - - - 111, 82 - - - 78, 20 - - - 11 - - - THR_FS_VALUE - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 0 - - - NoControl - - - 6, 86 - - - 50, 13 - - - 12 - - - FS Value - - - label5 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 1 - - - 111, 59 - - - 78, 20 - - - 9 - - - THR_MAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 2 - - - NoControl - - - 6, 63 - - - 27, 13 - - - 13 - - - Max - - - label6 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 3 - - - 111, 36 - - - 78, 20 - - - 7 - - - THR_MIN - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 4 - - - NoControl - - - 6, 40 - - - 24, 13 - - - 14 - - - Min - - - label7 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 5 - - - 111, 13 - - - 78, 20 - - - 5 - - - TRIM_THROTTLE - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 6 - - - NoControl - - - 6, 17 - - - 36, 13 - - - 15 - - - Cruise - - - label8 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 7 - - - ARSPD_RATIO - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 0 - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 1 - - - ARSPD_FBW_MAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 2 - - - label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 3 - - - ARSPD_FBW_MIN - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 4 - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 5 - - - TRIM_ARSPD_CM - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 6 - - - label4 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 7 - - - 406, 325 - - - 195, 108 - - - 1 - - - Airspeed m/s - - - groupBox1 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 1 - - - 111, 82 - - - 78, 20 - - - 0 - - - ARSPD_RATIO - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 0 - - - NoControl - - - 6, 87 - - - 32, 13 - - - 1 - - - Ratio - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 1 - - - 111, 59 - - - 78, 20 - - - 2 - - - ARSPD_FBW_MAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 2 - - - NoControl - - - 6, 59 - - - 53, 13 - - - 3 - - - FBW max - - - label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 3 - - - 111, 36 - - - 78, 20 - - - 4 - - - ARSPD_FBW_MIN - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 4 - - - NoControl - - - 6, 40 - - - 50, 13 - - - 5 - - - FBW min - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 5 - - - 111, 13 - - - 78, 20 - - - 5 - - - TRIM_ARSPD_CM - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 6 - - - NoControl - - - 6, 17 - - - 64, 13 - - - 6 - - - Cruise - - - label4 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 7 - - - LIM_PITCH_MIN - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 0 - - - label39 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 1 - - - LIM_PITCH_MAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 2 - - - label38 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 3 - - - LIM_ROLL_CD - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 4 - - - label37 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 5 - - - 205, 325 - - - 195, 108 - - - 2 - - - Navigation Angles - - - groupBox2 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 2 - - - 111, 59 - - - 78, 20 - - - 9 - - - LIM_PITCH_MIN - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 0 - - - NoControl - - - 6, 63 - - - 51, 13 - - - 10 - - - Pitch Min - - - label39 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 1 - - - 111, 36 - - - 78, 20 - - - 7 - - - LIM_PITCH_MAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 2 - - - NoControl - - - 6, 40 - - - 54, 13 - - - 11 - - - Pitch Max - - - label38 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 3 - - - 111, 13 - - - 78, 20 - - - 5 - - - LIM_ROLL_CD - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 4 - - - NoControl - - - 6, 17 - - - 55, 13 - - - 12 - - - Bank Max - - - label37 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 5 - - - XTRK_ANGLE_CD - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox15 - - - 0 - - - label79 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox15 - - - 1 - - - XTRK_GAIN_SC - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox15 - - - 2 - - - label80 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox15 - - - 3 - - - 4, 325 - - - 195, 108 - - - 3 - - - Xtrack Pids - - - groupBox15 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 3 - - - 111, 36 - - - 78, 20 - - - 7 - - - XTRK_ANGLE_CD - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox15 - - - 0 - - - NoControl - - - 6, 40 - - - 61, 13 - - - 8 - - - Entry Angle - - - label79 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox15 - - - 1 - - - 111, 13 - - - 78, 20 - - - 5 - - - XTRK_GAIN_SC - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox15 - - - 2 - - - NoControl - - - 6, 17 - - - 52, 13 - - - 9 - - - Gain (cm) - - - label80 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox15 - - - 3 - - - KFF_PTCH2THR - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox16 - - - 0 - - - label83 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox16 - - - 1 - - - KFF_RDDRMIX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox16 - - - 2 - - - label78 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox16 - - - 3 - - - KFF_PTCHCOMP - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox16 - - - 4 - - - label81 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox16 - - - 5 - - - 205, 217 - - - 195, 108 - - - 4 - - - Other Mix's - - - groupBox16 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 4 - - - 111, 13 - - - 78, 20 - - - 13 - - - KFF_PTCH2THR - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox16 - - - 0 - - - NoControl - - - 6, 17 - - - 36, 13 - - - 14 - - - P to T - - - label83 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox16 - - - 1 - - - 111, 59 - - - 78, 20 - - - 9 - - - KFF_RDDRMIX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox16 - - - 2 - - - NoControl - - - 6, 63 - - - 61, 13 - - - 15 - - - Rudder Mix - - - label78 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox16 - - - 3 - - - 111, 36 - - - 78, 20 - - - 7 - - - KFF_PTCHCOMP - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox16 - - - 4 - - - NoControl - - - 6, 40 - - - 61, 13 - - - 16 - - - Pitch Comp - - - label81 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox16 - - - 5 - - - ENRGY2THR_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 0 - - - label73 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 1 - - - ENRGY2THR_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 2 - - - label74 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 3 - - - ENRGY2THR_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 4 - - - label75 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 5 - - - ENRGY2THR_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 6 - - - label76 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 7 - - - 4, 217 - - - 195, 108 - - - 5 - - - Energy/Alt Pid - - - groupBox14 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 5 - - - 111, 82 - - - 78, 20 - - - 11 - - - ENRGY2THR_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 0 - - - NoControl - - - 6, 86 - - - 54, 13 - - - 12 - - - INT_MAX - - - label73 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 1 - - - 111, 59 - - - 78, 20 - - - 9 - - - ENRGY2THR_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 2 - - - NoControl - - - 6, 63 - - - 15, 13 - - - 13 - - - D - - - label74 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 3 - - - 111, 36 - - - 78, 20 - - - 7 - - - ENRGY2THR_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label75 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 5 - - - 111, 13 - - - 78, 20 - - - 5 - - - ENRGY2THR_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 6 - - - NoControl - - - 6, 17 - - - 14, 13 - - - 15 - - - P - - - label76 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 7 - - - ALT2PTCH_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 0 - - - label69 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 1 - - - ALT2PTCH_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 2 - - - label70 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 3 - - - ALT2PTCH_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 4 - - - label71 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 5 - - - ALT2PTCH_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 6 - - - label72 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 7 - - - 406, 109 - - - 195, 108 - - - 6 - - - Nav Pitch Alt Pid - - - groupBox13 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 6 - - - 111, 82 - - - 78, 20 - - - 0 - - - ALT2PTCH_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 0 - - - NoControl - - - 6, 86 - - - 54, 13 - - - 1 - - - INT_MAX - - - label69 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 1 - - - 111, 59 - - - 78, 20 - - - 2 - - - ALT2PTCH_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 2 - - - NoControl - - - 6, 63 - - - 15, 13 - - - 3 - - - D - - - label70 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 3 - - - 111, 36 - - - 78, 20 - - - 4 - - - ALT2PTCH_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 5 - - - I - - - label71 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 5 - - - 111, 13 - - - 78, 20 - - - 6 - - - ALT2PTCH_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 6 - - - NoControl - - - 6, 17 - - - 14, 13 - - - 7 - - - P - - - label72 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 7 - - - ARSP2PTCH_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 0 - - - label65 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 1 - - - ARSP2PTCH_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 2 - - - label66 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 3 - - - ARSP2PTCH_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 4 - - - label67 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 5 - - - ARSP2PTCH_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 6 - - - label68 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 7 - - - 205, 109 - - - 195, 108 - - - 7 - - - Nav Pitch AS Pid - - - groupBox12 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 7 - - - 111, 82 - - - 78, 20 - - - 0 - - - ARSP2PTCH_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 0 - - - NoControl - - - 6, 86 - - - 54, 13 - - - 1 - - - INT_MAX - - - label65 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 1 - - - 111, 59 - - - 78, 20 - - - 2 - - - ARSP2PTCH_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 2 - - - NoControl - - - 6, 63 - - - 15, 13 - - - 3 - - - D - - - label66 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 3 - - - 111, 36 - - - 78, 20 - - - 4 - - - ARSP2PTCH_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 5 - - - I - - - label67 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 5 - - - 111, 13 - - - 78, 20 - - - 6 - - - ARSP2PTCH_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 6 - - - NoControl - - - 6, 17 - - - 14, 13 - - - 7 - - - P - - - label68 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 7 - - - HDNG2RLL_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 0 - - - label61 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 1 - - - HDNG2RLL_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 2 - - - label62 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 3 - - - HDNG2RLL_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 4 - - - label63 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 5 - - - HDNG2RLL_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 6 - - - label64 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 7 - - - 4, 109 - - - 195, 108 - - - 8 - - - Nav Roll Pid - - - groupBox11 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 8 - - - 111, 82 - - - 78, 20 - - - 11 - - - HDNG2RLL_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 0 - - - NoControl - - - 6, 86 - - - 54, 13 - - - 12 - - - INT_MAX - - - label61 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 1 - - - 111, 59 - - - 78, 20 - - - 9 - - - HDNG2RLL_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 2 - - - NoControl - - - 6, 63 - - - 15, 13 - - - 13 - - - D - - - label62 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 3 - - - 111, 36 - - - 78, 20 - - - 7 - - - HDNG2RLL_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label63 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 5 - - - 111, 13 - - - 78, 20 - - - 5 - - - HDNG2RLL_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 6 - - - NoControl - - - 6, 17 - - - 14, 13 - - - 15 - - - P - - - label64 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 7 - - - YW2SRV_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 0 - - - label57 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 1 - - - YW2SRV_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 2 - - - label58 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 3 - - - YW2SRV_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 4 - - - label59 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 5 - - - YW2SRV_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 6 - - - label60 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 7 - - - 406, 1 - - - 195, 108 - - - 9 - - - Servo Yaw Pid - - - groupBox10 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 9 - - - 111, 82 - - - 78, 20 - - - 11 - - - YW2SRV_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 0 - - - NoControl - - - 6, 86 - - - 54, 13 - - - 12 - - - INT_MAX - - - label57 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 1 - - - 111, 59 - - - 78, 20 - - - 9 - - - YW2SRV_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 2 - - - NoControl - - - 6, 63 - - - 15, 13 - - - 13 - - - D - - - label58 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 3 - - - 111, 36 - - - 78, 20 - - - 7 - - - YW2SRV_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label59 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 5 - - - 111, 13 - - - 78, 20 - - - 5 - - - YW2SRV_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 6 - - - NoControl - - - 6, 17 - - - 14, 13 - - - 15 - - - P - - - label60 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 7 - - - PTCH2SRV_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 0 - - - label53 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 1 - - - PTCH2SRV_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 2 - - - label54 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 3 - - - PTCH2SRV_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 4 - - - label55 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 5 - - - PTCH2SRV_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 6 - - - label56 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 7 - - - 205, 1 - - - 195, 108 - - - 10 - - - Servo Pitch Pid - - - groupBox9 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 10 - - - 111, 82 - - - 78, 20 - - - 11 - - - PTCH2SRV_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 0 - - - NoControl - - - 6, 86 - - - 54, 13 - - - 12 - - - INT_MAX - - - label53 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 1 - - - 111, 59 - - - 78, 20 - - - 9 - - - PTCH2SRV_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 2 - - - NoControl - - - 6, 63 - - - 15, 13 - - - 13 - - - D - - - label54 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 3 - - - 111, 36 - - - 78, 20 - - - 7 - - - PTCH2SRV_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label55 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 5 - - - 111, 13 - - - 78, 20 - - - 5 - - - PTCH2SRV_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 6 - - - NoControl - - - 6, 17 - - - 14, 13 - - - 15 - - - P - - - label56 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 7 - - - RLL2SRV_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 0 - - - label49 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 1 - - - RLL2SRV_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 2 - - - label50 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 3 - - - RLL2SRV_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 4 - - - label51 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 5 - - - RLL2SRV_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 6 - - - label52 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 7 - - - 4, 1 - - - 195, 108 - - - 11 - - - Servo Roll Pid - - - groupBox8 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 11 - - - 111, 82 - - - 78, 20 - - - 11 - - - RLL2SRV_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 0 - - - NoControl - - - 6, 86 - - - 54, 13 - - - 12 - - - INT_MAX - - - label49 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 1 - - - 111, 59 - - - 78, 20 - - - 9 - - - RLL2SRV_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 2 - - - NoControl - - - 6, 63 - - - 15, 13 - - - 13 - - - D - - - label50 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 3 - - - 111, 36 - - - 78, 20 - - - 7 - - - RLL2SRV_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label51 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 5 - - - 111, 13 - - - 78, 20 - - - 5 - - - RLL2SRV_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 6 - - - NoControl - - - 6, 17 - - - 14, 13 - - - 15 - - - P - - - label52 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 7 - - - 543, 297 - - - 78, 20 - - - 22 - - - TUNE_LOW - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 0 - - - 627, 296 - - - 78, 20 - - - 21 - - - TUNE_HIGH - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 1 - - - 534, 270 - - - 53, 23 - - - 20 - - - Ch6 Opt - - - myLabel2 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - TabAC - - - 2 - - - CH6_NONE - - - CH6_STABILIZE_KP - - - CH6_STABILIZE_KI - - - CH6_YAW_KP - - - CH6_RATE_KP - - - CH6_RATE_KI - - - CH6_YAW_RATE_KP - - - CH6_THROTTLE_KP - - - CH6_TOP_BOTTOM_RATIO - - - CH6_RELAY - - - CH6_TRAVERSE_SPEED - - - CH6_NAV_P - - - CH6_LOITER_P - - - CH6_HELI_EXTERNAL_GYRO - - - CH6_THR_HOLD_KP - - - CH6_Z_GAIN - - - CH6_DAMP - - - CH6_OPTFLOW_KP - - - CH6_OPTFLOW_KI - - - CH6_OPTFLOW_KD - - - CH6_NAV_I - - - CH6_RATE_KD - - - 593, 270 - - - 112, 21 - - - 19 - - - TUNE - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 3 - - - 534, 322 - - - 53, 23 - - - 18 - - - Ch7 Opt - - - myLabel1 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - TabAC - - - 4 - - - Do Nothing - - - - - - - - - Simple Mode - - - RTL - - - - - - - - - Save WP - - - 593, 322 - - - 112, 21 - - - 17 - - - CH7_OPT - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 5 - - - THR_RATE_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 0 - - - label29 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 1 - - - label14 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 2 - - - THR_RATE_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 3 - - - THR_RATE_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 4 - - - label20 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 5 - - - THR_RATE_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 6 - - - label25 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 7 - - - 6, 260 - - - 170, 110 - - - 16 - - - Throttle Rate - - - groupBox5 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 6 - - - 80, 60 - - - 78, 20 - - - 14 - - - THR_RATE_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 0 - - - NoControl - - - 6, 63 - - - 10, 13 - - - 15 - - - D - - - label29 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 1 - - - NoControl - - - 6, 86 - - - 65, 13 - - - 16 - - - IMAX - - - label14 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 2 - - - 80, 83 - - - 78, 20 - - - 11 - - - THR_RATE_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 3 - - - 80, 37 - - - 78, 20 - - - 7 - - - THR_RATE_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label20 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 5 - - - 80, 13 - - - 78, 20 - - - 5 - - - THR_RATE_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 6 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 15 - - - P - - - label25 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 7 - - - True - - - 3, 240 - - - 154, 17 - - - 13 - - - Lock Pitch and Roll Values - - - CHK_lockrollpitch - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 7 - - - NAV_LAT_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 0 - - - label27 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 1 - - - WP_SPEED_MAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 2 - - - label9 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 3 - - - NAV_LAT_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 4 - - - label13 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 5 - - - NAV_LAT_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 6 - - - label15 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 7 - - - NAV_LAT_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 8 - - - label16 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 9 - - - 534, 126 - - - 170, 131 - - - 0 - - - Nav WP - - - groupBox4 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 8 - - - 80, 60 - - - 78, 20 - - - 18 - - - NAV_LAT_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 0 - - - NoControl - - - 6, 63 - - - 10, 13 - - - 19 - - - D - - - label27 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 1 - - - 80, 107 - - - 78, 20 - - - 16 - - - WP_SPEED_MAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 2 - - - NoControl - - - 6, 110 - - - 54, 13 - - - 17 - - - m/s - - - label9 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 3 - - - 80, 84 - - - 78, 20 - - - 11 - - - NAV_LAT_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 4 - - - NoControl - - - 6, 87 - - - 65, 13 - - - 12 - - - IMAX - - - label13 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 5 - - - 80, 37 - - - 78, 20 - - - 7 - - - NAV_LAT_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 6 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label15 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 7 - - - 80, 13 - - - 78, 20 - - - 5 - - - NAV_LAT_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 8 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 15 - - - P - - - label16 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 9 - - - XTRK_GAIN_SC1 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox6 - - - 0 - - - label18 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox6 - - - 1 - - - 358, 260 - - - 170, 43 - - - 2 - - - Crosstrack Correction - - - groupBox6 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 9 - - - 80, 13 - - - 78, 20 - - - 5 - - - XTRK_GAIN_SC1 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox6 - - - 0 - - - NoControl - - - 6, 16 - - - 38, 13 - - - 15 - - - Gain - - - label18 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox6 - - - 1 - - - THR_ALT_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox7 - - - 0 - - - label19 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox7 - - - 1 - - - THR_ALT_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox7 - - - 2 - - - label21 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox7 - - - 3 - - - THR_ALT_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox7 - - - 4 - - - label22 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox7 - - - 5 - - - 182, 260 - - - 170, 110 - - - 3 - - - Altitude Hold - - - groupBox7 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 10 - - - 80, 63 - - - 78, 20 - - - 11 - - - THR_ALT_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox7 - - - 0 - - - NoControl - - - 6, 66 - - - 65, 13 - - - 12 - - - IMAX - - - label19 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox7 - - - 1 - - - 80, 37 - - - 78, 20 - - - 7 - - - THR_ALT_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox7 - - - 2 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label21 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox7 - - - 3 - - - 80, 13 - - - 78, 20 - - - 5 - - - THR_ALT_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox7 - - - 4 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 15 - - - P - - - label22 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox7 - - - 5 - - - HLD_LAT_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox19 - - - 0 - - - label28 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox19 - - - 1 - - - HLD_LAT_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox19 - - - 2 - - - label30 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox19 - - - 3 - - - HLD_LAT_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox19 - - - 4 - - - label31 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox19 - - - 5 - - - 531, 6 - - - 170, 95 - - - 6 - - - Loiter - - - groupBox19 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 11 - - - 80, 61 - - - 78, 20 - - - 11 - - - HLD_LAT_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox19 - - - 0 - - - NoControl - - - 6, 64 - - - 65, 13 - - - 12 - - - IMAX - - - label28 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox19 - - - 1 - - - 80, 37 - - - 78, 20 - - - 7 - - - HLD_LAT_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox19 - - - 2 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label30 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox19 - - - 3 - - - 80, 13 - - - 78, 20 - - - 5 - - - HLD_LAT_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox19 - - - 4 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 15 - - - P - - - label31 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox19 - - - 5 - - - STB_YAW_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox20 - - - 0 - - - label32 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox20 - - - 1 - - - STB_YAW_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox20 - - - 2 - - - label34 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox20 - - - 3 - - - STB_YAW_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox20 - - - 4 - - - label35 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox20 - - - 5 - - - 358, 6 - - - 170, 95 - - - 7 - - - Stabilize Yaw - - - groupBox20 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 12 - - - 80, 63 - - - 78, 20 - - - 11 - - - STB_YAW_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox20 - - - 0 - - - NoControl - - - 6, 66 - - - 65, 13 - - - 12 - - - IMAX - - - label32 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox20 - - - 1 - - - 80, 37 - - - 78, 20 - - - 7 - - - STB_YAW_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox20 - - - 2 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label34 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox20 - - - 3 - - - 80, 13 - - - 78, 20 - - - 5 - - - STB_YAW_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox20 - - - 4 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 15 - - - P - - - label35 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox20 - - - 5 - - - STAB_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 0 - - - lblSTAB_D - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 1 - - - STB_PIT_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 2 - - - label36 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 3 - - - STB_PIT_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 4 - - - label41 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 5 - - - STB_PIT_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 6 - - - label42 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 7 - - - 182, 6 - - - 170, 114 - - - 8 - - - Stabilize Pitch - - - groupBox21 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 13 - - - 80, 88 - - - 78, 20 - - - 16 - - - STAB_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 0 - - - NoControl - - - 6, 91 - - - 65, 13 - - - 17 - - - Stabilize D - - - lblSTAB_D - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 1 - - - 80, 63 - - - 78, 20 - - - 11 - - - STB_PIT_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 2 - - - NoControl - - - 6, 66 - - - 65, 13 - - - 12 - - - IMAX - - - label36 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 3 - - - 80, 37 - - - 78, 20 - - - 7 - - - STB_PIT_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label41 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 5 - - - 80, 13 - - - 78, 20 - - - 5 - - - STB_PIT_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 6 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 15 - - - P - - - label42 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 7 - - - STB_RLL_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 0 - - - label43 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 1 - - - STB_RLL_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 2 - - - label45 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 3 - - - STB_RLL_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 4 - - - label46 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 5 - - - 6, 6 - - - 170, 95 - - - 9 - - - Stabilize Roll - - - groupBox22 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 14 - - - 80, 63 - - - 78, 20 - - - 11 - - - STB_RLL_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 0 - - - NoControl - - - 6, 66 - - - 65, 13 - - - 12 - - - IMAX - - - label43 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 1 - - - 80, 37 - - - 78, 20 - - - 7 - - - STB_RLL_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 2 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label45 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 3 - - - 80, 13 - - - 78, 20 - - - 5 - - - STB_RLL_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 4 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 15 - - - P - - - label46 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 5 - - - RATE_YAW_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 0 - - - label10 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 1 - - - RATE_YAW_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 2 - - - label47 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 3 - - - RATE_YAW_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 4 - - - label77 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 5 - - - RATE_YAW_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 6 - - - label82 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 7 - - - 358, 126 - - - 170, 108 - - - 10 - - - Rate Yaw - - - groupBox23 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 15 - - - 80, 60 - - - 78, 20 - - - 8 - - - RATE_YAW_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 0 - - - NoControl - - - 6, 63 - - - 10, 13 - - - 9 - - - D - - - label10 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 1 - - - 80, 84 - - - 78, 20 - - - 0 - - - RATE_YAW_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 2 - - - NoControl - - - 6, 87 - - - 65, 13 - - - 1 - - - IMAX - - - label47 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 3 - - - 80, 37 - - - 78, 20 - - - 4 - - - RATE_YAW_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 5 - - - I - - - label77 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 5 - - - 80, 13 - - - 78, 20 - - - 6 - - - RATE_YAW_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 6 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 7 - - - P - - - label82 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 7 - - - RATE_PIT_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 0 - - - label11 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 1 - - - RATE_PIT_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 2 - - - label84 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 3 - - - RATE_PIT_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 4 - - - label86 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 5 - - - RATE_PIT_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 6 - - - label87 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 7 - - - 182, 126 - - - 170, 108 - - - 11 - - - Rate Pitch - - - groupBox24 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 16 - - - 80, 60 - - - 78, 20 - - - 10 - - - RATE_PIT_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 0 - - - NoControl - - - 6, 63 - - - 10, 13 - - - 11 - - - D - - - label11 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 1 - - - 80, 83 - - - 78, 20 - - - 0 - - - RATE_PIT_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 2 - - - NoControl - - - 6, 86 - - - 65, 13 - - - 1 - - - IMAX - - - label84 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 3 - - - 80, 37 - - - 78, 20 - - - 4 - - - RATE_PIT_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 5 - - - I - - - label86 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 5 - - - 80, 13 - - - 78, 20 - - - 6 - - - RATE_PIT_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 6 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 7 - - - P - - - label87 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 7 - - - RATE_RLL_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 0 - - - label17 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 1 - - - RATE_RLL_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 2 - - - label88 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 3 - - - RATE_RLL_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 4 - - - label90 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 5 - - - RATE_RLL_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 6 - - - label91 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 7 - - - 6, 126 - - - 170, 108 - - - 12 - - - Rate Roll - - - groupBox25 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 17 - - - 80, 60 - - - 78, 20 - - - 12 - - - RATE_RLL_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 0 - - - NoControl - - - 6, 63 - - - 10, 13 - - - 13 - - - D - - - label17 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 1 - - - 80, 83 - - - 78, 20 - - - 0 - - - RATE_RLL_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 2 - - - NoControl - - - 6, 86 - - - 68, 13 - - - 1 - - - IMAX - - - label88 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 3 - - - 80, 37 - - - 78, 20 - - - 4 - - - RATE_RLL_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 5 - - - I - - - label90 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 5 - - - 80, 13 - - - 78, 20 - - - 6 - - - RATE_RLL_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 6 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 7 - - - P - - - label91 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 7 - 0, 0 @@ -8765,9 +6485,6 @@ GDI+ = Enabled 5 - - 17, 17 - Bottom, Left diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs index 36679c0fc0..fc46ee040c 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs @@ -74,6 +74,8 @@ namespace ArdupilotMega.GCSViews public static hud.HUD myhud = null; public static GMapControl mymap = null; + bool playingLog = false; + public static PointLatLngAlt GuidedModeWP = new PointLatLngAlt(); @@ -360,6 +362,11 @@ namespace ArdupilotMega.GCSViews if (MainV2.comPort.logreadmode) MainV2.comPort.logreadmode = false; updatePlayPauseButton(false); + + if (!playingLog && MainV2.comPort.logplaybackfile != null) + { + continue; + } } @@ -1025,10 +1032,11 @@ namespace ArdupilotMega.GCSViews { MainV2.comPort.logreadmode = false; ZedGraphTimer.Stop(); + playingLog = false; } else { - BUT_clear_track_Click(sender, e); + // BUT_clear_track_Click(sender, e); MainV2.comPort.logreadmode = true; list1.Clear(); list2.Clear(); @@ -1045,6 +1053,7 @@ namespace ArdupilotMega.GCSViews zg1.GraphPane.XAxis.Scale.Min = 0; zg1.GraphPane.XAxis.Scale.Max = 1; ZedGraphTimer.Start(); + playingLog = true; } } diff --git a/Tools/ArdupilotMegaPlanner/Joystick.cs b/Tools/ArdupilotMegaPlanner/Joystick.cs index a79db6ede6..c32136330a 100644 --- a/Tools/ArdupilotMegaPlanner/Joystick.cs +++ b/Tools/ArdupilotMegaPlanner/Joystick.cs @@ -320,6 +320,15 @@ namespace ArdupilotMega if (getJoystickAxis(4) != Joystick.joystickaxis.None) MainV2.cs.rcoverridech4 = pickchannel(4, JoyChannels[4].axis, JoyChannels[4].reverse, JoyChannels[4].expo);//(ushort)(((int)state.X / 65.535) + 1000); + if (getJoystickAxis(5) != Joystick.joystickaxis.None) + MainV2.cs.rcoverridech5 = pickchannel(5, JoyChannels[5].axis, JoyChannels[5].reverse, JoyChannels[5].expo); + if (getJoystickAxis(6) != Joystick.joystickaxis.None) + MainV2.cs.rcoverridech6 = pickchannel(6, JoyChannels[6].axis, JoyChannels[6].reverse, JoyChannels[6].expo); + if (getJoystickAxis(7) != Joystick.joystickaxis.None) + MainV2.cs.rcoverridech7 = pickchannel(7, JoyChannels[7].axis, JoyChannels[7].reverse, JoyChannels[7].expo); + if (getJoystickAxis(8) != Joystick.joystickaxis.None) + MainV2.cs.rcoverridech8 = pickchannel(8, JoyChannels[8].axis, JoyChannels[8].reverse, JoyChannels[8].expo); + foreach (JoyButton but in JoyButtons) { if (but.buttonno != -1 && getButtonState(but.buttonno)) diff --git a/Tools/ArdupilotMegaPlanner/Log.cs b/Tools/ArdupilotMegaPlanner/Log.cs index 5e9717d3e5..f414925ac0 100644 --- a/Tools/ArdupilotMegaPlanner/Log.cs +++ b/Tools/ArdupilotMegaPlanner/Log.cs @@ -785,7 +785,7 @@ namespace ArdupilotMega System.Threading.Thread.Sleep(500); comPort.Write("erase\r"); System.Threading.Thread.Sleep(100); - TXT_seriallog.AppendText("!!Allow 30 seconds for erase\n"); + TXT_seriallog.AppendText("!!Allow 30-90 seconds for erase\n"); status = serialstatus.Done; CHK_logs.Items.Clear(); } diff --git a/Tools/ArdupilotMegaPlanner/MagCalib.cs b/Tools/ArdupilotMegaPlanner/MagCalib.cs index e205c7b7ba..8e88536308 100644 --- a/Tools/ArdupilotMegaPlanner/MagCalib.cs +++ b/Tools/ArdupilotMegaPlanner/MagCalib.cs @@ -227,7 +227,7 @@ namespace ArdupilotMega /// offsets public static void SaveOffsets(double[] ofs) { - if (MainV2.comPort.param.ContainsKey("COMPASS_OFS_X")) + if (MainV2.comPort.param.ContainsKey("COMPASS_OFS_X") && MainV2.comPort.BaseStream.IsOpen) { try { diff --git a/Tools/ArdupilotMegaPlanner/MainV2.cs b/Tools/ArdupilotMegaPlanner/MainV2.cs index 320eaf9ec2..8fc86cf6a3 100644 --- a/Tools/ArdupilotMegaPlanner/MainV2.cs +++ b/Tools/ArdupilotMegaPlanner/MainV2.cs @@ -547,7 +547,7 @@ namespace ArdupilotMega try { Directory.CreateDirectory(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"logs"); - comPort.logfile = new BinaryWriter(File.Open(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"logs" + Path.DirectorySeparatorChar + DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss") + ".tlog", FileMode.CreateNew, FileAccess.ReadWrite, FileShare.Read)); + comPort.logfile = new BinaryWriter(File.Open(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"logs" + Path.DirectorySeparatorChar + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + ".tlog", FileMode.CreateNew, FileAccess.ReadWrite, FileShare.Read)); } catch { CustomMessageBox.Show("Failed to create log - wont log this session"); } // soft fail @@ -863,11 +863,13 @@ namespace ArdupilotMega } } + DateTime connectButtonUpdate = DateTime.Now; + private void updateConnectIcon() { - DateTime menuupdate = DateTime.Now; + - if ((DateTime.Now - menuupdate).Milliseconds > 500) + if ((DateTime.Now - connectButtonUpdate).Milliseconds > 500) { // Console.WriteLine(DateTime.Now.Millisecond); if (comPort.BaseStream.IsOpen) @@ -896,7 +898,7 @@ namespace ArdupilotMega }); } } - menuupdate = DateTime.Now; + connectButtonUpdate = DateTime.Now; } } diff --git a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs index 556a38e668..e99d7dd1d3 100644 --- a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs +++ b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs @@ -34,5 +34,5 @@ using System.Resources; // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.1.54")] +[assembly: AssemblyFileVersion("1.1.55")] [assembly: NeutralResourcesLanguageAttribute("")] diff --git a/Tools/ArdupilotMegaPlanner/Setup/Setup.cs b/Tools/ArdupilotMegaPlanner/Setup/Setup.cs index f10943bfd3..0b71ca9ea9 100644 --- a/Tools/ArdupilotMegaPlanner/Setup/Setup.cs +++ b/Tools/ArdupilotMegaPlanner/Setup/Setup.cs @@ -453,15 +453,17 @@ namespace ArdupilotMega.Setup CMB_batmontype.SelectedIndex = getIndex(CMB_batmontype,(int)float.Parse(MainV2.comPort.param["BATT_MONITOR"].ToString())); } - if (TXT_ampspervolt.Text == "13.6612") + // ignore language re . vs , + + if (TXT_ampspervolt.Text == (13.6612).ToString()) { CMB_batmonsensortype.SelectedIndex = 1; } - else if (TXT_ampspervolt.Text == "27.3224") + else if (TXT_ampspervolt.Text == (27.3224).ToString()) { CMB_batmonsensortype.SelectedIndex = 2; } - else if (TXT_ampspervolt.Text == "54.64481") + else if (TXT_ampspervolt.Text == (54.64481).ToString()) { CMB_batmonsensortype.SelectedIndex = 3; } @@ -1682,6 +1684,12 @@ namespace ArdupilotMega.Setup MainV2.cs.ratesensors = backupratesens; + if (data.Count < 10) + { + CustomMessageBox.Show("Log does not contain enough data"); + return; + } + double[] ans = MagCalib.LeastSq(data); MagCalib.SaveOffsets(ans); diff --git a/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.pdb b/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.pdb index 1026981e5bb9e611017fef88c070cd53ab5fe467..10a92a6c02792cdbe13f8c982ffaa6414f6d2e19 100644 GIT binary patch delta 158279 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 z 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 hL7ysR#d?ix;yS&H=?pLzmpJ+GXxT z!sTZGw@LV;8!q~fi%t1nR|ZOjrGP0Co^nIuii>Rx*i$Mj2DCCh>W25-ub-TOZK8R z*1F+Az#PG9VI64UUR2B<9XMN7wAb%wC^vEM+Y1-X3^v8IRyTv5vSxQsL8R`3$pS#U zxWTZ<&CYkTi{0#2z+kC+91x#zLNe`223_6B?z%QUb(5Sj&meiF_AtVTzXNSmKYhoPvI$k5m%v{+>9b!i#L0kNfF_9S3) z@;QiR0NPHa2S9G_W?)&)P`loZ)*V334?y900ZX5_q2AraRs)LI6 zlO?P6FqAn0+UEk|sLVWsvx8oSvPmjL_BME~XA4sS2TFJrFipZ5eGFy1gtGxh2&nxR ztJ_0x_IFTtkp?z3TVF{z`Z_5i1aP8|+7|+%>(4lZ)?U)jz;hB#WE=;qE8%s(eG;zk zZz!)z7&E}YeOl;t0Q8k`0HBYAqX2Qxz{chPR-%Xx0bc`*6Hq&X&$fLCS5LU4>S>yF z3^(zcGB7CnIARepz)!|=Y=8_V%V3ENw#(o%8T=>$Lmk8ph+IQmP)iv^nMchK-NhK= z-S9OR)V2~X_$Zg|@bt7h>qymuU}(g?7*g#7>;38>A?qT9#O zKm_Wjl=dI$lp4i=I|NIMKgQ!l%T$+PVoGGILjkACbQb`(T2`~E{3BSMpJU)TyJV0&NXlgOZ^zs2NqT4ruJIYem8Z%q7Jzz<1irRq;iaAAUsBbHRF;Xvp=su zJ`kjkKM|@uzQA5!I4wK@R{}>G*mjkkK?teM@ zW9artj4T&ptaR&@x!J>R_B%Iw4Nw+KwbQ*bsAR`j%b`FSk9Eca)b5h$=Vm5L<^?c# zNXt#SS27=hvFu)z%uRPH6!IK$G7CAUh|~CRyNJh$xUkYgGX23c5O(R^a~P0T&v+Gd zGVMC$O!ztCR{!}D(CQbr0IhzJLQB3xhHb{No~TtI%UEB)j?(vaQteHlc7=zBTkU{b z%|=(w!&=oMw#Fk&2ePb%113vr{iWJap(eV>2)Ev3p~rbht=%py^`Kz1<3*H(K_taD zAhvp6wej3bM7BT{nIK4!NlUwHBoyNShe@~;5T~PT>3zU|3mCC@ogu#8gY$KNcue~6I%E$h`x}&E-g=sG5xFcc zHE^DN?;?zRw$b26q>vhq0B=ggYn$jcEAD-hSNuYH9dMpZQ}`C&H8{C8XA6E03W}?@ z@W?sKnH=6iYzm(2Zh(fVXNd@oWZoU(Ts1< z8nw1_Ut~HW643bx=qxU?b#axaLKaF9-@=ou?G*McJjnyKS5l!nBvo&Rf#-TcE61V= zKzT`Onnle7 zJvmyhLD->dF`W+hmDeli8th+I%kK4CGj(T~PrMhY_+pB!30_Uq$MjW#S3|WXJxTDI z>iBI1-h0A_0)Bpk9}=TkiC!U^cY9iw=#{3PqAQ7B&#K>3M3Pqx^C8|pZi83I8>Qm? zYlYI2yaw7=RpJlOmu*h+x~?wuzN44Dn&LG)$ibgtEx_MM{EaAk($j0ErdA=Jt?Iu> R@9Wh@eY-5Ruh)mh{{z-!fjIyG delta 157859 zcmZ_12YgNU|M-8;`&>7<5lIjuk&Pfmtr}?%D^|p)5vjfRruZPYik7Mx<)uof5u?N? zE~;i}t7=tgRn@AZs;H`3{XgI5-bB*>_jf&x=Xt+gulG3bectbLPF#EHxc1bUQ^7GY z+Q!daH#P9Mu~q%0jJuy0%Fo#9u-l8jKBR9e1MT-$e_fz{xs@m#cE0@0ybktH!u%=( z1g#!ka^@@b0$2R<=hb&lj2@M?rT$uDUO>~8O+yodB8DdYU3SvHPrI%dR_(~zUsqYW zq-KGRzs}t%JT&#ru@2k&JXo;S>m?}o)XuH9;xASiG-}4K(o57IIYD(V6x6xd_+JP7 z{^qsThf_B%oY;Pl)@>c#R0VZgJ}kY^=WWLHS=*vmqraynS&DH@iw3n>+4{+?R~yJ`iN*)$;N+aK2S+`pmA`xELtoiwg_myVXF z(ak<-w&UL-L0NM*PpvUy_LS|D-n{I`2Iq2sd->KY26|)Z2q{*?Tljc zzq$OObWRQolZpIiw3`3Xl@dnB`JY|+*zIZ==x@lXl)xJ@r&Zu`sopwpv(fXDjn_LG z?nZ3`qm22bZVooW=g+-a%qTT~-OYMZp&j8Qw+meR$%b3o%zW*AY_<;aLwsOIss2h} z>ipn8Dm(3z=p5v8=ePOem3;F!n?HZ;8yLU&xtoEaLb;)3n)s;`oze zG42mJ9&o+{F6H=(^M@RNb3Eesha&^|GLGdOA8`~V+PWM`94QIL@&O`D%_#jx`)7ke%enpU-Ani+deMb}L4Ifl6Frv|=e_V}9RmmJ#)g!tSWL=8wkK2fl3`RraoZr%OI} zK$7uT*tGaBMuhuns!_-ArwANXBJ4KZG^NXN|61^+S%7fe((S24tQ{&?;RfeqXn(~MDu&r5_ExH_NwTTNB- z@q|=JdUQ5QIx3^7x>{y-HfrT4zS4>+C~B{k`<;y#vo>BMW6cn$+{LKmv$%^+Ng?Ue z1+%J{$!eM1#Yo8Ue@ZK=p~zS*mEJaADC%@YQ5{8SrYz2_Sck&rWfakw`Q)WC`CrKi zt4KGz)Id`?Q|flhmB>k2Q4>YYOgTTpe3ANJw4xS@mYEXJ-H1^wGu>6Y8#N5oWQ`2$ zVJ!EV7v{Nuf<3XUgXNrc65rFPRot61NV4;|9akE-S~AMz3zbzpjYLIWWz9B27xprO zoMa27WZ1gOmhom`snE;VpvViYmj~J)!)q{6?p47cs<*LRap{)9h2BPxiq4cfy^RKn zi?f84U&-h2kF-iRftb0pu6E-qpIPc?K*x6m)QPB(~$pv&Csd- zDcmlR_49>i{BER?uH0Rv z!ziP!itQl_HP`l#v!jgZ>bD-!b+i$yIeoM-TrKV*k4766d_#KbOr)|OI9;Hy)Ei@z zA>MvtjEZJxPeanzJHx|A=eOA|6tLO+>3R@a<`K52g1&frRW8SwCFJ%PPQ+ z9Y4tkFx0#KrTJtsc5Z)}FqsVey}#_9Y)n=)21tCmF;FcWAergJ`_%wBpKhe6KL<#h z%ZN7urH{+l~Z}gXS^wr)V`tJux(i_G+^~)eR{{}@>R0>Qn2B|@VWx^Cn=Jg?> z-XsMu?oA_Em&~{~x%Pyi-jLdy^Dn-znNKVQ^V^$7Mc;ARin-^AqUKbh7&la!Pc_oi zuA!1S)o86o6_Q6&jS6POFv{?}>LOF8ajgl%Bx4$v29Hm}ikPCN8)Y47)aT73BxSl$ z-P;P|j2EqNFr`E_T|C_wsjFYWTSg^cU5)C#$JK}Ql-chYaVoT@d-r=xa#U;|89L8+ zNHMwl&Np@#WWGCMfzDWRxY9x+#Uwx6lRq#f82XAIFE%c!grRc&LnF=UxiG_)DIa}h z6qeRYjQ2fPu-vDaR9Nx8emQo~P~n@7-I)~XP9=Viv1%3K<)^mW#eOAfy%nYx0D z{WMxKRv4AcPf?wiX0)=dcBN54g_V?)l}3c-(3Qpma&_1=TFaI3g6Uuw5jf%=uQueOS>CDd4lVx{i zdcas3EdiP2+NaU(u9-#$L#H9@i6c}_t}#+o$C47a)~Mn1L}l1YN|m)_!^E{lm=5=j zuTQABP8oLh&b3B=!_hFG&2eah#I9$IIJCj8yN{bv`7Ng(X`$mN=V*k%(G4>67vy58a?p0rEc0QIOaDBO(W-}zN$})n?qqriU;X0W`PH|y(vW&iF zAYofJ!#6P)coJ>c`bnFk+#G zE>BX85ch3dhQrrkbJT4iv0Lf3>$b=zEdo>(S$@V0lBmXZf0;8czrQTsY8<2(0?+wS zu|6?^>pJl?q=g=__*LpPde}&&ZDinZ1P?eiBF@%p`Eq1;IVL0ju!S7`gp8eQjhwzx zdK;PKM}VQplCmwQsC?yJt;mleEm?MKGwM2ZQgyyn72`+05)OZy1Cu3UdoDj+w&SM& ziV?{&J-6a83UO_x(Tz)%JGnI#ci<%uFX_qBVMng87HCBfihq)2?+%(6ytuL)Gb$S%Txw{{t`RZNOZ*ljFSD^jG;r;J3OrO5G584<3hh}y$2<11bE;I)YM+DfMH zF=7?W+GD)!oxS-=ozE~Ria|ze>H8U7GFzVgvNA_*akx7x_j zeN1&=z<#E~bK6Mlexr3xPEFd6VJL==EW=niw%@4gofK!+F+C~n&Owu~TF^^!?;1J^#wb7b-O+CbXj2dV;HsdhICFhf$XWGN%(jj_T zYTBJcMwYHn8K2{?L`%(32|i4ltz%Um!&XZ!uU3U+_+ewXlOnZJG2JuydwQ73-;5J|+m)PSJ3QRd}yr13DA00P>3qC{tj4q7E%k*e;kC9S;s#(rktDZ{B6Gq8`&$02# z?hRfYJ#4ttPcvTFY{ACyFE+(m$oUgFbNiv>7SY4`~W6V4uGtOc1EhZ1D%hq!g z!-MMX^XH5!hARBB?EQi3`S@jd_=6Fz5^G4+^F~`Ww1!MSZ*;})FX!=l2EUzZNx+Xx zTwwf<#(g!emQ=cc*FS4X-wSy0t1Y`PSkV>y2`}H_rE_hG|0!2e$D;^7i(*)9Z*h<6 zGrIn`0iz@_&4}}s_zAhJ{hz~ZN^SAGNIwEAT{N0{+xiKabPE1vyq6f1m>!8!Z)BSxj-sWh&96xb!h z*P*qg;-&c|ql4-dFDou_(f>=3hnMJ$HYZ5zW%`5L2{Q1q(UyGs>@qQ3Adn(;w1bp?p>ufJoJlE z&_pDgw&xF#yT35_WanwQ>jZfPANA@=+v@}gCtuH1D&J^>s~8-rD-W-es6%z#5x*Kk z4YjzQ%)Vg^_V$h^#JEY@W9h{4Qv*+{^!ALpkz}_$J&C4?Sbb8cd^DY&an4QVeAlYU zt(!()X9P_*a7#KUS9Ree}PfR z@4{55D{2v2O^(tWuSkY4E&7!41@3h)c5^OsS=dBz)L zuvG&>j#)uf&I#s*S6#xIn1+0dIvCI2!6IJjDbZQkr33Rc1H+c!nZ^#^8?*XF%cYq`QTyb1HXp(;Tc!}o`ZpqYG^A2yTHPbr3_mUI1(0xufyVSDhz=$U>IBo z!{LW83R1Id(JGykaZ(DwZde-bgJmIQXDbI!!3yvqtO&2d%1}@2t3YzaS{UMLY%k*` z@wQqp7}ka)!j=GIVI5c=>P1FuZ1vMQL1=3Po5RMi6>JJS!)CAtOol^YOQ;)hYpBbn z4V(tsLEV_!LxHJq73>7pLBewB#@z*e3cEwyn9~W|b(E9d@Eq&|e}MhrbvOXtfP>** za0vVx4u|@laRhY0(XcQa1B<|MFb0l?W#I%E2PeUra5Ai8+R|-PIC&MpRM-J>HLlL^ zZP*vS0|&y{@J;w0{1DEC>mgU|+79Q#LvR7S2+0N4P52?yOYTeIQ%G0mQdIDj(BDoA zA)8!!?LE^y?H}V!!_@u%upRagDfPs-Ftr4XL7N0xEaZi2Sy(W9PRp3PF{ z?Po@B9ZuWl#ziMyEnTG5RY~%{#u=Xi`2T*cCpq2~pApO*vxC&DpWn|F7CS??&r*vF z_16iBWobt5l;CdRZ6fe8pYaM=i`*1ij#^f*pmiy+2nT`l=TT&M!L^ zcWEg8ohx0PDnh}@PBq*+cPJ!(X@epd^qZ%1Ii_I0c{)REHob(YyQ@#7es?3%J={<2 zFubYGoxi0pA%S)MRh%MnYo0vSUxhjUo$JZi{+=71J^m_L^_%DRE1*IRHF}xE2B;Wg zv{X4jiF6K76UeQ|KYfeJ?*XcqTD43Zf#epf6sYv_QF@@NsNBmWD^OL^ycnp?sy~;> zjv(9vmdo`ZRaIpym(YUn$#O|4i2T)$WO6}OLrqvIJ2W?~lslT&R!VFk*m#w6Eu?y? zZ&%5|LilUDS{@cs6C7R051&kH#m_rgnU`zDPnZAbWx7Hcw#stgnORIO6;`F3tGu$p za?j*OD=Ju(C8h4>!79yR`eYjN-VZ(@?){;vx1pAAlGrd6VJ_cfNVipfjb-`we);5^ z_e~!O8f1h?)NA>x`*0s`v#SXCBaCa`yh$R$RrWprQRUP}y>v!+L&H@HR_?vws;^S@ zPfBbQai>}VA(FGZ`Dv?7{_(k)pf&Arj8 zsJZu~l2-e;{b?C)R#8cXq*RP5>lj8B)jK6^V^mW-{#=rJzBz^v`=64dF)9&R{*tPk zV>o6LPf2`9m4N8=l7ydiN-|5TS{`2&)r`{;P>RX}<4dVIdL8moNfj)YN)g)0)AG2K z6`B=8>(Z*Y;Ufb|tNM8VxHO^l`&Q1Ers!ZmtjGKESXDuN{;eF3r3%33u~a>RO)jG< zn2*0@DRe%w{5fTmzk2+w&Yh_QW-W5oDyxc{#m^{Nw%=^%ZTUlUHBr5HL560PRcU4) zvZdZEC%suY$~pa{JEfeeYB=ki(o3X5)~aKz8`ZkP51%v){KK^DZ*t3uiI; zynp!D|zrFIXnMtX4Xf;^$PN z#MYoX!>+6Rl4SWnXN`QO)jF(I#0xb@Xa2ePBtv4g8@s$j-MOK-Z~gSZ4lxa^>l$|R|4I6ol0Z{yu72O z`70;G!nkj{P*+tq1Ib-nRisfp#*>=$JxkAta=CW?V&bZ&Dm!2I%3ku^79Ojof)r(Q zu^u(azk$cTnn%|?Q3W~c<(17srpWh>8=Sb0})Uy@yrEOESjdt$SjBffJy6H;qOO0kZ6|jn~9BiSJj#u87%w`P6 z@OU#d%UjA-q(^fMs$uZ&`!cgRfy2Gc)mRn0Kx(v5?R-XB3#nCPZVL>nW7uVZ>~2AI zfEQb+wyOUEshW((i3_B!my45C8vDF|CFA8~y!bQuYe_#2Q(CIzoX9_Fi9rnvW-gSY z+5l#?&SlUt1%sLxM2d_}ArhF!;F&h4g~0@o*j5<8JO&$EVNe@`zeUcrA_|ztpi^rM z;xTBuNT#%=8o)dT?539Ve+7euJjbGoQhMC;50*x4s5%S(W4jJpM*_C7AIRx81O}hC zQ61EQ52Qm|lJ{hZ%xp_4{Fch@whZ-)mx|x3swJ`>Lwz?MSM~ z?`Zvb{>2fu%$tbl`|K9iY^TcP*z{>f2=%Zjzf5Mg%T)=!(~3kC3zy0Bb`%|qX-^p+ zSSE|xGlhC}xt!KKy76ILVaa!=f`ohCmXA+l(bYUtc|I7nMLJY zyh>6!F_HN*Rh7@Vs?we4`%k9Q_kVAxn^yL$nCZr)`=5AQoL(BSUDJ;s@cYCA>wg-k zqv&cm(n-aHY(}qjMOS;$qo>B)@Yv$?)VPG)9bwwT*%G$G(w>L(89HXn@ZLQ}vtSaB zts&uQ>J>w2RF`+tRJDTHNvPpX!uxV6O%--9`Z>N@Ew|ECX!s3c?ardb8KU|sSIj&- zWGipQ>`r)1RWJggSVGuS+-94BVsNI6?W`(=XxRf~l=8p3lCqR&I4xv6ieevN&XY)=5Mc)i&wlgFb1Ymhg}SL40YO|(Wo)z_ zS%+@wS~1T+m3`$6ydhnXHr*+u*;Kf%*2}=|s%hu{yGB*et4I9))Jt*RUlXD{!;Q7o zr4Jr3YIL8GL;DUJ*=z8CK0`;3@@(r}A{mbuY_z{K>m{Ivx)l%>ZnN!2whr0D_2THM zo(BX+P&cBi1uNU7kEKvAU34t#bw;+A2!8)ql6tAMfOg1Ik@+C|V1s07*&bx=kX5y@ z<+V|Y_EuG`@GeEOy2k>vzMWYdw|-XdB3 zxR5=_wjt9iSv|JOm451ol?e}!>F_c?ksbY2+sfIclj1F%&E8C}j!pKjDVhGoC!S1~ zihuc+k!}N2nbf?cmfZ-)=|_=P^G*R%icO5dUx6yx9}|kUfD-gH*nN_lcl0 z=GyePZE|psnjUZxSt(?1A$zh-It-@tdY7ftIO-GLs_l|Fm{QiVDC~4^cyqg48LZ+g zzp2Pj*{1K1&><>0)w9c*U5442l&Cu%etP9M`280q+ugHu~?xuBIN$~(|#W8 zkfB4>oq&nRDkBR(HpeXkhmjZK%98?QDWqbHTXqjqF#%s9D~n8**CDsu8b0fewtq8yLE*U#QH7b_38fE9us`1=4@c3m?YR4Me1Po4E{PjW-OzTQ<9V^2 zeA_KOM`Je}oBhaK$oB1)g`-vTfK|wDR3Y!k^LwAlozdj^Q)HWwwIaOWJyLfJd7g}W z1BcG@GJ9m`7~;@&*O1jg_U|6a)G{639^%le)6+hai(}O6fZN#YM0NqYMtfz#Sk<+B zcBy1v|159!@&`8Azcyq>mwl#u_}C|;iXKN&G13MIt^QtD(^|+~986+teRAYc1#R-i z>#9V6R&VpF=kAlSuagg2cEc;%xKGw+%fblWpJ2}IlZ)B1cF0J&t>AtsG)}etf3&Z= zH8A1VmaESGwI%h*`@MClSN|SE`}G;je`9*|>tnTmIfT3if7(y-e%U=vtq=JU*-m6N zkoEKW)$4S$I@B4@6MIug-<&!y62 z)u>9|hM%1m!LNACnR?{>Qt>tNbJKc=vV=XsBlpz{Lf&5|4CY|4Y?=`rP@E7>a%h7& zpG)&}HOD*A(&6YCc_nYx$D(n%D(o|lL2c0q(|VR8J#VV+6Txk|2hUBiVcihxIQwy2 zLau+*QER8JE-Z?hZo=BJYXg~|*xEupB(;OOYiJJ}!Vd5ame9LC!IN&2ieQB z_UF38PjUBzM_?~_8d3x<-G`7E*ROB@{2LB}&){HKm?G8tc156ehr^-pC9k`dSFc}# z8G$@q@5hbggvVQLqu~TN7S4v_AUnQ#x^Hc_O@Mlu^*^Y$)h0nU9rg2aE;bKsZ$Lxw z8U!TcZPQ>Vxr*Ak0J`1=qkNxQ-1iS28CX5wIj{+XTnJ%`gjY zfsEp|ZSV`o`yU4> zf7d-u4ndWVF$&r%+Yj(D{1Ng{q8@Wx z)u7ISm*GX+HN5V4n0^_-D_%hzcolau_zP?YZ^N!y4~IdH{o;Wq$PTe;lLr;bI;Rc zOQxyidM&8#bhTSA^*o-g7CQYGdi+iH?7?k#OZ9fn^vV`^o;t1YwtCwcDIUAmJWs2g zd|M57PVmYmN%Y%3>=w;XJDq>$wW~Z6ySCOUi(zZziDS=9;_$4z7`8d`(R_PhNq9${ zWM#!2FiZ8cJ8c=B$l@gWcLJU@M_n*kC6V`dAVH?i<GoTwh8oVrt2_bLm4f9}aBrG^jc5yT2J;`r;BruDp_C&9z6>XhV2t8!@B9JLXEWb#?lY6tLrKQ2f$iz z5bOkpn6~M3Ay(DW1MfKGG+f&RgNZJ!Pj`Y!S)R&?9E$OG8Uf1{kqr9 z-n{Kw+;ib~a1lHU*($gF0C&Ql;C^@w>IVjXfx73s4!?&t;Z1l8K7e;%7$tBQ#-(#| zpOYH!PdF0lEFBFW%s$Ecs%{9=&S`d=AMKn_;Iz^6Hsk*i779y=DI;q=C7( z2pheptAH(*8#>(=L~}&i4Lw@p?@r_S`~yvMOQfPM7wQj6R1hr9tkqU46a!{*ar#X&*o)bW^{8Oe9>#;cM_GNH~?O8qov6Rgb_$S7_^n z`#S6c>Ef&iAHn`IX^HCSTu8;y{Z}<>Te{p3tmyM>!(kyf3KoYvspH~C&GtIfO?JG5 zEL9~Ht3Gv?vVpxsIxSTt(ml&LM$R(NYAnC>;Xi&;@u??5`hp9<>9_;D)ET1PF>p52 zF}w%sz`3vo6v({5wg|os8I;~!0NLbnErrYN49TlFS%F|ZTm^T)On4ZwMdV`8v9TlM zx&qnaas3WAz$b7k^ryyegCTGSEDhbT3fu|nz+JEz{1m3aJ+L4A%+8QJn3KH-#>0J3 zPeu;FkKiGwp8+}ycfl{9ZgM(Dc)Cl!VrezGV~{7DEV-VX@LHucDPh=k@nDkeTUY{q z2XzZO2VL;{bWUb*avt*ZitR_p(<)X#y2)ubPovm=f}6c^{j83bAApzOG58fc=hf>+ za<1e42i}0X)4K`%;4N4TGVgRn!1Ozul;-3QSOqdaaMgu>!p86c>JPw~i`T^TB_zXUWMeLMSKH5HH-r=eOO_)Ua+w7dYhQI-PLLM1#4T8Rq zDr|GYH=rM!3H>1z%vJ!dgn^LyU@Hi>!@~J&GkWIZ;Sbz{U=$n;W8nW_NjMcU@o`B$ zdciWBtU^!@u7|p8H^K6_KZ6zF=dcny4qt*iY-_6m|A1BD6R7A20mLbnE**fBmfvK=G zOoP1fY3mFd!Y)w11grz@1iRrL412)WA=&SG+pB*U_QlN`m9~CxCF~Ek!2$Vb|A#qY zvg!I2QeLiq;SlJ{*gOmthQnbgI1-kJqhM`Fxw;y_aj-KS5BtIia1@*fbr(Jvz6I0a zTMK17XW~BX#^d|E>}ym0_VU*asVrH);4ZR2b&@F zmmt>@lMGlCE{A$TvI6SRsl2Z8FcT)gwXg}KGP_dY$MSNfddc|<^9em{IIPFSjPK-) zOjSa$Hky&iY-lsaI+9PI?%TJ)l5jh$1b4uf;ZE2X?t)XH&Y2mImSW9z_QGAbxlgd} zC$;`-ulp1{g#0?BMY)*nTmG5Wr&}JF$6JD@@Cyu>$J@Swf!?mQAmo)HS1|krMnRgS zOW$Cgfcp7QUPf^Bf#2q{z4fc@b=uEx` ziP81|>P-F%>e=o?SP%XU^~~ZiY!9EpzVKh&V1{yHI2fm(1I~rKqT^Zud1uVE3i2M9 z>th%IKZCroZ!o!TK%Gf?rosD2*4@2!=O@uDhq_!a9Ik7{3@@%~-mfpZ?rI&W~ zZwNUDs63fK|qgrvgKFb!6Q+?-kkMYrrq!QB&ffW2W?*cbML z{o!ahz(Ijc;bahkci~_-2kH#gQ=y@__rc-tCL9S1kw4n5xR?6gfV*Ht7x)R(%PrgC-*5+f4s{OtGr`!2yD-%5Xt)PAH|4gy@H3dcpA+tEYzLv9 znH++*q4vOyhV3wJJySUX3)?+%J!APAcX4zQLvRz0fxkf){2k7Mf54C6eYg%jfJ{Vf4%Zcog!mthL_59Km%Fw}LleQAn3&D+cMhY|I_38IUe=C#_A#6JqBi$~`wr?K9Fn zdkKcMuRywOB{_7Tsefhg%t&f02LoUn42I>QZi*G4Zq=1wDae;KtlJwtq~WT7n-5~R zszW|=;fjZR)WVer`G$on2{M66cQxfC9zkoE0Cn5t3l*-;urBNg>%rczKGb(FjiJ7K z(N{AbHo-l?%jsVE+psC}nXoyW2iwABkeQNobJO1EB?cG-9T9AUOr5NS0bb5`eS`Zo zcnx-j*I`$gv_*;2v#(*;+REG=X5sW+X!Y392gbs_@D(@!PJ)Brdr&7=4-ML#0hyq= zGQDnA9xeS5I28GDuluCet%nF6dv*N?N5Ws>DENTQG0USKE408);f;p=P`mX?u#UI_ z9D`f00P6_qd*yB5c)7P#4Rd;SG7Q^S)~5hEO~OhS^JJ)tF&(}N-+<%b6sYeRr^B`I zEvPe*d8X?S)Uh6hGjZ$7((W(eEcxye^@`c=Ae)J%3Mn`TeF5ZiVFa8fb+$1`ymQbq zl<3V3{R`%JYMs%gVXDU!KGTA)1!Cu@UUUvz&U!2?3YbKj3^5J}YNcti4 z4g&lf`a-7G)}osB?~nTkZryaggbDB~s9S)xOY>5Xj$h-R29Lpo@C4Kq_axi{b$EN> zY2147((VIv3$|~?*r8gP1K2I;cEJpZJcof!$oH^-tzynRsVOpR&xOxEI4&{apYyr< z{0?>9$H`WSHKY%*zWL(5uvghlUb66a`yb?KDL&%EGrc90euR7Z=PKAe=dc=RsHTM^ z=u2EdU#RD%nj0oTU#pQS!loH4i@sJ}a~%H1ayhtj?#knXKOa-WK&x*o?DOEICv7HR`GkaqCjh|W4{|csC+UdH%l;bnAK%|t& zZx&Qr+DWDS_&V55rsp@4Lp)C*=v3u?I9Fd(V5ZT`q2~*JDeicGvyiFNn-XZwBysNZ zfu=Ha5-tWI*wW5Du%Nj^`P0=pe#xgFP$yEuUZ4a|N)zcX`P^y2=5WLNJUGiTIkD;P z8}*eUW?kiY6Yr%5NI-}gCJl<4WxWse{U#%dnKP2Q27k?k+FT=yk zGz!Uj=KNBaS==Zf|6o<3z$4F<>WzM1F1a;_?vZP2-??9&aD|%{RJ%u#6>i3bw#((~ zOMC<|HPg38y&p+LteLD^YGMTT2Oi1L2&w{H9AS=C*B?otNVA4Y_(z&YnpM?~e`Inb z_I$c$b7_-zCnC9k*B;B`NGb=6iNX_H9EA}d4TRJ=PimL5Xxmena z4Q>1MMR`5Ie}W&ABElGGg)u>W^i&qdW_v3lH)08D{Zn>r$WVB(40Web8Jb#lR=iyX zi)&A1MHw?D^jfaax8-LrdG8U3%4eew3} z5?)vlSxsamDw;LDZEb$8wx)x3PX6ed?Qt2?)O zEh0Vd$}Fj7ChA&sv6`8t?mdzC>gGbT%v0Xm8O}Qfx2v1UCiOrfC-It0yO+)Pb*Xo~ zK*`!`m|@QKRv{X;c+YNPLJhOG(^If|@yYtC+MXKb23>9ewRBfflf0sQaIA28O2J^O z&-$Rwv0CQa&P`UyXqokb`|#Rks+FDH`mo!0t+rWKXQVqY-YlZbeEV(I7a?dHuO-kn zs_f^@4H_BDN-*aju2;t_;>64v@hj*ci^=FZW;;yWN9)k7J8JUI;^X!bn@Cy0q(n0r zf7XjmYZDouYN0ne$iYOjQmD~Ezpdw~EtjC4gGRxC4&qneZ0&umr>69%Pxo3IkJUTK z%=$T>&#NilXhl4V_zv!Rt5*-c9W7fV2;jpaZi0&wpn=l?gZQ$#9zOSZ3 zD*eM7ltE2Re@7$C>U5Ntri26Yg!4gD!eLp+(W#>xY)Y+yc?@1|hCvbrV>(LLW`qFq z7<{J$CxDZH~j1K~cHUn)-+%k5$VySg{i4xST3u+vIAPyR@PmiifFkr482z z^Z0Dv7K8Q}6zU|C+nO2Li|(m>PNIkpN2l86R(`$KO?Wc zURWcC7M$!rEx6xF#&#rt`*{s+YJ=e& zF$hSLLaBrhAa69vl|wU9iJ==Y#HGpBR04?0t1sONeRuRpX}qOkMi@zX^`B{d5A;3L zErgiMqhz%6uHvOFhvKRk!GeS`r|ukW}F#MFKcP5zlN4x zc5iparoq}lH)=UnX$SqJ<+z|7bcB{8xHArVI?Iu)9du=uW2$!0ZCQ?!gZaGQ{?1HG z=%Fmh1FfbvvK$q<;Goa39KE%J{>5@E(GL0&%W+0K=r=5fe^(sz5tgHocF-SKj)~eq z+qWFsw1akTIc{qQZQ62_>V|{nYdJb=2Tj#-yssTJOUrRgJ7|KI!`>YS&CPNoXa}vz za*WmvS`uG+3Y87r8LwzHXll?n+PuaWJ%f5Mm#O4AZ>rCmd(K_@yszhcr#_$JIlrsV zGd$;Idvd_q`S#*G&U2oq&yzgo)gG$mpNSd zgmT~0k8dI5`j!;mQRvG6TmsEU|J5AUnlLnb|Enq24^23lzy7OvS8F2BBz*9nc?5)&SGri1dtjtgYrW4ZY6AwOi96@09KKK&EV5wI%a>g;-8TQg??B zGAlc|XiGs4r@zFuXApDlzZQw#U~{BOAfaQO1_I){t8cugo zu%R}qk*^?|)P`IhZZ?sik!Gy7=e;I%MsoRVnK>$3h9%^Uk!Io0%G#QX)f4-v+%WQ# znXL`(#DCbgv&}`WfnIL)kH! zTS(r}y*1kGsv7V@_87{>^W^X~SvrRDzCjp+8u7)sEBT}4#u(Gz)ULp*`CrdT>zJ{` z#k#iRgGQ1umV46=8oAGoHIodrwUI=OBZdY^(smqo&(~z*IKs@N?4~5;`EG~Ky6m1# z-=vdsR(?l%KB$l|-Yo01@(QU}=0c{(p7rC+Bl@C7PGH%?N?pC5O}=UMKQmRQr1?Z{ ztV|u9{s4*l!DO?7;h0DY)|Zr{3!PDtRvL{oND+aV!wUef0|$q{c&uT-W{jc{pYLM(D1KNc z_otgN<_~!NV@E!|n*Ej;Y(B@ePrJImWme7k1oa1R;i(~>=C05C4efkyqiBR;(fYjK z&>o=`jZvIkpZ6QuKcVnRLh;l3|9nHc*$lj}E8w`zqgA=Tp}j>b*cNd7xjyeVv_od1 zXokZ1vHpg3QAwT2y|D9Rci)-jLPP!gu{?i=yU0SaZWe|q7{0dI`h>Q(pmOJ{UP~nx zty<>oAQIj+s~e}~KyTjcob@hE<%f0djCW1GGe$P>0meARRiB^D?I{;&eUNeVdszLn zUVkk+RF=O-h2&Z+%{8qd{d_1pRD$N9A(`=W%1(L)_TsmK3BxPxC2fV-olvaLXrElc9U;#mI^JwA zw^lGsgaIqfh3ftGlDU%RySlxc*W8GFl{wb9D$`bxzibLRW^|OSRrJpA>?-q)`n01Q zS#9=Jw>nCtOtWf%#;KmQ$57t8$S0>(^TiieCUe-1sj?8gdYmdpGwCumrHNW&b|vT@ zYY3VrAsr{uWab)zK9T0$y2gw*)P*#;vlc(YUz3=1tiMEck+$pT?XJqYb@=%eKU=!U z>2>(o(#8FFoypf`9(R$VA7dNYRgyloY?pqF?G0>`y2+7`i8`s9`}xNv%i*tflYtuv z-@m(LXhwFI)0*YFizCZyt`fUT+brBOy36z|!d%i_c4V1-i9dW3b)2U*9ld*amw{Jp zB2RgK(=nxo?A?Sh)XTu$(M#KAcX#`#h?J96kb^yo3v)KJxbS9scik<_ILTXg->s&f za-K-@SY461ADD&RJm~V&(3d)MhuPfF*KyWuJ~vD&5$q61)NV$aDLve=yUpkM%xxcL zfAM-h)3?(fO2&S3BukwI515gFukrk)>y`fEbHYKE-y*DU+OUEf9md_berFu@hX>7y zzRj{Va~Gre^`NOWfrrc@Rvdc8ScV@m?atGD7fk=FE~yYEOmZW~%d?*RGkgnVi3{d--vis(+f@=E%n$yH18I4c80hCt2mp7U^MLcT;*d zP;Y#No|KU%senCCO6Eyw?pG(}qUMd0QuGv+yNV1sMdjwHK!@#=EIef2gen3H;;sM-!G@6SeODLA_P%QvED9&WVsJhz0hdD_ zRJ68i!{K(^Iy^Uw!TmWb1<%6L@G8OE%5rkYYxo#eln+ju9ZlOQ&x80zRd<1J&0>a{ za71FyFm_Ei!kYSV<7Kz&4E=m|=_a0~bY~xtw6j*}&Ob{T9yuZh&(fE{>u1ebx(r93 zGb;oR{UUpfbo9tx!^cZtS3}p{bLa5$`WNE(9zU;tu_o?&Q}6Idh4ZY6zI9A4UdbOL z6VEf+;0U;yf1LMwSjo9+q@K5s(9j>*Parj2e>D3#j~wyz&}*$8S}y%)PEFFojP5pi*l6qHtJrS3&Qko{D+IS@yXO(U=)DOZ#~* zn=fQxFz7$3zP1*Fqz_(3Atp)w2W7Ruji80`VHA!x3vAu^84Oz z1hvd9dp*u4+PTIpakoufhE^hZ#HP49;FiU=Eg$D@V{* z?&)ZE$zznxGCUNnJH1fp@t7$=!hMY*+fqyak8T_g2{)=ApCT|jJ4%s6y z54nANb)QUlh~12RvQ_hy{c`Ie`kDJB;&1rJerXHokC|SeAJ0cxLr=rO!-h(gA@*_< zj?ZIqb?9NK@t7_Mrad;l)R|K1iCNasgMsmjBf0+&#V@%&1E=p1=sYr>unLq!=kaqj zZh)>mF%!++xU6seCq6ZU%t6_@!A}`=XKd$tiu6@$wlAn;4;BAs%vfpt5zn~z&pfi> zT1J~k7Ai}gu`)u7-~9|v_qWS)49x;N3|V%HU5wVx%^)L2-gw5%@5JX=(x4YVH{+aj zcsx%3EA06&(k1Mit-Z3Q9-05YM59~szh(pHKCezZx7ri`-)0@Ygap{&d z)WI$it;v(~`?XC1u4QSI%58_ex^tM-(hS=S&m|`K*pqd8ndxIs(M{yMkA0?-W?&`d zUF+k%;_|hBu2OdEutTN0leAO8Cp+!O{Zzlhk`l~CP-i9t+jlGK$^0QA!V(c?uc}G}OWQEqBZFmTn0>O^6D)q=_IS;taJ#jecru*G zo(0SEaC_B)&v+hLHv|1rwjDCz(|xT-6QPptGY$xVT66UnoxvIZmtlnkF?)c ztBOcQ6cKJLBB!HB$d)3aqU}lQX%T52ZLezNmr2p~cT}6A;unJ&#>dz@XwK8_K1JnV z4C!27R366=%ojzaQc3t*QR!LIo?*URoGi=ao;a+O-Cw<2T;fVmKs3d1rAU2dh-8+s z^R4a>IbO>CP*o3=Bc<^@AXFZgwofq%%A{EPOJHNHy{4)ZF4tr2tySYf(mK)}%$Eqs z&~f3?w~RGxt|?<+$(TG9T# za{^DG>3`?sfRmRUmsFymkYDcgFWH|PWPy8q6+5>gnIZ1eRqaO=SGV+KyEw=3>azY< zT27sD1WTJ5_G*eN*<0B+)V;ihox4$9o^V8DNo*~9gc-q~3*oC}Rb*T(dvj`-^(e*n zwd}#Mt+A?{r9Ys?Z}6}ly@9pI4|}uFm5QQrmK3T@1L>P3J!?}be$A3w+WnM2h!Ss4 zGg`@lcsu(k1oieN*&A=qUWRNX|7ZoTZ8$PENz5zMWSI1dJ$nlhpRZuR>l}_9_|yh4 zk3p3L4BBCEe3PUl*t5T~+Dbk^5!)Wcg-zb%4;VVC&&bhM@|RPq&*WnRp5$NHBv%sb z^VGvlGPVwtkI(94)v>n@@%+^Ev+-Y?wLi6oScCq%1 zpVqUNb!J#m8n)t|MY6<1OiB2_M0*28IR``~6G@s*JuRnWyS5$2xrBc%u9w#=%V``)<^vF&$wKI!|l;=&Y=^M@>(z+QY zVNk$!z{2sENh%`z~x@5Axd@ zscR^|QIgf%u4hH9S`frnkutf(3-gmL2;yX<-15jarI4D0WP5SnU%lStjhC3y4okM? zw3d1UYQH-#LhqXV;#$L6+KU_cWjEDT3Z)mdF|W=uODW6HLBwEy*4kr9z*T7;)U1AZ7i>4+S)7n z?#lKxqN-jhXlwcU5RKX&B}d!Z^{h1TRh;Ldr0%OP@^99wT*1XC$@Iv6)+T>NNkF?7 zCDy$iCQqYeLN3`cWb}x?w6oVCU@I?bwI_9<(K(rVr=69l@3kkyD$%mH{fkKbI}l>6 zXo>A$$+~sGq+PVk_BgG|ctM-I7A+4wvX?qyGBP^*E^L{0j*rg13kyueIVW1`rdoY{ zx^_ymWOc#V9x_aYxIrdbzhMY{wYf1GFgYcI0Rw=<$ZiSBHPx^*V4w^O{<#A3R96jYB`(J0V6!c4ZWw!n%D|`vetIN|L(KRl|YZ>|+Z)Eai!! zsP_{ujbv^$RYyNaM;sN@ywcLOyH)hddh*fTb=~d7R90y@*xeoznpHa6t6A_&7_Xs( zTVIK=?J6zLyECu2Ra%mIFrk?iD@S_Jhr&BO>_yd_SiZ@IenYIJ^hDpJj2!PtcumT@ z2=5Y4OZSiDX=g5>Z5i?F#Z;j~8L8Wg{@hm%_p&;Oe|wR?CCW*q-Y;t7#NK2|rE;>+ zBRkO>lb6cLbFWi(m&tuFsa#I__OY_tD(9VA*1VjY?(?GT%l1V!rkphBYssuKU!-M= z%JJPbCX~neGSR_tzAqWPqnyMIu=kYr`%wiVWlLXs3Hh=g29a@ce1N^VMD@o}Cr&E$ zrx-HgWPN|;1{v~0UwaD)8^Fxrpj7E+?bD1y zf}!PQ#Xz!jXnFV1fp%`!#+R2XgUHJ*<)!Cf#>qYvWbt786ct%fB8I%EeZz;~xk--9 z(>S$kb47VL#LC5&hSKXA(q*WW!_XbfFQ%Hp;ZTFY@`Xf0pv$SVOyyhSRi@9;EU=_tlnvI8cM^^Z}m8%xNg z#pLQ(O7XWGz%&jyyl0&MYdWR0rpzWBuUXkidW`?8{A^Uea3?u1o`(dU8}C1Ayw*u} zO(4ZbaZm6MF)ntJP80p}jAZ8UPQ-uv0}?w4_xD|7)g;T7Rj9t3ge~R`7?bHzz^aq| zg?#h7dUb;9y}6gQaWb{iGhOXGlei|d6Q57^#~IHsK|urL{1w1T^`I=Q9`7pCvPdD^ zkVWZh&9tH{{{%T!-tRZgKj?ntJ$75Km@duXDgG3z*Fx_&L28HnwS8CUg;=k=Gs3)% z(NVEpUblsLWx7>7=V;j9)$8k6(koXw1rk}F5H8C^$m?_uw4Y7yhhft&Gy)~d z(4J`+qE~__MSCJ8rjrYFK`hk)(@}jcqPlZBsyiIfX%)Q_5mldoh#rO&s@DuebS>-% zwy5ZGN!dHYpF*!;?KB>k3N!ur=`(cH-<@Ytah0|G*QoOZU1HJzs~mGr~a?l{`u$Nzt8q>Gzb4r zZ2tx7f6DfMS^a;q{iEjMf7AA_Js1CYnL3MjXQ+Ro)X?AC)W3%1pFPi?KUB|Zp7izG z8ceS|4{>KZ*d*lMo_4T}>Oac%|5g3R+y3R|cOK~<@F@QIBu;-X#@|<|j8~dQ zGePGxl2Bc%CDR?v^(-8TUg$68Ym3H}G|FnLh4j`REF&2UsUSv_$=R^bf5J;+mNRX! zpNX(ES5=q#d(cGX%vl2nXk&6_EklDe)X4Vto1Z^6L)#C5r8(oo#s3NbscdYO?3$1W8XWO5mMy~L0 z(TcysO8+6P>$k4*CuXnmZ=o)KewF{NP(~%&@OJ6Dm>0*zkNeAcLnT>qssB~5FZ|dO zJbTpDm!I%&)%tn$lYY*x$hm8^|H1sm%PfD`%JW1`w|gt&9^bOoN&lN|&%I53!9T#4 z(TN8|--b@VK&FK|<>cAsPxghr?_#Sium{&Wyy%}~O#*$9=7TyXWhXq|HRtF~|7un# zJeb3%$PS-bnvWq*O_HSD{xZI&Cb7d*;f8heU)HL$PM-lV%H2Ha-zl^E={4TNIA33I@v@G9`Nxqnv zt!K#I{r7kMxEY)wNM$~KhBSGDYcDNdyx}h!oXapn z)J%IzHRpr4=0)VS^C}4RfAu+7D0{;Qb7dS$bL@ z^F1h>MteUtah7Wr(~PG!_&ya{$oD9LhGoRUjOqS zH1+V7q*O^dLiQx3=A;~`&v#(qY(D0Lu*)V)Og z+w3#?x0y2eGZg2ccw(Szz$?nhbyKp+`3q&A@JGk8+T1)d(7CCMYkZbF*p(?=P7r(n z3O5Ey)(KYu+OGoEr<-wUa=|UA@;L$)tedH6()Dv!h?NLp7a>Sb%Z;n|=dQQ{Cke?C zcXLD+adp@O9dcBhH?g)2ncFA%Ug-rS!iqrUJb72WT|sqcYv z=%{_jKV9pCe{OcwagG|KsGcJDGJ=1WCN)p_o8^|P@d%=qBe?3=lfJF#nBIHJAK3#x zQ_gGPY;>BYOMx$4fxCZ6U_o$Cx}5=XTmx77(iQj}bj%g#q@>IBFI^>}#%TmA5p+qH z9;aP`l`2?;U|hN!IPJ=Vz!?OOBbbsdRnNEtnJRb!!G?5Mm0XlK%N;UFm=2EI0WnbUt@<7$}=?)|K3fUy%uGP`DK_vR#b~ z{mNxzB|5Qd(FqL7Eh#;|av2GIjgfUIlywxObUVEbU%QNqM<@1abdvuv(%@^Ck@IR~ zJqm3iMwY0NO5eDQbpHk;&!BVvUq%wYaT$3Bh3E|^438M`-iwjE=UhhWpTo$r=sfb5 zksEF!n^1^mD+Y6E#7O47Oy3y#t;&O`!FZBO9S-?;+EoF_25Lzv$= z(RVoSubFFMF4E|&NX@}c$&R~^3%K`!>jJzNuu~4G}i*!FZ z?XvI^I_9hBTpcW@uK54DfErf`yaz#LHiFXjT?l-KyxW1Pz7wyyENnv2d=14~L)1dz zzo?YHhOND*bp4yH)7M;=`y@K%>*ze>nE9JD;W`%fA)WX)3tx1MiI!gHU3t13MRPxj z(}u|2>#pmG`vD6F5Ulx|h2fpJo}NFru4gWa<{KzJ>m=l#D&8MaIf%-eLnQe}S5-P( z1#coaGDNc7g3k~{A3|_F5_|Ips27U<`7n1@klJyZ_->`Hs!7X<%9(0iy<{lz87L=eq} zE9Uc&XqR**+Lk@Me>HMvH1NCV>>Mh2eswi+9e*Y8Q3QJ;fxTTAtk3(K>%!ke$9xZ+ z!$alrul`oK^+^5SxEQv0F$)ZHawJ_&{pL#A^C+0dQAijjAOGeGS^5UizK@`^6H=~q zAT zc67`W=zKm*PW<7D`OaGiK1XnVn55it305MAK8c_-o4Z-hc=K+={N*iI%rSqW^94E; zB07`*p)(a7^AtMOhs)+aT@n1Gf-e!&9lpFoAos>D9~>wfdm8U9j!jRx#Cijfx6jPw zUj*2Q0C_JBR#=LA166VhMMrOdtp^ZJi6m%y_n0CQZ3O;m+ulUS{0f~}!{xH~uZX3- zLEx_uY>EV~(SvGvjyv#6=$PN2vu(JXG6JqD(MRBO2tJGi-mihfK3B}oqho%H&gWL( z1i9i1M9z!Pl!|^Ve24VUh=q!qhn@p@kL~aKTtjQ;u8W0FCZ+J zAuR%b<(SM=!9@g>GGwb;a7_i55VXpWMAH@GArk@H9hsdnWR_d-jtVX#$jXrGX5g>h zZv7yszk*<9hErV5^x~n)8+4_96FTNqbRNx+_k*s$2~h;ThT!o?;EoRw_#%OwP4Y7l z>Ucr!KK%Nvnm=Cba{sQQ^HzrJh;mu}O)dX`;Aq71ezp9+C|9xuhe+0s=zN?ZOGB=} zpCO3;3BlKqz%_ak__>fPaN9ft{u!P8BV<$_SKwC=ME`=IFqsaK*d? z{uP~)BcxMaSKyThqJKkBClWZW4}pi~bp;MZ6Zi%?<3~u%XjkCz2%>*S5RL?%s)6r~ zb_G7Kfp4NSXM_}paRu%kL*PFUWJdyD)4-KtT!G&~$GnBkfe~`u9k_lhf&WDCP9$*O zR08LXbp_spj>&y9kB^Y|V_h*Pb!IzQ1$2IUpci_3`ma)CX#WPGNeGDj4>`VXJLWBD8I2cGsh?#i1o%4Wsgg}y=C}>V@UHNfkdfWB+%HH z^stO65~yR;87Etd1R5A0OqL7Eg;|o65U6QnXGxEQKv(0ptehPQfiz7=LeW6kfnCHpF*vVcu@Gyk!8 zAipkR&?Q7tsze~auTn(R9+$zGRqql6s2cHIufEls0LL^yjfm)`iWq>3Eg48Q7;kD& zGLT}Vpt_I=g6m5L@`t)u13z9*L3<3JMR&CghL0?TQl(JH{JTQ?QYbJQG_6!%h+#1J zbGZy@Sw0|OZ|+dLEMf+D@MWKcvZUpuh-jON7|Bslb~z*;MI@EWAz{SE3N#6k!6?nb zawL^OnN#IRI%6++?hKqV7-F$f=1(GJ_K1qtlVH!Msh$+5U@(YssyR_Vf`Y-o$dA6exCX$E5*8cTKsBC&@x ztVuh%_ONmVOfhC*MY0S90B{T%wVL!O7((@=rg*ox?-S* zZyYLpj8LK!Ob+BT7(v*YOj4UA2bvj-8dR+pC@N2?gpmRyJ&X?>BjqY#{!OQWfD(LTVJUdrK|BZ-#xGMT*9MMTc25+;MtDIj2l@U^$CvTrb>88jIDwCQ;z418YE{! z#Qe4z=pS@M(KXTMt*%5(^v^q<%kT_cwO;1DOlY*ew(P4JXy&afnH9MO#cC0V*RZO! z0zFv3ZTYRo&-c&}=Ms+9LVKbusazXvUXz;CMthCzw-Z0#vk~pnwb6dlmNdExZC-0q z?xHyG7Go8}gLwLQU6DSYQ%0}e6=?6RCsUJ2O1C;lcn7fy){Ht7EM7RQg185f!Al0E zJPt=^$7>N_Lqlj>5~d10{P*onyC&0udm^7M3Fq9`ESs}Mz-dW1RA!>Vf9g;<*2V$(K1BVWgM$d97pUx^%@|d&uw4EfCdEm z+zIpqB7+|F)&|5;TFz7_N!1&oPDj~R@6|9+%v;@-EK^BcB-ZrleGSRjF1DmtBkc4V zE>#ZNP>(!6Gt5uGUHA0z>CK^HI#t7(_HffCVhqm8N{CuBd`h^Pmaj-Gkf7+5p zP0%(oB&7-3WpRk11OsP$=mSumE`?Ct>qFfrWXEj3v^b6O}*hv=!O(JsNLB;1EWZXHJ5cx&p?qf z^}lvj7!4TFvhT3|)MtTRTM0JTszVFZAkRyrjgQQnPQeyxwDUM{mO8Q46nJ$Sh70Hl@ zWcz@aveNWcNaLA~B!8wO@pSIixzFI?>9W0VAYRgsSxf(ZN5dF*PLlfubOGwaeK9p9 zVru+AqQAGVmE?;^j9KR-v7e>bzaNT^Mil=TNSv?s3&a_Zo@269ppdcgoa9LlBuR9C z?iqPeuYaJj(coK2>rY3o!M8c{`Ukptjr4Ej>;U?4yS|mgfq^he3fNz8kpoWGh)Ph@dwv z<*XVMU~4;jbAm@*tHN|aI7Nkxs1l{o5Q;qaJ!^Tc=Mcw}-8b0J;+$MoPi}>^w^p;^cuqMdy@%sTwp*Ut)KhbKcwnApVvmeK znlHrlTID%lA9`~#GjP)PAs1qGUszP&mrqA=ZPu0Q7Lx<`SjVNccsOt>kI7m+v-nI& z$_kY573U+Xt}D)-66i$!JTN6t(X5EP<4l=0h1&?XPT}5W&6Gn^0^NeqrJ~7(3UX(d z&TTS^C1y!VnEMMyg#*`(O0y(wYG8x6g2YUtn_CH$I`cR?>|&nQ&RakQnTf=#jHK>7 z**cAP2l(-{K(E$|d z%FGTVd3~B{tJghX4wZOaj(pGxq`kFSt1O-qSmv{mrpt3j&JFmDwexbu%nh9IhKScv zZ7A3B`U=a)`GIZ0hlt$ET1YG1Z5B|_yvK98E(rW;lIiz9My9h-vY8npS&xyIu=n~r z_sGbldGE-%TFWfwl~T(C^H8-ar+v!N|2 z_!royFY?!)5JTeqa(_6$mV&DSQKm|V#OJJ96}ap*4i=PoPw+0$xUl^E1dqhBM5+2D zTwheuo}?1ESWMPENwMuMKRrqOk8#fvm?XA35c#~_TZXUZ9e4oIG+-sG)-tkv2=Blz ztj>Lb?k!)a&N2e0M0BbQr4B6rR3LH+b#LkZRG@73QvrX}0GCcldG;xnosZBl2NKtW z;&SULvJX~W6WEx0{a>shqHH31F=FI-E26b7BVE>FBn>0)6ql^Exr1rFubqkSYlnEbFTIA>rfbkLP`l)w~mJj9$v>IYu9AGrQ*}P(mzi0V@fy+92!a7dUAfm z(}4tIObMCybRcq&cW*g^wmBGc?9!2Ey(=MI)*~2#;11^9uMZ>_y`!XUPCxIiD8kxd z=8!BStMQjg_nMD#e>y%xn4yH(T2dxFL*n6vXXs}fEh)wZ>lSv|fXXmbc9oK>4S^)z zu2KXq=f5{M{lB3RxJ*~j+c|q z29krVtz+zaOUy>@K?X+FG7rcq5Z@1HK(q74++oGuG8G+j1Ukpc$mWf%OaDm)oHAsd zEF&d0aT&1Pra)wdPjA`33584)=9HBSn{tO!dP|MX2u2||S5|s#b`{V~DtH({v2ybM zW><)W=MZrGi&?y!w0O=HVu=daMcrIpPIkKmp)Cl;AUIe~YHp$Y!OgqrS5DdzsF|CK zFR9j8v_2^(r?$8vyz_Yk;}CpWPEwwCUG+)?`NkvonF&ssWuEjAQhHoWaY@ZK{c`Df zYO|lq$&Kd&n~kAKvSBL~gT3=iZ~1L2**$@<^O)XbW%u!sWOuU{T-iPRg+STBM09?V z`<^GcFT4;aX#B(k?H2;0jKuQNU|V2V(B9X!w>-ZMgOgC6Ufwa-F_VW?dp1t<(p&D_ z&Xr6?XKi^&*`7Nh(_5CPAPd3P^0Iro>)O3L5O5Nad8NE0?{HoFXcdGJ z=#Ibu=QLiewB4hqTgq$pcsyP!o9y3H(fP81^n1}2-=-HaI}O2Urgysq2|E!?M{sYl zwAe{}uy^BN5t+9$cUX$L0Ild5Xsw_HwsN)f!#XVZ5}mOX%rQr;M=vfHfppCYSEKws3uZI50$&R}SJR2Qb?TaD$CwoB)3mxxx9-mQE$0BhoEx^I-{~=i_o8wAQ#g`Fqz>#^a zvUGac72-)1%tuh6iX3{GzI}x%`e?J^XY?z9s<~I%{1wzVPQbjsiVS%LwfiG#+uUm3 zsM@2b^{XPWyIt{j*^OW!f^k(OYd23fA@8U5!M_i)Sps49o{1U@$6tI6uu0@IA@ z)uhZ`+PSQ1(qpfVY*v$ndjm_2duvFU*R9MQ|2h#a#oC-2vhH<~3Xi_-YN;FVBf7^> z__#*o=8lQs-1KZSAS?FqzfJbXO0lpYR`bO+`wM|c=V=hPM<(hJ6 zKe58=`*}!TuPJESW8MA)JD9PbUnyLZK);m z4hB|HQto_{FhZEbI+F6H>%Ol<5WNCHmpV?GI(`yeL{7gM$e$ST(t>!pK5Ggac=V7X z&%ip8=Mb&p!%lra@DRpVV&kPIvhYx#i2;uu3e3nYHQnDrVHFB%o65AeNHL`A64~aP z%Os&GBjL*h2T?rKIJSJx@ z2jVLpLc`={a^tNNd=A5QxG4Zr$v4k&+)LpH68IrdHnh?ST}*0h^v2)$3DTlSKZP-# zR=EcmaK}6^IjS$owd-bl{V!N1n}qjQs8)vOU~Bj-900$A+zQVH$o;UU8*|y7OY+hW zf$~%Mh{h{`opgO2h(e@W)9{_s`s3?}bsaj}xBxys!6NV%SRMWb+rZypD*OYEhnjPG zI0f7Hgl9UO1zC}19ZW<4*8^3jc-Zc&6i?4NKsD3bJG({G6AZDZ`H)cyR1d z_+yCi@JW~qzk^lb9TZB|I)&>(HC!KZEK<0E<8B1+!rcS%h=%(*><8=P9t<18iI7J( zJPS5~OQ-OoIY0E6Q#Je)Y>8W+8g;LOcjMj&Tf;YDTc}S@JNPlweeynox=;Vh^ThT$OG3*cbLQK+6Fa5WqS*F)+e>v+_0P)|e}PbC%pkslNA(4&tg!cuS& zYy~I7_Am?bBH)<<=`(x6kgDG^6|RTe@9^7jIy?rs?_my-^l;z9H{mQ;DnP{sE5JFh zJ)Fz^53@SmGY^k(a6Syf1#mrF1mA#5;CoQ7^f+9O`xE#W{2H!+d3a)0!G`b&*d9{r zhDX8ma2|XXGTGL%5i$$Xb9o8|H}hjF9?S{!Y=KNT^K6Gq)bhLtnH%F_Q;RUu6FjfN z*dP@WWJ^)cK9~$OVU-;>ClYxM;QtUj2$wqkyo_3U&%w9w=Uf=ily~^?GCz*MEAS|+ zNG0$AYydxk55iAje|Q3}gBsy_cnbGt@C+oH8BdLe48 z*{at{hW`;L9I^)~yqncm~wu&w?G~l|KUILmq1kA~!qR7@oPB zu1>e5D~j5aVT;6Dfy62F8)z}p0xivxpxr;=w`K)+t?&!7p(yhcv!c0)B=oaRxH`tWn8 zrS>G$WYGzTCYOWytW&wJ!`E@s%!LoDKe>8@ z{r5ba7Gve2dc23=h9N(D&927UGLmALiKRJT!a8#LPZ)>XL!Z4YpnbF!W%*^UVV3kA zE5jQ@nW%(2qwvp*oMw|puyk(Cp%2N)GIlp=i?xYN^H@}<7(H}gt!-;LG%#Ej_Z{$Y zs7ZPf7Q(I9qTJ;8Ye%TCH1?U*492!Hd}d<(;)tX1E)6xyGJH|IlZcc0eDBQN>lr3Is1;5uzTf05NjzO3S&HX=f*_q@3BYg zyq;y!adlMulo620>$wIu{Wyzs*DTUIvgGuJJnN9hc%(W*E8mZE9AdXN7HV?5JFLyoRj7G;9gc=SK+UBe;Y#>3dl_#ljidJQpfIE;nkAfMa9(_wzN5XM2h7T%Y`>v`|8wqtz(58aOSeW=^9 zYLlwlv64_v0*vug=APH)UlJ0G&?LusYRQ$nW?6}iHVYMu+>TVFr}=oRS2)yu>8HD9 zRrz#}tSc-H^~z`%!UJGAsJVWpjE^?U>S*)oXbK1;!d9>i>aWH3Hq*{m7hb3SGSQ$2g^L#=u`0*^wF2Q?43NL(C+l;M4=3EhUbiT8G>7qbJZnHObnoLQ7ZHU5Y( ziavr_8^PG{Td9x*PSr?pms&}!=~^6>;d0^+7~zoC&M@4 zB6tWchi}0r;M-E80DS~L7i1KmF+YO0ntK;&?jD6z;d`>S0Byd0G(c_22Y730K7^W@ zkD(T&PoduH&!Fb&=ddn330uNbup>MTwMdV9z}6ihQ%ObVxHo#oes#A;72z+O2SlF8jgWwAR{@R za&Q~G6TS@@(Frqr;Yo%JM|dhhh8H~5;dNL8{sL>kD1$C7)MF#-z<8($N`RU(<#e2z zV<^JaVI$bkQQ&>q(+oFn#8!X~j+^&Y4`*(KhdAzs9r-+Xw>(&-=pNviwqGQ7DidOk#uSDx{eGqDO-wn2a-J#yD zo^TiJB^3*s<$Ziuk}HRN38ho<*YeyC7J>btwn?mlw;G!?d9*Om@o{NuVKcEUYxt~w z5Noll_g~E%eazLZ#gf^TVXd!Or(iu*nNaI2)vMy@X>lDRaYf8pQ!drCuU$v)^(kx2 zzwgKz{hJW*%+e=n8YUXR=}_gfU`sd~rocI{JDdyC;5;}Q&WE$%qwq1f7_NXz;ZyLj z0KO(!BBu_FXWZp^Ex~P_rcHL0mwVH=OEM%Foz)T z)}FT@@6?`mAg{=t|3UpAa|D|3D9jHvM|p3xaWv_2_% zJq_(gfT2@b2kKT>7OEL7RA1oMlJKQWE=rl~Qb$%7rAqt?Z!N;#KrO=GLhTcL2m3({ zo(?bI9sw`G`S5$F_gm%KdA)-B5WEJ@!s{?U*{$+|@JHNyF7W&e8MXKP0@EWO(uU#j z8y@-+^gCP(Z^FG$4ZHzw;r<`=n4a*r&3{Vaq9=qb58Aj{l5jMj%a*UOUv%fkC%Q`ph; z^bQZ;#{+l_g`MGS*cEPp-QbI`JLKSUPfz$Gd<3%I{;&^B%UM#w zoaogr<*}tG>_hO6qX-Ry+W#01wRblXHiRr&vYLs9q4ql-frH@~_y`;ewRW5U*TP9q zoA1f+c^HPT!l_UzwdpX%Q;V0Jru-`+&z3Ulht@W=tL-Y*XnNcn)BeWzD7uvivruA6 zn}tJ19j!NH|7T|Wl%=L;4>{>MhL&Ez`>-%1yRA?k!dQPXI_VZW}YrT+s4WGo#GS%=l$U;)9#baq`_<;7LzL))_&HF?4gaEInto@39 z4RIONufrJ6y}7T`src<|Chf|YHN7c0lgpUXeM>qN$xbrM`A%kfrF8FWt8iZvH!~``8e5ZU&Nj)M*U_+ zCOx#l+R035P{~ZOE@?zDHi|mg#3&&LDw&0RiA40edi_|*%A66f_) zlH*hSg{4Dfv$}6I8ck<2U+9U-X19=?e6Od3y=Qy=DqJEd?Onx8CTThIs+g+`-`cX) z9P!3-+RRf*W>hyhjH0Zpu5MO^IY+CTBdt?Kn$_Ym_qCIZT4s`OUpqtktj}|I?!4Xn zhH^#tZkpOtFFlenz!1^fqGc_u)SQbhoxWJON;uH6rYT)Z`L)+r^r^EF*WHA+Bc_E zT(nHBZ^magF!LJ?Qlvlw^B&{%4$`B6eNRs}Wuxys4Y;z?9pvK%W*Oh<4u;HsI>4De z9(;At3jqP2eMPrkrn!3o4#%3Mk&n~jA zvH6G|kbQL>QB-b%k;9yt+r+G`mMzc4c={fC(6CCYoN7W=L`h6jvl6J^)O^6G)JqmN zH9HvWv`JDb8~u7oY%@{;Yc@068MAvyRx>hkVK3RCyxdF9H8W2{^?At2!Wxs=M&M*~ zuD#Dga=E#wr-w9cK{0&&A<1ZA>S};|@;EzOR)W&E19T+8B?W)apVY-(xVP53J<%_?l5Uc8lA)*F}8yp_oTH%C&X$K7Tf zZtRk~xh<)EnH8nn$wK61LUZ>;jOmFj}MTV?QnlOK>D>ar};(= zsl zW>W3#c;P{Fk`^@U`IyuV;h&==yBifU+|`ZDxO0qD?QV85CXJD4-6>;Ud8IppL(Rv^ zA}5***(mD#?-NLqX&tZIaZQ;!ntFmM^6&faGad&X_iTB zIPS08_+uqT3uspR(|@v&821VsyILc-h^H+*vn??V|16vEuCY5OMC9Bx4>T z&K;9-);(k{^cr7HlA3+U`>T^Atq-Mg-elR;htR)Fk)QkU(Q8;(Qc}tDJEzO6RNI<$ z_1~qMMan!r-A<9G|A>sV!Rc0WbGka6;u^efaLXT`E@k?XD-X?(RegyhYla-{%Olol zCVM!O3OJ#kxmdH*N@A)0JW2~^+D7HtR34=V`kQe+yrfTKT8D6dk`j5+kDzUQK2y&1 zC$nJ0lvNGv8Gx|xEctkVS=Co~)@|Xt4Wz#6J&Tn~RL{L-d_QxEbzc{9)BC3J9Il!r z6VeE|>h_Q~)6B|I`)4^xEInP9Vx`jv?4KpQ)2S^Q%$70fBy#m^c6;VhFV1G`W>Zgu zpE!t`t>+wea5i;K*AMD^bdHo6Y&nMx)_QM_tg@X?wIwCL4mOMAzc$Co;||06W@HQ; zCDliJ>k!`37&e3qyY6Vn+8L~6dwK{NhL^mzBhWuLXR8k-JKE2cc0 z%wbg2^X5vYVch$pb7kEyvq@aH`F50rcy#D(dN%yEyZ3PNZPa|$Kau5d;c%dyW)InxVU{vZS;E3{KEo`Wcq-SvFYam+`sq#S{1eY*E5rnr z(I3y?AvrNKCRTDrm~o{OctN#WOkdo~D0`Y&GbBATBmNS1h{ba^M^MIi#Hx=ZmESCo z-XpnKIB%qR${4gzhGbejoiCe^xBD{5kdq7LL?$|r%_*-N?H0+6Q9QlJ7D>v(^f6j3 zkqZx-ZLGc1hZCsnBNUB=OY}Mm%Xl2Vg-ck`rTYnPd4#yN96w@KFo#f09zbohb>n-E zCU-tqBJ)P00{4!_B&zu*a*@TxP_6QgU|zQLSrtBpYNLeA9z$p2Pd@1Db;}>KnWp;b z7+T6dZwudMEF~ausiW6?4l{!1kEJ{&E|t||&5>B539Vv$zf_uxvnn?0>KBjW>XROm z&Es-&Bzrtw=EW4tZW~O>?LBpyLT7;`jZ;iLI>LIS_NiBX`D}{Se<&Fy z;>N-Py1z1SO_-eOEwVdIPC@4(utK+=O3o}2CqC~2XW5B%#x!#1mdI*IoBZxHb9&UE6_G4opsQA=bDsyTkZIG+V|uMtGd*Yq zi957Xrp=(qIVNSkQl~1EhQFlJuqbvwc|@q%dACoKsl+$dJ6I{Ce=IEOY&l~fii8e zIly{ECh&-yR^j#aa$~XC#CLtYRh1XEmRo3nn?QM7vjmN|o{`;4tTLK!DV@HMG+t_U ziD+zGibnYja$u>gF_BP}ALC}czQM`Tj*E0M{bOY5>l>g2@H6-K6i!x@7*+RK{ zjd|7>vQt*CrNm_Hl%s3SX;I}FinI(4UK&$L?^8hLtixdWU6Q@d>}Hj;b=aBB$!1T} zA%jhxHkaiVqVJw2yNWY4$ue?&DXFTqp6n`~BQ4fb=iHqmJJ!?ZoRcFr){{+7AXb2X(%DJ0=tu#2r8@KzV zdo7=oH+b8bcQDYyd+vozW@51r@3mZ**K>xQ!K31HN*ywv@alW%-nUHCr!S9(4x8`u zdYH57e{{$6J+Q!0b6x0gS3B5a_UTl|j*?*yaRTmpW*r}Ic~8D?3U6~cbv`hcdi5Rc z@Q0LcUd|FfG7s@WmUH$av!6HQPqnSs(;Fo96SElaT9ZHFyPCd4?f%TXVD#xH8%~gf zv;A@=d~SC2hSm)p%~-$j`1G8VYdn+MKV5j;>|rdNDHpEOnWK}5o4s*< zFq?(wR9bo7S~BB&@pAeHvm0H>N3V0wJO7BBuA?O{FH3eA@v`klvv$btIC?$Fvb}~s ze%DVLKRv|QpUGFchP{6_M`@oBvZKn+6l;2fmLv5Svzw2upp5XF3G(4D45QfHKCh>T z^lcc5&;He%L&q*>-metm&?u{iwWyPbc>F8whaqe6Di%Ii5| zmw-k$&1Io)tX`GZGu=vL&ZV20O1e)s{vdTH7v^N#;sFk|vic@oPdn@Km$wgg3(*;} zuDG@p>+*fU_J;O?yumu54;)cZJ3*;lWb}Bps?6@?cs;f(+dxF`CB+DC)o#lzBbcIH zl@wo4`z1LOe8G0!P;;yE;q|0iGXvzbKR6&{cSyXRY}+q2fS=t3(G?a}F*_XyZqaVW zLNmB7G{fo^=wXRE{a4xtgB3#J_!ZW1z&m6~Fj&-}JFztwObglF2(PD%tzSJVSb@Gn z_o!gcP=2dP_j0DL&hU|AQNd!`Yq%W6<@I)C&b??B;`$cRYY1^YizR1wD9B-NG~;LU z1b1u8y*h93kT%6>(ZK?yHn0;41V?F$dbvO_TU*ds@xh<9k<7XyI4VSYXyy4w_6>|K z7+e;5iy56-8?>-9Vo$-~0NSF`g@X5o%5ShmEA0EQpb&|ny*p7Tn5Au7kHW$1P%2-4 zGNHVbdg|nuQpyy5`yz+ry3^&*ml^cyO7v74H`hruk?SavGEl zW_Y!--&}^`K;?d;3@NqibDdb#yfi7@Qa0Gx8%k#0sh#}h^+WMF#qJDJ7gEvgP9hr@ zyqZ(BeDJ#8oXR0^_i+Yr;r!-E*}{@Ka+VC*D>KcJfY@;?;sI6D8QNSLB{* zL54$K(Pg649o2$$oTY73Wj|WcGtheD72Bv}F5`_dZ}niD@y07TC8`JS;neZHl2#+w zsk$avTY`3;WF0E^r0UcI{*v<9)c?;!=WQlMSgoA3elc&&U?`8yu2;3UIbXGA@FB^! z(HA3gY6gqRf`w+3MAr%y%X5`+c>P*C>44O%6->@kfe#TEu`~aWq}2*m%`*sh4};m# zhh=rGV4XY_u*s?o&!%_Ta3h!$OWWnq+59Xq@$7k53e?7Ljr#ElsUHBmN9CT{!Fw#f zagJY$qp~XEcLcvi=uJN=m+?!`u%)o4!~Y*L5koIY+f~kKsZ9wSbXTx*N+e5aI$5$U z4@&$!WW)MDpN7rL@7dvXQ~tIY0|t&mqT_M{us?|~s(<-C$x|mdBz6UUYjPy+CQjVr@*?D~C}ZuBKR!pB_a2ivb%SM+b`ri7Ix4^S zn4KO?!;knk!=Gguo_WV5tFFs-3&(c3XxpNGlZgEBiQ7#3KyK9~eUk`(m47P7FR@9m zO<{X^aU_)yOTF0ZCm3(?UEG{w1uju_-~c-_DiBEpKC$LtWX=bFC2$!21gZ6YO_%nMVToZ=Cw~GPt#y>>>RZjZ^w?`zdQ$#zyoA$Qvxp|aQvsTo4`r+2w43N zCVQz3rgCXE>LuwEn#%Zh!CmoF$Tx3 zpk@YP;#2-<&Yb=9-*P5m#+nU>mOE#%vFT@CnRRb#tmO6oh33KXw-t^^k*ciqIDhWD zCK$+w7}<rbt1(Ynreb1(~bMKh@5VgeJkZ|8d9GJ7(SKT7lWcF0)1DtLMGtZ@XiW zEo^5*LdSI>DrPT`Za#-@heT*`kj!4EracE z%loR%15rw@VLNFRwiB6mr}^Z0VA#NcBkh|w2P2pGcOTw~pG$J9VEfyyGLrktbh-$C zHEdY_XV#CI?pT%5#mN1-osHYCGGZV~ymxaT@S0XZf7FUdpe3sa^z8v(WOv_4(TTKN zBNOcCs=H!kZjt%U=d$qbV7=RJbR?=`eC5%<%{Hw6uO`%Qk!Zb-JEiXt?0?5U)%@*q z$!bkT{{6X(*nC^QxI0)l>S-n|T7|7SCS>0|L4Ry1Vq3;Pwej>x%f@YWTExa9d|}c* zce;?SK5=Gd7ZxUOFLy zzxp<;|1&wu?08Bt+5}rQ_!pd?Xl+@9{*I1-~YqXg3_q)N2ezoR+lvu=I5)2Efr#Ie!0A^dq&n z->JUc<%d~;rvHpn^w+MohqM2qwtYl0Q)uFtKxj5TBlA*%&1(F6VgJsF$SLzyvYBpZ z4n5=~{3D-ua z9Dc+2r%lS(v(_uuy|>luk$m8U!VX-=cC4;G%Q?&RZU2595yfSySUBocrd4Zdr}} zW10oNl02RM@zh3I$3gmb!Jj)TnZ0Rt|5~y-1)JR#SL6nK=!9}brE@*ak>9Y(X0Xw1 zSrut+R!H*)g7L{r1~oIk$$h+Q_vz4gaK;E>i<+4r%Lfs zs%y}nf9^R~_TJYvMMh3GtNw@audQ$$jx()&hj-mc*$<;Iy`t^pRRp}4Ia?eax|*?6Up_)-RrubKU+?tRwGX9je&s?zcB)9GeBdm9E``9d7Fn zMM52OLXC38^(LVnWhI4GCB&?cDVN>jAGKMeMrc#@pRqE(+5D4Od;Ft%h`dW2l*T>C z^B=An;4ra#$*K|Snlqo_i^-yEp+M~0)fn19T~)t4&k5tf3$exMah{~3kcySx z*~|5z;NArF+gQ_{t~7u}Cu&BAUV^gZA%Z;oLlAKEA9by=MbMVvY*+VYn6zUr^y_Ih7f7h#H$KmvWEXTXVvH5$yZfixzmISYpbclks1NFF1xIrohS-s_vf%9U`PJglIHEuhYjZUuEC zj-F6A;z)P=2g75y!|;8$!0}%QKgPWZehziW>?HgUegQ8)R>Xv38BS9B`Qd5Y1@f}a z=L|op<8c<=19j()Uhr$EYuq)!G^jgy%z#X253hnOPzdjJSXl zHi4Src2HB?7qaFfya?8Uuff{zBD@PGFdn6PMPWVM#T<7DSRePDuwl+`j|A6x6B>FF zJk7Lx^W-;k{cfJ~;+SA*Z^#}}^|FDPceWAVwkg5MC(AssdDLAHHiz1%w}h2pE2x8p zDsKrjIo)Av+&y6%sXs1Q%V5wnV_YzC3R7jRtu$CVWv%b)2uGmS2|fiMfbYT1@K4wU zR^vH;5H^L~;RwjUwY7s2D`3L!;nuA~C@UVOqK2y(%(#brAfGa)egK)y89r|?_S~Nz zH}KGO-h^qm|8N-Pv;B1+B<46;t11Rb{qezcgF)D%lY@zIOxX*Yq-#7Z4JXLEi@iV=snY`+5q*cHbK3r=b-zlUcjA#zedsl?!evAVK2wO zH+)f^oEWSdvWI^)l8%SH@f~-gt+BicHI}_lW7!AYu^hzhj^!=f8jI2$%iGd?Qn0SU zC~?ZFU}DE3h}HbNP|dTF#xnmtjFjKI@&6ciI@F683_rs?#NlYie=Iy9->7-UmP=4R zx_^P1n&&IOW&RA*SE8?A87Ejd_$_W4WL*bm-Fc0s8Saa?n>%a|)nBjjk}R1VZ0J2G zYsUwRCSO5IOW{?hrSKYzVJ2{lr;R7FH2n$u8FJn`os0evxjwuZdpFas8W6QHJM5@eB6I1E|j6kY&zHtxY>cL5AKGa!#(gU+zY>h`+QA3;miDZ1CQUJCggYcChnW?Ef^#>-iGWbY02|J-QJ}n zJR(od3_fM>6`{$jU}E!Qc) zTy{(--6pQ6iSnU$td9m>Pjze6RmC6BiX-$-uo(OqYC_bSCgcWgt)6enPb9$Lqr&Am zR1F@#oef^7!3`J>eNeL@05x*mv85r5hT7`KKrIHba0JW;wHRo0v!L$CGTY&^j{hbY zkAIA(l2y6JcoJpA!eCz6J159Q^pkdq3ZtPnrU=v&B|uG4BGeQWgPNj}P*YSEYKqE1 zP0^iDQ1jKs3PuvPZ6IwtURiMhNh@0)D%^Nnxg7ZQ^W#zD@AufO;LTQ zDbnp)G(`=erl=8gr>F^TO_9=_qNce2Ek()FED-dE>~ASLlkChwUwr+RX!FixZR(;m zLp$7Bnd_angM0V|#6Xs0{cgBi@^rUBE|i{Ez>?+e_|tk0d~V z5P}71kOnO-fzaSiarfecAjO&-?tuizK%lrwaE<~6%7;>*6f0ibibE-`|JQr(Let;l z|M=#?@Z6o9n{}Dl-C0r(z|`}%zoqBrqjfEYd2WtK7Lnt8GRq2)c^=};;X7{*L;sH) zJhw?cPsB)X7T_kU#Jxnc4-i!t6T#-c3waVYaK9{>O5LyjGR*F1}&ruq4$ z5|c?PTj&&&Ep#f%7CH@O3!RR#&m>|EoT)m+JMyUv@oY}5{+pE|iDWegC9An8StX-n zH6JCbg(z7qlB^2Y7G3jE>C4%&HC{%%+yz^Xay(sup|}#IW@$CbPLhJ(plqhia3lTA zy>{}(cfn2SMLefvpX;8@bQ{TJmGM-Uxv<GlYsrr#Gig93z-u;d ze0DseO3&b!%1xBkGdQMRAeoJ54$x+4_!7#vxCd%p{Y!RV)6clf^4|@VQ|wI~g?Dfg zQVVJ}*K`;6(f<(7;3K?-l8>A!pU{8P>thZ(=76U}{KJ6P_#EYmSAL-5OZug0M^UbL zB|ZpWsUiuE-o^qZNcOXw>f}jUs(wc*IitKse@ng3`;%;=o|`wHlUjT|Nv-J5&HL2S ziX=V%-&}pYN$qCRM*m6bxpVV5SEn~=Iy33NuXjt+GJz~Knbw->dQ}Q3ygO*tUt~f# z2xdkp*JZ&t48rLcjPo!X%Aq#|w_tYMi?T$1MjASBoy1VQj(PAU=0#be`BBOaUtli2 zhGq$)qc9N#unbB@<*+dQQllwGdE;x~m#X?qDj>LNlrob|rv!rwlK)pI(_ac@`b(os ze;JhNFNZSy1OlCG67%bUzM9HQTN;aJ_Z8lx$Pn%6QwTWzOJ@0U9k`Im=JsIxccfFJ~ z$&tx6AT_?9H@?3oepqV!KyN%ZVI}>j)cB#^_+g%S?hbkK|K1xP>&Yh}HGZ@=evBvm z+|>99-uQ{0^ozamxp>0OoX%;Owz1KUOgr~!7AQwZAs*l|)67IU>hKVhD?iT0GMI#s zsMK}k$Y(s@@F9CdVb8ghXJO1^*nA8k70;WP*M*C*5dBN|N|htG#*G@Y0%ax9a(v~9 z0M@gop&L1FuBTs)S+X9hBe!?|Q(oChzig=DU~jtbaGUyl4s{8hJ33aH;x%i5ek7HQ zg`0)uSbjno3%An#GZt<<{ijBZn>((qq!ZB8+4RKo^vg_$X=mbs%92d>+%Ynd z`}_1u_F~%XAEX zqqIh|SZayF=|~|$nxWZ+#qcy1$44j`KEaao|AVDaj)>A6jg;JQJSHl?RQIk{0XHwn!`vl zG%ji5Oj@BikJ1XwEo_F|STS3pd5ZPCc;?1-{DJ7e0_ z*`5BhtFtHlvO2}ItFxE7zQFO7znro>_v@^d=Delk$Q0L)lyU%(R%&F;#$W-I)@i;% zX`QAP4#jU!TBqra(mIXoqtZH!oB?7n4rN71X=pV4lW?rvGI|@*63rNm(MwA-Ql5{; zY*wynrql5S5ftBDrEw-!#o1U36*ff4xDn2$zZou2zKa}}hnR|yTrCN0zbl;3GbW_tv$b1hh{!cOz52R1qFsFlt0&|M%yQf~%UVj35$_NCnh zJ)8UJY2IP5vuE1%+A8dIueORf=g6gD`*V&U ztx#<>wt9BXk@{iy7pla02E1m#vx8n+}Ft=Y0@wPtr}tYim>Yo12bpR$gm#lemUWes$ue{OX<~ zS$Y~>b7Xe!zUK%uGdywMQP9zhm9R0wV$KhFEzF-Ti@VkX$0a}8{n1txH1>ZY@`Ji*;dq-)ao_uuh z)kUJTH&fJ#_q@3LW{Ue5TD8hk)yof#3K_G~MjV@@C5YSevfFm~{I0(1BhyedUZs3= zNc%qIRYa>bL*@EJHdx~mufw#Np>}?9l=0s+%n>+T6~rX{rB(a==ah<$+Ca90Po=ePS=uNbw1b2*~+pXH#nQFLGFO#wKtbga; z$s~45U4}{N^l)wLELAj}9ws(Vr{B>|@h-d{3*wvED#lNb(8kSHoBi}M+N#;=zMtMt zi%_byzg|ImI!7h>>t@?bPh}Qf`!i_;=c>Q}U0Swj7{H`8o2z02$QxG#=XD^-8a=(SnmzPzL%7B&#|Z^rBjLvKpR&ajr^MJ2U8`wNmp`L`L0gpuk*A^D{Dz zhV#_+j5;4zn`c#PchWY2d|gns%Hn~{PM3MAeW1C(JnJivb<=;IcipVt$OD&80{>l| z;hD&A#5`3a)4xAiBykhwshysv!2=BmfdUNJk?;lwUqa( zS#|%P2BhwfR*y654XnDmau&Uf-P~ic>oM#A{yFpqva!F-q4U0K)p&PIZhe8(sAX=a zR?E+d%Z^McJdb{tEwO%Hoo|ij)pO7U3f*O`c|1{zh>{I!PhP!@wY(=TLq6izkc#Fb zuCXW1C2?#t3y5PYai7hnPqwkX-JJ{QAAO91b7kqs%YEjHoFl{aQmiod=5V$pqm;Sm z7P@G5> zr5U+MA{Wkc?aFz^tG9_=4f%?Vy@}nO z^c7p7e-lb&sRsy)%2-Cvs-EuRmdESTx}Viw`IgZ~Xq^Li&56u#MHx0HGJ9Hv%uWTU zTxIpbVx6-3d5OEqcVzOSz5kqI`1A1q;Z~lB$)r5I#Q24 z@Glza5uedWPkl1TKa9tE=`T4I}(dtG+J?ks(o91r)@J+wKtqkFqdkl=dhij zFa6KyN~?+O^!c`WpFAJw&i;@UE`QaeYRmh#md|qcBEiD;`hdLaobtV8{)%=P)SqYb z?~m)8D&ApRA?MeTs%b}EzN37#BMaw8rwZt#OKW&FJJGw-sfKi7?O;+T z{l5Pn-hAcRG#~YIXBJrHp*DwF)tR%`eW%*qSzn>OO{dy-VT-}>U07qK{nY+0daQQS zPgU#6mKfu&61&pB)L#X5V@+bUZp5b$-;GsKCO{pO{@np8sJrKQUc5hJ8rq#zb16V2 zc4rU4J>5C@cS)~`eoJO;GSK`FnRUsau6(Q4(D)QkSPu@|@flV39-d6L_FxZ7$*6Ah z(DT|-_^|qhZLGV{o}RUDj-p3TMsYl&8r_poU`kJ><7`ItkwpIK0zC^=&itAh(2E`0 z{3?6PUd;TtK-ImMcVfFRv4?t*)2l#rqZdm8oxSxKElVa9+gsnG?aZVi`Y_r*GO3t8 zO!WCov;)LS7@)5A;AE(ec6%N!Fu(hKYbRppdY`@ zoJAe$$C*rJQSJLP)i}97!wUzgJz`XldL~W^Qen}|%|AhENOYQ|dOn&7&6QO>i{{6e zYXFJIWmQeYg;~{j@vp3E=K#I4RwG#DieZ)B4pyyW(qytbhD}HDx=~*=`yV^O3*~0sS^knVJ9BTaF zG|TnwV8&E8hnl>Si`^VUSn~7~9zwQFa;W$rddZ9va->;JZ0nCwFD|$eWCOUBLq&YY z2(aIGobfB?R3Sr|x`sJb1F>UHHF_vl9ZPemUc*>-m^e(2mIH*(aDMNTTa_G6I_y4N zH`}~9A@Pa1)yLtU3n<2uS+yL&dH#poo@r4DKXRU*K0+@b7g*--qcVI|>hRxXxNW4K zQCpQ;1&#Ea5?CtX+OFIxexx4deUpHDwdP?z^(CyTQc~nEiwE=nAsnd==JtH(-FqFt zJ>bu03n}5%`((Chk*y_HupBhZlV|F|WTOmMd1CdYap&lye#)$OEQ=rMFNacJS{|t{ zrBp|C08-cIs(=)(T#d0R_P|ISiq&u`QlvEt(^0sJeyXBeTah~vX0yC?@CN;Lc`n8E zj1KA)Ty{+@IA9BkE6VY!5&hM%De_dAyd~)BgU!)}Es*E5EL1wWc$~`83VFfa{2=IF zY)?NA56N4yt~=NfdCtbt38mTO&KQJUFfUS<;VO?ksGD%{`~~-;_)Y;*_%=UiNfFt_ zCt=J_flkA|^v}h9$h~t5$6wb09EjYTwhY3%NTJ>Qu-*{#@$r1|GXqk@b`?M>Ph8ws zw0w^ZFqXOzS7$mXd%L)GW^wV4yH%D^$o(S=wJWa0I373Q1pEaj;z^{8?&6MxWioOH z!ZHPYd_A864aOPt7sLdl+S!tb^>8M(#aS}q9(2scIGl@9km?)P5}b#daXwPPXMQU5 z4_rV$Rcn?dNZpuaDblR6Wf@Y|5#QawKkTONTrMUsZc6YEbHk17UR~_LEE|J zCqt=KFh3bO57}m2YmqA<*DtsY&){}^h;Dp?JJ4|OvIJ(qohV=A+k-W5FE+=0*cX4s z;kX|sJ6Q1lql3@YTMpoQJcPgEVLXRN@B#jYukk4A>}0=VW;}*p;wh|-e_%5_jXm)U z4#u-M4%q`;^YKsIuCx3v(Q%N7%Xks5;9qzZU*R>h8PsTE2;Rn0cn72KFO*OH-NkNr z4+rCY9EA^1UdX3{&9xq%;#T|{56h?jp3!j;|G@|N9N*&$^mlSc3UlErEQYVKD!#$S zNKKuqGrq%t_#VgN2b_%`aRq)tH*#!p9YSjMT-7hoLCuo+%(M;P(eHzP>8J+9tjOiJ zD=+dyiK`S+73ivn+#GR5VmftwjNaH?W~}a`8FjcEk`SpnjMw{WTo)Z1uUE7E=(Kqn zeu>_|1!nOHoMv`9-4PRXYDeCtbMKs}x7WCCafeLNKU%pKafeLPA8T@P;he!a_IO5j z>lylXtMSUbWU%rS>dA*R6BM4PceHY5cgN4vX-iuQ(+MoKAd-UF4D^wo>PsL*)v;2@mtL0 zBc~Tndm&MaDG_ld8NOIA>8Qj)mGi^i; z?y-_kZQ9BEhgFv81-z${5L5rBY zt%Re5TZH$7%=Z!^n}Aq@puv6}-zXDNS*FEK^O^$?NpVM$8IN zxuB+}`Q@tXx!@s}`1Se{+tU>k&%&w0tCyk|%oTo*YH31S!dSw5!bZX&!nJ#wBKujB zHtL~%U$DgN+&41UVB~IDgB!WFu+LLXHtI*TBJ)(PO-z0-`ZwwI95u}f%s{n#6YC_5 z-@c!xj&0)N2VZW|lc*nf#pac0v|)<^xsWz`0^p3z2B+7FEf zs%$&Rj$^;Q^%7NW2jgqK#NB;|9{z83bAKd75mMY(s`mfL2=Vcc`qR&w@a>&?KF3-T zyj}L6I@+`wXB5+6pXYA9ORr;Pak^LRrqIhma~IxAVcDo`E-iVG#M+8>jE?Tpt1{#6 zfS)Ny$_y6XuOG8&;Y-xp|FNu@#F7W}i&mMEfP-utGGenTx1-_XqfQ*u^EY_SmJocO zyCsBrgsz0Kg!zQ6grkJJ1Ub@&63P+U5(W{b5|$AT5H1m(KS+q&lXOTAwey6Vy;FA; zc8CgtPTg&)Zh#i4CLW?*(p!%jdYCdY&%fFGcUKDz>!rL4>46%2n5FoL0mJ^E0T&oh znkVDzW4e0|HI{FB^#6_tlfvpX7MmZJD1Ka+r4E<&f6_7BPtpEQcI8T^`?wn&(P=Ab z*SBi)Zyb^{^iVf`)0;XHbNI;&s>(+h_Y+1jy@%?4R8OsUf1oxo!0#yoX7}(O<|6m9 zll*g(Erlr6`-;(1MgPtLX>$)1`@7!S`aoUyoy`8`H*I<_=V$fs8h#JiBnagQ^$1-FLkTko%Luy( z*9fl(!H?L)2#p9m2onj52s<7nL?$OKv4*P9^ZG|hP43VOdQt8ixEo&7-)KQ6NOPB9 zdCa31gi3@)j}s!7Bwf+-+qColX=45gN7K;rYQYuCYk2I6K10f39j{U@3c0T0uTnLE zDOdI9Y==v)ab#|KU7fnd%;U#voLhHZS3%dQ2Y7K^HNVawZ_5oeS-g2e?YXXx*UH{h zHEx&{9&tDL`JkIB<%U_~{X}{bZ>n53&5EEdH}xVJHu9E$99Jw&TQ=XJ?&poWF1JWX)PEBmxTP2L9n2PxS^a%WFYSFZ zk#A6bUjMZiqoyj~rkW`9ygUB3e$Z}&T=$gPDtH>hi+-rLWS-qe9&(9dlr=|dwNy60 z!l*hv)}w8M81ECEw!C;R^Gca;cC%&r?2{b7IjD)pK(pZIrAT#JHlLKjO(u&{KJU`hy248(DnXmPgJ^k zy60}&Cz~4oT+eH_k}@n>rO>Tm`|9a-=$<=%q)2?B=XGeL*cr{v)y&AEPP~vyxoCCe z1$9Tqqg8{KRE3gq#Y^(CkuoC7KoiApx%#Lh;NVJV2FsMYRQSF%suXT>b$n znQjgDywWHBJLU$jNnt0&zyWH=Yvuy~o1*9&rp-Z$UkBJ!_SObB>E1AHzYb8bZ>Y|> zJU|7!m1>FsD&no)TE?3EmOOQSaVkdbr(452Z}qAFj&=AuJ?|F=DY^~x9#RKK_vzoM zt9eM3o6GB*)c>&scT?ZL(Z~32Bx)5=T)SIFDF3&5K7YAXUq-k|)M!=tt=>jPedRr) zc9L<-AZ7o+N{ks~Q|a0pg;b*tOf<3WKj@A0TIO{G>9>Di<|eRBuO*$_z4RW{WIISb zs!`0f$hMHagE5TeQz^docdz-#H5Th}n`ZR08mu*TH>;(ET0GMylbUKZPH3#3_L@;x zV{J^rt|p8It?Ff_C6JRk;ab4I*nj$%RaTh zX%t2GF{g3Dyw|!YzzC-Z@q2)g+p4)A1sEmd_H6D9MiFh%Gu0r25oTNT%%Z-`?^9O} zM+Y((;o8XOD&mk9qWm%%e$o??(O4t{cV}c^qZjIaMwToF1sYQ&epw*#qh6^~frj~Q zh)iUD=#`4dWXOHPG4$#sDc{K!g<1Tf*%tRPKY9OCCEfA zBJ3dCCCL6&j?jn@{URZd_=Ni~Wz zx@vt^ySGOgd9B(ntN9{_QBpg+Mg@Fr^k8|Kw`rz+%_h=+om%lVx#6*|jpkxllo6}l zCO(RIJQiidYdO|)j3ke+^(wKtQAR7ho{w=DqqT(fszD7Sm)NfczsG|$jP2S#>uE8C zd}316$C^goj4>&miIj^mor#TB*9+VDrc5hCSB+{hTSHUSkXpt9ZCi>8s?CV@rSKsQ zBi7!5qrs>RX>Vb1m+$i$-_5li3nHYB!7VGM{YnGlAk*w#(a_+9Z6;<-BjY|3;ZABS z5oDCy#Asb)B1?1`VK?DC;VHq78i@RaN`$6_Xu?FoB6pr|44c*V=LWtT^i0obcKlx_ zqGm=BtDmah%*Y1=ni&nX9vjvEW=5iI%0{a?{*wEid_$-?TXf<^wWm1?53e*gYG`LR zs<0MDqE>E`+S$U$D_&_~^wXwpQVm+NOlE9Sqg%324{lOgD^?B`ZpHAh%__N-VKx>0 zuob&r`^_q(HN$ayTVqK8Pe55}QK+Ko!!l^ID$~x$8*q)dDB|Q;Gh(yq-p=T(#H_ZHQ?t&z+6w~B0SEL8>D8GcrWD&5W~W(`o? z+8JZCdt250cFYqx+Z$zU_qJM9hYwtW(B8k9&#LxDW_w50YT<2Z*Xp4(YgG>Me{N6# z9gJ8O;j|9MRc*>f)vqHvf8s`Waz~@2RhG@MPR12k1}UA5Q%3vEvVqC{U3q8GJ->_5 z$13yS>}Dh}+3qFXY;;HVFm774h&L*%myydB@rFlP z!qd%UGccbedD@F5Tm239dJHN3SLw~BQSXiF*V~XAYV>ANyL*$Qt{(L_(y1B!SXpdK(fv991gRhT8#Ko4KH1;!H=pyl7R`3s z`ke|Gz;=$+1{mgT?5e%Vx_As(A9<(h#IRi+dFSpIV`MgeHFhAsN_ej}4`ge{ivx{Y zG7=^zTzmCiJs!l_@6~%Zli_3aKGC%%%?U$FNU}CI#M6#!(;-F%TXp&tzO&^_?{6t2 z=U|H@sYhfLKk8D}kwjL*o*_nITi4Vd`g~_(Fg#1%YRTrgkSPA0(bC4U^klt^6gC!} zr|*QMPc#>#)iPFfTAD6v(oikioS>6qD4`so5upb`-kY06SV!1LI8S&;@S!?2m{6S1l+cGTi?EJx zn(&a|!*t{zlp{1E40`9z7-73(O^W4kz3PJsi)CA0^?_|!)2gefvBny<6!XkdFOKzf z@q_9f$7;Fw!5trGG_m?mp^7&3JY`jRMj74*9Q09KReY_fpixF=GrtYjxQ|`%iPKLl z8f8?K3~r1v7FYwOG7*aiI|!%WB}B#~jWt5;Jvo%53|3)d85cGfYXsSj(A0Rty%hGH zt?k9-lUM<2-&jMpr4YaH2a3bD#u^iSACix*28=T{*dOwEoT{P1#xqN*29+aAt@o(E zHJr>+#R*0s`y&z@sG)jIFsgdX;1AWN2}VBqV+LHVp)O7^QtPB1s%#UDd|9|*VZT+w zQ=w!T*lkdU+I>5Ht4j3sDfBsmQKWP5u&@0CqpY~jTK4mh^&8nHCK-NN{${98%`~|* z?KX6fxm$it+jtU_!RIdRIcuunlhRDz&kS(z46(gzO&(gjsPW{O_2?(Ni$g0`zZ$enOlX;U@iTbn@jC%K0hVJ`39@1?;IK2;R!}}xt29I!BvTz zWxiw67@UW1Nf=?-2j`K?b*VfZr!h%&17lv#;M&m zuZo??@dlU7G@59I^QxCKje6c1$^EMKED~~m&b}$HikZd6hsm>yKHh4@{mOqf3AhVn zzm}KJO&CRO*YZ+z5@~PfU32@@Pm+SSS?$&GsXMdD0t1qash_i0oJ4}}$zpUqbtK8C z_4$|C6a!)zu)rJ;syZv9;OC(U4D~xmzTf8e%(VLZBo&(Hl#x;UHoyD6GKyNYnEWba zt}#Rl{6Zzpg8P4Y~DhuLUNk z9U<=<<-AMl=TlPiJ=j{{^Af#G8vAdgah6y1z7wIRoUel@J7zU+CR>R2w18e|C07dj)!>!<@EAXImsbl`GVge7C5J;d3HNUI&6c#v z$ZXq1&l7r7@l}-0nEh4!%EcVislYcb(rjb5Wx#Q=Yg|DEtTqbs6kf&^Mx+|Pnsa;G z3jdwx>#JD~CrCW5f_FJ2oMt%`*y;Q4a%i@O40-$7eyoCuUBf{H*Q_y;wVD-GjkT<^ z))m$8wdR&_axF!^uF>IZ2#1>M?riu--&iuS(Ok2;0{~%>_CGUtUpJBv* ztY=$~uB7g)C;umv)aVrQ538)Ui!Cdw`zhvlA~!G|Zm!#xR#v?>u*jBHb|-HzURt%+ zl~v*<($1=?4sK$5$rh>Xo6YT|+h%@qhTlwzRPmdQ7zZzq+gC=~%!Z{@!7YZLP5O?H zvo`eZ$Y<2FEgXtRv5^0W@>Fbi??=fIE%oqwi>-&F8e5UolB@=-qKYubR;n%r=W$aX z8(@_q(Z_AZ5@QpO7f7OFo=c70+l`h6#}+fLv-yUsD(*H)8P)Q6;;MRX61dz(Rom!% zYziH@+PUO5a%dbq-nuExaZo6^!-%o5FS}Rl;;LQt#4CFY>V4VKa_uuF+qE0z)S81v zYnzkpXZmz1fJ1-fqK3_0^|y0It@o>u!?R&O;q1NdFy*?bzZy}7XXCZeuo)b;|lB#-k;Ue#<95_G1>;#;{IwuLVio?YiCm1bF6}U^byvb z?Q%uNoXB)M|IN5$c-Fqv@|EZE|KU-&{AXphK4u)zY?D|Yah#o0^hxSSRz|vqoHRCT zHdz^Fbxnqo+^(&4+6a%k%NgfAAu|^%r3m#1T?r!za|jy=rwI=UI`^7G3H1nF2{Q<* z2uBIG2y(d-OejvMMd(NvN|-~~NH{^bOYq|!b$&vW)!Nb0mX48xS%e*g6NJ}<4BWpi zPN+rbLl{d~M%YcbM0idJrhr$R(3H@JFqSZ%u#a$_@YH5ah+Mz@EZa8~>#xok>3y^s zfo}bh(b7kIXH%W8u`OWoHRCLwMi_9NYxFK^`E`o0m#pgLbxs>C)fYF6iq^TR(+y(^ z&+0z9VMKDyEq0SaZ#C8Krcql81Sei{)xP_t5v;LY=&A@ETD=<-9||&Za8gG0Iw}s=;>{xKXW^zVhn2^tDr2{vzq4#(X-) z7_R-;L>>8yT@*i}b(Jb{m&EB*&$~vPHAdaLYZQQt_lybFHEQlXqnNgK~?@W%mKy|%(Y-G%q8YRcK_UpZ-JASY(*&MfNgbFSadv{Tv(qfu&Hj~A@Xr|rBm`oo|8`BaCVX04s)Ck(c> zQr4Gj9IaI4m#n6Q_Nw12s#6nl$o3GfU2CsCzBI~MugTyqRmWG<9R#bsuZ&ib60NBgy@mO@`~{*Uam}&#BEBIRBc|k5g0sc!_2I7Y%o(PI03*Oj0$~ z^NmqatJYCPyfg~)G6-dj?>l~;uzfdJ5cS@YPe>>4SR*gbg(*$S($WPMy}P>{QY&rDyC})JO(fr>NN< zjViV&ohh|0w>C^2R_PNz-J1H-lUErT3zyGxePWqx?W~eMQGfS@kKTUrtTZ;i%(L4% zgZ1TIyrau`%|Gkxna+&X<+GPNN6CUQcl1hDXRvmmt7>j_mJ#EvPVZ(@M0?*=1!&F+ zw)b5>Pt4vM%=t#m8O+C64r|UY;f3bx!rtA==B#V&rmaqs*IAi)d_teLx4X(^cQ&PWpq<{g-K91>LcTm*Fw>2ea!B_4 z4W<$x_*;tl<9G+5lEbO{%FtkUZHM!ORZS~tcc@Uq`Gr=>qONwbekrp$$lyyWJmh76 zyEpYsB=5QJqf5*j={W_4j!I# zjYQr*a!p6cC;@rR$Cc>qPsYyl(*_VH9vay~9y)RD#F|K1!u;K3Os1bEWi0d5xXjMM z8UMEAk!Lvh%VVi3-70GqXZ_sLbXGpg7v=zeOYP66@Z!XjZ(va!F7dARLb8&|;6-Y2 z7H1|~HE(>*W!`vRnsoW|Bx&mTe=MV|s~%->W{+FVAZjozYcLQupj6fHex><#DYb!S zTVyh~wTY+R&usZ@JNBTTuilz%ko}00>6dg%X5Q36n3A{mkB;G<=U$orDZr3>DZk5=!@ram9z-we0Ju_k!P))k17AhWlht5C~x;;Z3H zq#-ZME98L&Gd=gr%=GfSE3dS=;=TPd(5mq?sJDNmw|^Vji02aB;){3Cfz|zeJQ<}& zgNQts4!=f!Nq~}JW0VQ(g)AjkZ*PBJ%;c^e>?~%L>xbdloFQ@2L})%%X)xwTX&Uq= zl%_%NV=hd`D#(K+FfYcUz6NAUln)ZyBU8pS`bBSn=%di9P#ZGt_yW*cHBf948m&XXY z6aNW&UpO zzffmLD{0$3L+K-b5~z zTz61L#IuSPE}G1}q%O))r5@&B3#pH#umQ%P{7zm-5#?y#2q$1;jJIa@w4phVh-O5{ znYsmX61KFWHr6>$i*2VO3Ohq`@(PIA=$|x|>2LY^^Tkb5#yv}2&gaaYr!#|OnQ{4M zZiZd44E^1(Dt1@d@;h_e&a|_rPqcaS1!q}T2=P4kLY7TGXW5ZBPm#@P>FH@KkQ1=E z=?z9%Jwq@QhhhaBhH`y0LT$_M%xAP}@7XjanD?S;bJ{n5&6+lUJqo`h^%#^x*f@;9 z@hJPn1ni0vQ4Rx>a6C>?mA`O)WnBAj?p&RkxpOgK=FU~BnfpwX+-IZYo`jOSLdks& zO76ToW9B|jogsG$jRU@LX0N@FSlQVYq0I4OlxbdylIwDmTvwpvx)LSVRVcZxMw#Zd zs&5$6>?v}rD49-D1`P#J7C zmUJ8^5q}b=<0)K()SH@3b8>m*`j!4Ocn;6wzYWl}Q4b0@%Nw2&vV4YB8sW=!i8QjK zQzkGE6IW1{z*W_%pffuK<&%)-Cb2T*w@{}1Hp-#r4i>?`)TV;Y+?1guwVF}TSyY7- zat2b2E>g&uJ@5s|LP_=#W%GPxQws_?gJ>_=9Q@8Z_`P@V2k+od=HQH0AJ4BflwaG_ z^+L|9l&A-gcOf34GxO%rICCfuz%kPeEdG`#OKORuIKLXKDi?NUH@M<7_uBx~sjxGX zF{QI-&nRTR9gr)Kp|ZX`tz5SKoWW7zC|jqn=f_F=ma;6QeM?yu*-+MEc9gZ46J;&t zLRpKs@mmZlbbkiS+ zKVvmKh4TB;G~Q;3BH|(uT&Rzd6LU>fB;46Tst@*rJ415SWpG{w*GGR#5}oV_t;ZXi3F7X~r`hP2EL`J2UBqyq?7czALZ0b~)!lTls7mm=yZIK&g%> zft-0=)o?!6!5^?0F2KGhbqzyRo=VQFakJ@NO7CJ^hU;;;)iUlGuBBh&fW8i$xE`}$ z3Kl_%39fRu5x+*MZ)kvJ3ux0(A$jopeb3 z!AZP=*YPU8!fWWyj&dFIq0}Rk$D7y?Z(%pQjU(_5CZNzQA~t`h;aD^$9!iHU5Tg@K1b;f8j@bjh|4@ z;;BE#hCUh_FUIL~RG>rZ4eFrO7qr0u?2Q!hTq7|PPDQB~_yL1)J?6kYNDqXH%hs`7=Dd%vp5RngPpaoQ`R_7k$wOXQji^u4KNX#;8LW%$h8Gq z-~nujr%_7m_pu#XI8C(2Ae54OICjKp*a=%=XY7exa2R&QadC9?pd$%;;tK4GZtRD@ zVhoL0o33LS};YwVG zt2Fli{dBA*;yg;h^d7FoH@FUcDNSs|Al!suxDCsql&ovwPHc(0um|qNVJIc&Nq7L0 z@fTc!hjAAk(b)fgqvIG6*YP;M!V~DvLH;D>!&6uu|Gv$1w;C;LkN5?xlq>!AB;^+g+fe$eppJHYF8|&i>Y>!e(?uSx3j>C62 z9Y5hBv~Ur)5q$9;M9bPXT5Q=EV6}6o0@7T#OBI z33k90I2c#r6r@xc=UPn1Y9idotrpksxE62XI(&ocF+Eq_DHw`U&@7Hp(5!@8u|96Y zcK9RqLvGo)VsQ^nM=4k?#Q)(&JYZx0-$%zGB2MCAypF%)Gdzac7oIX=Cj5i`e0UB^ z;dzY0OV}DOV>DjD@pu*I<2Brj*YObEz$F(5@gr`>Pk0b*Ty>s9AN&jBq`>!@4k_^I1=!Cq8wOw@ zl(JkEl(Jki%#6J;3y#7dR4C=S^(f`J|DlxUE?@}WM=966#T;m-a46-ttOeQs^UzU% z2r0Og!!WFcQebO^Ut&*`!r5>vj+3zz&O<4bt;O=V8>J9-6eI95R>4R3HGae>4B)!G z7UnO+{$HDp3PjYwMkuAN?pO~;qLjK4u>r2ahPVeC;c1kT*L`e)eB{OaWIzx$r9T{- zVKtO8SW9ey{ZPtcW8>&(MMpA9VQei*VQd$6z@sRIuS?h!AE6YwK44D_pyVNitz5|M z99LoNk7ZEGS~YM0HbKfxlRP*JBE%;2zw7 zM{o=NiCggj?!fo>Bl;EN1|{aiJy-5q>v06${@xT;_dY=k+nBj&*Ym={N37%D7)>yfr` zTzjw(9xKWIFHON;B%&xjz+(6gze2yS*v~Nsmcx=LZN1mR3fLYiqI}Y`5>Cd-xCo`~ z_f1#@f5xi#J4WFZtd5VrlKr2KPejzg^rhI(F%%nOar_1&u_-pjme?6vVGOpzG1wkw zVrN{9U2rdU#WUCqA7FR1mgfAAS>x!SH6T|(?1|;D7e-+}Y=-@@8xF)FI0(n%P*gY! zSK{}$17qZc(2Jhhne2Wv&S%%Aej0>ehnq4o0@mLS1V`rR!Loos4F%cKyOx%F8 za2L+Oqc|5Y;Scx-7vKk6f&pczXTV&z5{uy~U-thhbgUzy5lZvw9dQ#5z|A-cx1&Nn z5$#%!JMe$_BVIshK>Z2sLf>+{jD*?oCoF+`uo~{gCb$pV;{jjx|NeCRLPQ)M#u<17 z7vVA7gvaq``~y$nX}p2w@gKZ^w(=YoFf(4k{CERP<4vrNe_?aHi{0^I933O+;FStj zB0k1d_yqT$w0?dXdG*0{AD`hn{0GxjVE@Og_!qRHo>+? zqgt*QY>H!0S}321&2b^N#*Nqp_hAP-i5>AecEx9LbabObi(vo9OxO$aVLvQ|{V@s$ zVly0s-B6ksAA-YhJWA8z3Z-fBl{gxI!ZG*UU84nN^|jLTAm0|OmjB5jVlB5@M7 zz{%JHr{GYWieqsG&c*~>j?(n_c1*&9n2hI;R>fR@;X-_ki%_phy#Qvz<#zV}LUgPq zq5`hLI+%iOa0B+nEjSXl;#Ay$OYleBfjjXS?!sHR8{gtjm?4t=AH#4jR>FPQ1b?=( z|M#F{KM}F`Kb(aJa1H)~`|u#1#b5Cu9zv}e#|sR`BUluF!zet8t?_q^#$z}hkK=qi zft&GU936+~IE7d64}6ZN(fKtM3>b=Mu?(KWdUzf?;{_aw7cn0H#ASF1cj9F{fmiSj zUd8u#4FjXt|F6?gkd7M|fj6-!-ojpZ8%N+BoPzgpK0d&8_yl+0Q#^ow;~9L0xA7&u z#8+sqPDKS~#rIgCI{W_zI=&|2BR0fO*d1*S4j|}*6Hv!FXy7Vz;#N$DzhQd3gc5ejiW4vj=fu%bosLyl1Gi#L{0-~kC9H=J zu@Sz;#^_Uv0}&J48e7oc8(ZQCY=w!~4wqtk+=89)0CvIC_$|iWrlSWPFR%~VYf}M< zK{x>OVhk3=fsAl04yAuK4#VZhdtI*G7>kFHSAbln(M9^gbvWSAUlGS+U7UcOaSE*g zy86*Em5AXujUSxAMEbAeO#B;XptI8!6n!Rmtt>RiQnNW9D}QI z7Ouf%xYoh`zl)9yMEr^y@ekaDw{SB)$1Rwy9v2{(19xCJ?#9aa6V}I{u|4j`e)vBe zjt4LS58)C#jGOU@EUGT=Ew9{ z8Z%&Zq$LGcTMWd37=&XnE6&1TT!h)sjXCj9L-zk%betz5H{QZfe24kbuMx)w%z)EnY>Y3l3C8(1;fjThT-XAOVoR)m zt*|k+!_L?qW3V&EVi%l@U3JU2C)kUA%QsX+U6nGjaW;O!By={Tss*#)91O*|7>>zU7Uy9#q_yg|3)wmnC;!n62 z_uvuSi)U~jUdNyDA@0Xl&DsC|M~BveV>J5XFBpsmF+cu_#qbbT#KTwvk6>f`4cp>T z?18`IKs<)AcpN9;37m~5aS@)vwQ+R(LC1DHjr;Ko{*GtyJf6dwcpe|)1$>Ja(YGbn ze3$_*VRpQX1@H=%#H&~tuVF2`j^E%7?B0Qnn{@QTTR0eRqkM1f4o<rn zQVYb>XoNw8sf3M$LxiUUzMev<(Mo}j;e@G#b%X0o0j?j@XlrZ1HBLZ9L zI8S&=$f1)7p$9>}khP9*fbg8)XD|VTri8JC`Gli{TZ9ZwtEC{JB_WzHhp>@wjqsX~ zBOUn?dJyEn`mKbc1dAV!2n6#oMLj}S!W_az!ZpHcLVg~LsYHk-OeE|koF=>`WZ)^_ zN`$6_iG)RjeT4G_AD#@(L8wRQN{}ao=Mat(ZV}!SGV?@vIVb-$BJ{{$-BQB&i!~`q zqjlFI&P;Y{N9|#QRM-$_E)Cl+bJj@H7F~wkRzLT$A^WSH7H(ix`Vjgiih+KXW-=zC{#>p9i;dy-He zY!4rE5)o|zc&Umf(a8)PP*@PrN#FFGHNu~@}2V==)%5eANSZAzN(?+O%F0$J> zLM?GQD`+J~sw*z@Hzh{#8>*GHBS!KK%D$f)PB^DdN{Z{GSU6I>9mR+- z*J$SwZRGcA|7bGhy~dZLo#UB+@5hkz21zH!sug3H0A%4d{k%vEjU~ZN65NfIMH-^| zjCJPF=$Sm$Sw&r>RendOFtWXTL?-tZ_;kM`l^$+=a(Ec}+SdPW2kkh-bOf zg7MDDjJVJQXFk8%q)i;{S@Y_r+q~=9e}Xghjd+$0Y3z4M6F){BoWOkG{Rz%mpC_*T zL=yZ(f}pXg^F$Kh_=#x}oRI`~Nzibt`Z$p(!mvrsB}~BKNesFtza6KZO_JY^Q$drR zdl+1GDX5vZYm?Oesm{~}56&syX$+vM z-acrODmsl3;(sQ2xg?+t-~Q7ib!-}=#b?u;H)OQ&45C`!USW#*7%v<86qRebbAdK- zirO=srRSKco=rD5t=cn4O3lALa+->n!Duidfz8v?NaH#6ND^>Mz}{q<3Q8aW{wF~~ z0tx;mL6>Q2XF{4e_#gwGF`(}>6_&^^`%ZH=NOYF5YD1=}@iU#zw9t4pd=`^aj*oK9 zV%KOKukJ{H-*^==+u5Bt88w?c{vnTg)76^U%p@LTkd`=Il}RG0-wf3&$=RBuza){A zdlvTbGt}cGW*P%{*IB!fpk6AHu1r*g=a@4+Y7R-ctzln1Q>~f9YQeK}(yZ+-=91tg z2@1_p4d#*nhtExu;IJfkMS|nA)U&zHydlT`KeFBjuIF?A|9`*V{e8b*udEP?RQ^OJ zilWS)vW%>({Mq~|E6U15Ikm|m?XV+bhn@1oure$blcObvoosAug?8A%%CyPKg#6jT zWWUGtem*mw@6YXa_k3Ufuh(@wpVxK0uGg#UmCwqj{tnr;7uKgB3!@Oi2W+y;lVcSA zOGTTI@IDewE1+*S;ew_Wl;7B7!HMEN>*@ApRP*?H^4S8}e*;Zd@_(Cf!Z_@KlkP>e^%mPUzF~Pl|F>?R{Cix`jpRq{4WK4 zh=h2IV;{4XW`2mCfqdsf%jc$7KBN~4tz*N+LPYr;Q9k^Tz9>W#$ZLg`@urp!X-JVJ z&0(SSEXn`Uo+3nigoq;x>H8u?gnV3NIsZg~>b4<5DRsn15A)ZK6)yG>vlva z#2_uJcs_AWat9ewby$=-gO4DC;SHOF}%mhj-H9bQ1$MiX~fqUA7e zm1EnH5B_Kb%p!+&ScceOg0OyJmh_z%e=r5~+lc`UlkJ>Tf2=>tlp^W|oiq z*kZCZ-^@})s}oy`-oZK0v7cC`n)@$izgNk7r9%gtEp9oeM%`5I(M!EYDHL?zSw|x5N793uU5nz5L#^>ltv;eFfjv+R)*VxjJH8_yI zveM$LEcv@iD6csZ&vjMK!>sQDmpgxnzX^unmCre5!MXV`tEFFAwwZmc#$hz<0@CbBikE0$yG)M;7ARm-~W8gBl4|;XLatOqN46p(011CCQk#`wC?gQtJ zMniuP4q`zD$Ok3h1h@y6pRD0AOoxg#o!pI1^0n-C*%jhK|ELlR)g)}7^nr0 zIz=GE&WH%YK|ELlHh_Jg3S0q(F1T6{2qHlmSP2TjK~U8Nhgu}9KX37}zk}0MZ0C{B zd8`?1=i#6glW7KRJC9+x|2(o>u*^3#&ZET_FnIkwkM>@$%!4U+y=d{Z$15fFLsMz| zMN6oh>~n|KU4;4L9TWSIR62Cg(ssJn9eRKO7yLnj{d1}6d=>ngG%qQM628{jPWHM( zaX%pO{}5+%D!ucArAOD%64!bjgbi*?Kqn-fk!n4D%AKM-Yy#wLsXOFai{$r_JR_Ax z);^iL?oh4@zzZ+-xv8|f_NhuWsQ|nIWB+L?wXb_BAf^rh_&W*v!>P2m4z>ZgweHD8 zdWTw6ghz;QC6(MSq2;ciO0SM^=uE2)*agd=rCPRa(8|Cy+s-TBc1hVXTCMwKOFx?s zB>L0?rwTcTne1uqWsAiI&BI?HSbG@;i-y>H8AC&cwIPfKC#s)~5zD{c;%v?pzX8-@ zgRd~e)?518e2UZqYjC_vVLei#(x2C3RJf8_KJq8aZsSW=(DV0!vl}!6M1o|XJ{X%1 zO29Et3+@AFcifABP!J0;z-q7^9ClZ${FBD@S1rA4%Kl}dK1=O9OlAL42ZSHO`C=2H zCX;@_aRN>MqPKs+tP8pK7tGk5$ga_nZqmJIQKO~5&CDY>b#56xMtZo>qMK$Op>G;3 zpP3dMp|_i$a;uKeXH8g4y!&su(PVjB$Bwi8%}PEPoJyP3!6DZyE~cB6bR!Js8h5AP zuUY&YXCIXqEzMXwj{Vi5j(S+|D=PEmQQG<|{!+6${Q{@WqN67I^lf#l({&WS=qQc6 zj=~oorQfbw-nO}jQ0obB=bJ5EZ0^IQPCj@BTdugPv%b+}P@bo&v<2#{gZvwozIO9b z!FD*V#1bS*5dM@B#6x${LhWwCxSIY|{>Dwq7e-ui`LGttT$7ov3$4tb&ZxYDE}VUo zF5SV1{U*w>o*(3Y*Wzrg_9t1G*JAHlO1PSZI7Lo}dE7r*KK-7hy$wzlO}%e<>!q{k zszzYwihEWN45C3YSPP0l6}SR){GmiI5DKP(G_VqsfMcMx8wQP&>rdf$QT-uKuee=B zn|{aK68aF02gihmmi0JDrs1Jws41nIy8mujY}#3^;`k`}#qXAvP5-VY_eYj!PyTAa zq^BC^3L58j6(6*IfDfVG{K#@frJUbtS@q0a)WF#T3JJnJj5wmj@qsa4^RmY~cJ__o z1wLALn?{^XbhDlL5E+fyizfFmG{LBiH@!TDHW{^er33ixE;*aDjyhh*vp+qCha#%E zsno=zxtLCmq3I^=s>$UA8f~KuF;%=ki)}P@+g4+v;eHdT0&s|*jpkzt7+c=MR>Ktb z+E{wuP8(zzJC44xLz+*<(PKMnnkn{3a}jAy;e)~UNCUakUYlr&8cz@HwE?E-v0$xYJe`4uUC#|~)@^L5R$@gBfD5bO3(`OzcjE|F(DJL$-NXSUS zjArAKh86E{d+eIR2*$_J{?4e>%sBc<$)q@H-vvrCi&DFwj8tTCCyti7Y3{VI3$7oI z&%0=ApAt|Dm2K4NQPd{Qlvn5AQt&90Tu^jzPs^5W$Yq+PDX2Lb^^+dk7mbqTqbXDcA zyfk;?Ya5_?CEyr14{iZlPwYqme=rWjgGFF1C9U=R(G!7{J`8~|0I z(F>|wVdR0Wm(~$~;O^Z^TY~WdAI-+AM&2l{Jf^p{M{Q93;iJ6{@p>Pt_%Dm+`)aSj z^AoEm@8GLN83zU;Su{un%fV)F5S#(mfo%_D3j#r857Z#txV}G(%NO1A>O}JCkDh~^ z&|k|(*4Fbm@Aua_+V?|v%0z1Kr?u@b_|g;J@3d})^o@JGPV$@JaR0WJXu2tdH} z$uukgb%LB8@Klx&gS4JOgAk#^6sgPPlzACYVO5uCn2$fE=J(-l3-6AD(@{OcKC1cM z(UU3%X`7zZFJUlB8;s0$OrceSpQ_(U1ULjD;9pbh=-DW}&G>!EFAyO?2&qQMTfb;+ zN6-3FfeIOdkV^t;gV%@2af z_sH9)k4MQ)p=j(qEcF7ab+GS>1RdU> z=_8Q<^6in@DO27XG;tK-KX`+-j>2U9+MD#N7t!8O zt%u9NMZ7#vN`$V%5e^AEEMYQ>xsz`g;(H+e!bLPO3`IdM4%6nF24>NVBg&(-VW#FR+BO>g_Ypo?n``=dF}?ge#&vfpeI8kLM^=9_g)KeHk z5sHN$KFP9|_Jw1tpYfLUyDSd;T^4t88H1FbNLl!n`YcN)iXMYlaHwyyh^o7j#|wzH z5-ZcdY_iH-*vgJfE)p=tV6X zms`F#5(@y+AB)R3y@d4+iY>n#jirYz~O+L7Tw=P^Ahq8rM(7IQ$aY zYXQD3FctYij-RSU%Q~z*LfYC(O`r?*u>~cv1yxPO@OcHfJ@UbNxqf}D5syKpLoZ9w z&WFOuXF6K#P`E99`lDmT`Wesw8Q#-oK->2tQnxX*YQ~e{y_BkFp#Si0yS?8S`fUdK z53*CN)^=)gDdoi?!U05>I)?VgVxES)6sx^q8utRd90wg-hm)w|v>`6vy`Z*u)PU*b zf+dF`ni6)|j5U^$+f1#eUWObxjO7^Q{SZg`#m>}xMB`Bk;@E$NI6-4+|I8<|OesA; zfJ-?7rbuE#%DALObabW`@Fa24t4NIZ@$ECm(tEFJ;ZFiCsDKIt&{#6XW4%LT%Lm14 z`*E8*j;2PlKJIWpSA{|OZy0RDPVWKt{t&o(2x*S4X-i@U9 zl2Dg-Bg;Qe(iR#`zem!b*O2FyD0=%fr2RaKK2!4ND7yBVHrkXjfd(YQZG4GlDcS2K zTCZf(OY}{$HV1hJq#*BqA@7W6nx29_f_x_hKt|%!S@T zZknqt7eg+k-mfFV5k#=X!r*m8fL!>x*7garqlWh40_Y-S`Ox6G{k$# zGinkoEp!-9&dW4g)9aJUJ1x_`cqXS~AKZe1P!J0;z)DaED#3a12z2a=aSTL)WUver zgG$f{48FM82E#!t$N;Osc5oP+1$Tko57Qk@)1p{!OT{R~lX2guMHvQKt`J)qhK)mp^#2 zko}f+eSnPccRTj$)9AYo&`6NKeV|=3eUwJuZ^l?zi7%9GK}Pse+1p!?(RpO7r)vn*@_JRgAB)|)A$e7&CpipG90H=EH;I2$@@dCClzjm3Qe;{^HK8u z#5j%^_UDk#+;qC}A(|GlQ=u09B#YESMED*N{+CYc3sLj`rI#Nn)P}b`c>I=Hi(s*M z$Mw4*7~YTgJZOLZaN#{ z8eT7y6eBBCy5BBrLzq!V>w?phpQhZ}t%bhU2xT@ri`gFpgJ`e_tOX_D7`P5>`@?F$ za1aj`fwiC*90RrBK5+Jf)qrpi4;F#7ewdC^)|bFmK15TU#geiFtqnP$1m+I;PKkyS zwE0=sQ!S_Fc!WMI(dIZ5Bco#~qmApQs(rA%7#L^ba}e>RwzQyHbEV;XHQmPQ`UnRm z#|PQ#6gwK5oqv9N@629p6AaV(ro*yNHAm`_-%huG6`8zQN{vb zMed#+rndWynKWV_Y%Luj`?07{6M8{uyAG7IPiuQjK9le@jGp!j5#>}VeZNoZVRH(Z z;Aq=!^y7Z5?Ve^P#grmiCZaW#(&AFAEg(0QYRUer!0OtR1`RXxvo3=1B+UA+KMU*s zZy=82KWWhZC-cor%G!_H#y1fVh;@sqpkZQCLL!8^Ra=Hk@c7*@81BG-(##PKUFhQe zC%0fT$?c!0)FPyQ?VmLIpU`;70ps*!F$uJcijai}CI6(y|9mRthyw^%jDUY4MTCwi zym5qjGW(M(DzLqIkH%m?VbGPDNd-m)j=Jd=!{p-Yw^ zLZ1V+^y?>%e>P+iLhP3!WGs??hJgwab#|xCFX|JXRNS{5vGB({_R9{?#By92U zX1hc)9uQdYx+&UZ+X31gslRNTNg)RjeHo%(J3#%S^gmT&3j!SQ8nbX*#=#G~iogmdgJQ;|fJjr8%-qYqy=*+K8 zc%YD9p>-MRjYtC!=mUwrEi&|hG#mOG%!YBm2Xw_dTU{afkeptKqf}SzT)RDMjr?Z- zYcBRcs3z3Z*|h^c4X!G!7V6Mc>j;7S8+B;b^GJ#1hC#`WBD*L_S%j8;(KCNf+z_hK0#o;}_WufrL+j7hBlA>W6sVL?Y_}dapq?z?}m52=aAERjGN9c(P)c z4~gw5OkOen(q=fp+u&%m6pUNe$I>%05yKhYc=2FaS4h=UN;yy+>rqU~?FDx>+-O_F zQb;Gmvj$g#YIeNm3{zwI=Rv}%7#Jjd@Q%?f;B6$ZhsO#?D4tcegZvxZy&>};eMAO8 zuA+j&S|4SKpC8uTW8RbGXqIKTRkhYnWrO_}YrX#g=>~T`q^eN?WM4?kL)N3C2y!Ug z8z93VH^H9mys=JuJyD~D{4@Pm-5 zlnTm1JTt7{s-a$1v+_M6u`3}}ZmMs(L4F~rlp7Xi_>wMsuJu$S1D^O}`}T9q(fb7A zs1i;>s`mN@ascGFkin2u6!vdi$1*8#F4cc)?vQgDp&CNZKq@<~fqVv1m81shb8xHN zzK84qc^KS0unmAY!sx*NA=1taF2m(gnSY5KakP*qZ-3? z{FtsHlDSfwWWx9~vr==Pb`Rd_YW@eQ%DoTir=lUhfsnt$?Jw>@kbl6f%2na2Tq9P> zq2eA5X#+Qm*kDUFmD+Qr;4*4=R2!XBi)r{S&<7X|ULY7mgJiH06oSLxENBFVfrtl! zK_o~7*&rX3fMeh?xDTBDvBC$#!DNsOmVrWW5S;PHD!dUt9)XSlFxUXB2V(Fs`(CD7 z)#UR9Ms>*f9~lpk?U#5aW1yffwcky1PSK!aSZH7gJXgsRr)b+TEwODQquX(P+;c-5B9MeuDo^5W z2qj-SiCxJ!_})y!Owj8aEc8&=gm1LbHgC20mcZ9$Rh#RUinH-Fxqqw885NEuiUk>9 zHP{Z0fm(1MI1fS-f^ZNI7J;>(7#tpirVU$PrS-C@{mQ6rMn|Y~>Ah%q6)x}LSG2VX zD|EzXgQ`|f1$lKP=H^5DgUlU>xA#hH_^54w8b_)*HIVsoICqJSdjQ!r&a&K zJxA?zGM$Ak#5L2fv$$zVX{NE+)0OnSPwOvYa&UH4L?(qBkiq2&q7|R)2h^UTd%Y75^CS%NEa_*fdy&*qxKM+fX2(( zOQsuUns^y)S>{Bml-$*hzEHB&nI2w7^@3e!Ks~B|sy)rE$Gyz%4s=Ml-|UF5v><#$ zC+hbTxWOt@ZKcNng?S9r4sXAP4LG?HPj5_S@OrQO%MWVhoS2RDzPjK9s zRdI~wc0K9zx7N>5+`I+7+HeJWRnit5VQ$xLeT4P%yg#-e)VTq9o$O5g8mxI){Z_-z z@oHO&8gn~O%9-Y1{aS@e;&@f-0v-0giib=X9j>CaJiE}=t6I2fyc)!~j~J$RyU^la zthR3Ti~j|FAF!WN5UVbnfTvAK7mNZs@eahJUvTH5Ty38*w#J#)h&b)sO*HBRc1{Z$ zH65=O>}k}Bq)+;r&bialCaWR+y9t%4bH}S1PpM|;HI#hSou*&=)7bVYznkv#%{6U+ z%}tg0IvixWw8YL|<+`i}tsMI+q9k;sH-3dRC3G#{^sCn2`uR$$3e{dm8~vx7GHC{d_b)uD-!0DETDR4=Q1d`9 z+Ib6BgimbTLWQ35qV6qiPK*I9h%(xX*0UeF-Om)^MeS}Qn>OoByN!za*J-wn(OzxW z*$y{(AKk_xtgQzx-&U>UMGtRlKIR08H;h`|u*ZYdJE$C*bL|}r7#FyIMb|o%Xt^++=cmjG4In4+s5% zy&7IGw$oRcZLX-%L!FWwvlZ_jEPF;@ZZyxc4xvUI09)gR7b(45^fXg_L;3qI`r9To zDt79q^0_40|GbbMSq{08SSknzwtSoq|zrN6B zcV|2Ruti4w19WH8C!J|zfZoqk(wXK4=+n(7ttMwQcyLuN2k4<@Hp3@=!w2c1YW^6c z&rn8paS(EUw~Oi>OkTf-B$==r#oJX9f;IMj#Cof`gzD z7=~h*0m4BVSP2e*DsUe-2crNG2@*jz$Ok3h1h@RIg!AejFs=yWCJRIr4I1mrAK|ZJi=fSPvSQnM8 z|K6cv2XznB_Rj%31z&&Mwi7j4*X`gk7%AW%8qSHn?bwmBN9*sy;GcP3_qBIK>`Na% zz2)RUSX4G<~c-z?8L{R*l7e3>sl9^6r5we%(!$aXQv{yPw{ea-c2a5TPd`_B z#*_ouMIfLT0)~E~Hl}<`kWcMNInZ$xp*JEd{N(99DF^Z!j{qExWWVMUdU?Fw-30m6 zo|FTfL0*>V$L10=)w;P9J3)`MQ3_{$#qrn#-Pz1argn#{Z@k`8enD2{f#FcmFQ$&<@si%h z%nD^Ryv8pR#lNJdnGZ|6Me{O`mggY!xu47qO#M16d zmO%?yZo$riiodQ8%iK9uNgqzv&883w?VqlX%qhY!t0Jw)=14JkyrA4=$Jl+&mfddH zR8sym7@w?}9uSG`7i;>CES-L18HbG=@_|t zo3PEK+YYU(D+& zf}a%Rp|N|!j~vl%lSohYj~Gr5XX-xv;v~Z(PV8Tb8C~TwW;4q&FZQqNM&n=A2SnsP z!|vuS93F)|D;2+DKD)DSvCQ*e|1~$+?OMokU7AQb`l|j)PLLR7ff!?m7-LL6M=QmK ztIEFmFDz@MQ`d>T^cJIZdY{906tN5wqcn<9)`?L*uyD2Nw^`#6#p^C^sTNKY*MX&9 z7Rw!UG+rNQETWcpeW>}knA{W!NYFiVMu^g{2;|63ZY({-^87^In#4kPP3G`)F}gKk zbR)#*qBe4P*0U^^q_CWZ@l>^dZy38bveCI4s-*(H(qp}AIf6H}BSi(O3Mph)8Hd+kTUljRBgP!{2Te@UC%{sQl622OTUt1p-&&SUcUk7; zv&{U6WrIw1tv%^>lI|0dTEzZqzF@gUjJHCxWXJpL@69u+A@!dUk7DNNo~G77S~y1^ z5@V;ccLN?9s9Kf$!?SrXS#F zQS~faaeJnUOThn19)FgGy`~Rvi;-zBR}6B64EDc`q+SK56Mjo zEGp9-O$hn3czK z>~@ltFyq0Ax`e3PEGueQhRB4Tj$3CHz6-b7N;-)RxZ>3#9{?)zpf8)DUy{&z1VjUCA_Y8 zcF7atxKPWvIcbcbp7xOGKfgL{>&yO3-r!0Mj6DMWO=bi z2C+RIxk+03arB~cmPXOq+%R^BNYe$N0aO!&kugml=(0ivu^1V|q9`m)?`+v3gIAG( zrl;v6+nc*{E)Ak0MicE$!=}LqFZwP`pWqfI0}sw$v*sT49LqWiNynP%ftdduS$o%r zdAGJzGJ~VXRkD1rSEL(PHb4wIO5zt$3B)VVsfS9^ST4t>-7E7D60e^cxLZsCReC5{qz>_yLr% z5UZ_vF`&Fl96fI%%XJdHMHT}W5ogjHC_kafD_uAUiRjDY7sK_zQ=d8(7x8#PUcEOTW7;&%MvGwUDKoSXxp#yB}C9 zjD>Y-U-oE{mBUeKpf!`(zd^=cUrNZ(`?&1t%NLS+nuEvC#tf`lPg>ZSD3~+;@ap-6lg6P0Pf5);y2H zJ;W#*!q~k_W0_8+nOI@8ik5p*O{V@*`)M8=+9WpuMk5V+L-+B{@?`%NMJ$V?Rux^@ zeUh@?&^^bW6O~@lkK4vi=Jsh~vkjtLsWu$Gq?MC9-C>z>gJn%K{q%$hfhmH>Wa-*}INlcjj1@Nq?}MCU$#7+NR}2_8()<(nIvx zDE9(x_3Zy3&no*F>c!GxWb`$Qeum-MgAtY(BCQfaZdn*7J!CwH(mB{$?A=2q+z3__ z!1Jv-E(lT)4|d6TkO@EKe?;!hnrztJAe%o+WH?(P<3##k z4o}_AGEXcrMaGG|Myvnx2H&e3A!05|HyJnzWZ-C$6|JiihnK!0Qo6?OKQt^G%V`gp z<(p-RT1vUu7(fD~sgKaEY<-m5Mj1d{Wj$CUmt`d561|UisWfn2Fc;D+*MzP152u@z-D#eIhW`(l5^ghb~a?61U6o|Qbd$E}|i`jXL*@d}q^b`pX5xLQY z%57M#=%a_|U%(d5=ZGwyJ?2~8IR+P5KSW65riux>hzYkW;Dm8vx>KHK zcWDQ%z&h#j7_sHB{TyB=`NjR6-Rs1LH~xj)y{(!AD~O_iWqRk7qhiZb#Fq04IbN&O zqgrgawU6XKhvhjj-+*=O&Jt}f%G@$$7W>yHu&kz|%V4*@8asVEvJA>)nf@Eg6=KI( zV#iHyuz%Smmc6BWcZr<_h@Dm(=Wsh1yb;EcB-K6gEW6#%npjg}ki~bty$zsx)&Nm$Hj;-^R^Km{=*E z4O@ekh$*C;XLnFB%Oh0tw%*xoO%^*{WejRP%5FC@{#EZB&|3!mf_nD0o5-?SCa4`= z?2ZsK4x@;_>V0}NNQac#aUHWRax@R=IJe>S{$F(;m*&;%e|#XzQabrp%+CojKRbyz z$4uhjIN2o+6SFQ7vtA))?IHTu{E*{U%RuWY>+7gd?7!znmU&_z_e8H+SPyBza^1x{ zNVYtkWZ{#S%!zvUV2KT!<=6%&lBND0nM*weaqtM4gJZn72`Z#vN61)^dz<5Vi!!CG zVE2P5B4ufiDLP#y{nje$ttRdnYy-%AoF`Tu!&Yu6llixPAXmU!^u#Hg3rNjlx#kqh z6%v0;+pHvwIVFk1jbh|3E$sHT8hH+OgO0IB(qC96c#B(9Yt0>Y7jWwuVhY*aAT6>{ ztUOLyE~qbu?~z{dKEUqd(qeWp{oY#(|NgLmOu5h5Aq6@u%?A4B9lg6bKxW|@YI+Ad z?5(*Re1u&7hR0VG^VqpgtlVuhjs6>6jyY1m{(hAEH+_LiQ#W>Iia7_-gTLvXAtOB5 z`$4b-%LrX9mu}aN{p0qrJo*dE7>Zd5WsMQDZ5Ff56|;33!_h)S*<3={eNKvL_=DXo zV$V@x&!v&n`A}O+`th^WhTX0_|{Qti;Q(! zWF)Bhf&EuZVmU@u?3umUojHwVg^UC{Zn8V?9!nSNiXF;YQ^y_!()krHvU|lSmd!u0 zjF5)&m4fcc?GBEzw^p$3OO{De(Q~4MEg!PKQ7&l7kL*t91c~wu4KiNDh`C;nal^Hg zBj(AtajpxyePywbE91z8GWK6Go8@s?`XtGf7s;K_$sHU%#*XEV6*yPhhzg96gk%24 z0eNE2nbIP?Wj2gj#^E8dIyrKK-4&Zzu9(lVY%I$Fne2O)vwO`tmd#sP#-!ozfK&z6 zO=XWgZ3B=Lw1ZsU)yIymlbaoH8SvJ9EcrZOc|^8pTduJCsH}dX(n${$oMHD4YI+x|+cLRFOOmBu(03d>g~C?roqheJm3GK*JjN(9nmmxqJKGjL zceOs$RO3yDR_i{-EmXf6dwl8Sy+$9{FX1^(6f=Y)H@LIB@C{2>vEB#gXz?0s7abAf zZ>{3+RNA!$OXx7FS);$^_CS_@Yh;(JMXIobV&20|%n?~(r%SXVS<7a=$C;JVy7%|_U} z|6L#Jn|q%Ni;ydKle@78{WXD0YgH%F&ms_cb>)%-B$&gzkIu}C$YcUG? zhH@?yZR^B1j$Xe@q^M+^tXDUVX8#7tTdVhRi@MIv02$b~JYx4fI=NOKnBXR>hX-vf zAd1#1ik2ygwq^+@JNG+F4|(KvL=^6xC|rUloZV@TmqOFl>8}{aQ0Y1>z#fSHwYG9- zQw_^CRKE_rSuc85gLY9Zvq$tUN;-WDdA|=uv!jIf^?_z5GsnVCG<SYZy?PvD4b7OgwQu6hIZd>Fkout|cGK=k@QUnL& zNo|gcebh+HmaXPojQ%Vi$PkTjrvRF~M(n0q8X=P+3Up7GAhCy5nR(VwR)Ibgr)-oW z(Xewe{MSt9Jg2m^l<0k(i95tkT6~)5z26FIzaE=#V`TJqlRE+5HUpT<`FYc{^>|=W z7r@SqqR>-Bq5WhCjgjaDRJ0yrnztx;oG5szD7XhbKyK5D?s9HhQdy?I!qO;{qHiIhZ_SH2Ud<7fd6cpdrFqjjh=dr?vsTfwm~$M< zN%X9`BfIUSnUZAUjT1$)lL2{;OuU&I$Dj5Z%M|k7gsl#>*e2c6-BqSFS81PV zEgZXEr^TCepPVByV4Retn%xWzuO7yow?i~CK{T>OG%{;B$MgFK%ZlAB$B6YDjb*p1 zXl#sVY{5J1-^xR{yW#jn_J|Q}+7ig_TnhOBjpsoLAE5U)ibkIljaGkmtH!q}v{A)6 zLPrtHJ1K&F*NGypSjFz0hWbNc8uXl0Mw5ySb-G$DEYmJ`Srrbw&5?(|4Qok>(xJ z9)9GuMIY*(F6!U#3rEWm_4ml7xm&P&nI`?4D*c(zj^nw>HRMvo7JZ4;MY?|r8+TVj zh}clp6wYWwHA}y@=;Btq7I8$@r4h2guD-_MsW`L(Bb=KUlb>{%$2krjBgSNQVfP+N zLG+Y!PV5}fWf;)OPdxhs5__StPC7(8BHrv5GAt*&QRR=L%~15F1q$ z(z?B6z$lx}(ORX?i{jb+K!&>G(mEkxd}f&rQl*#znP88I@s)}3ZK3o+yvtP}7kf@@ zt9NhCeuX42wPAO)Y*F;4lStMhAwX&&Hg!&Bi7hK7dLy+j(uX`>{fOO1#F|`}usg!c za?M(nO)~VFy?E$oUC91PK1TX$k?z;;oY>78d2Dfx?ZJ>F<7Zi$4rJ5CBE7p?ldO;` zWCAIW8+8|Q*@nB*Or7&L%77RkBS+L5>|bMIxgw8c=F2P#WDTlnsVpu@CZK>CiMNa; zUMseSkC25~)>L-4urjnatP$hc@*fUJrP6J>r?H7@w&_EAWJ&f}()uZK74=g5g*(*m zBi+Z`A|{hd(>~Jsn7o5&)kk{w99MVF^ukG&L1KYhWc$Iqg8f~^;O`Z&yZ!~1DPmy0 zGDz7~v47lRmJfEZjHqB4@D0lmtPK`J?sM#sN@3fvR!kQYF;W(sZpYoY@s7(->nG#> z7CO2e&mIfbaN;rsgnih$+?`$LndtR zp6rg0!hLtMJ516a_vCENj|}wD4&5(oiL7YT<+h`@+*cfxQPNHfDof_(5O2;fOJq8^ z?9>N7pXV&~5JO9sVWCWhg?bBzAC-w9M%p-U0sEf|HPTx1jrugh^06Hk(M43XWDjjo(%mndt9jOV3d`X|Nq zs%3mHkjk~nBwQw@UnZu0L^?P?M$#Q`b0uEcrMtPT=)s*>c8v>-qO4u|(D7qrrk)ba z-U%`cWr{LqwhgyKI6OiOeTx`+su;Ro06pBL`%K%_HWz)*@e9PTU1inb-HrWsh+*IR zmEAGPETf89wtUR8Oze6DW$o6-rWA-FKM-4LmC^p3teNZ*IoXa|EURV4triPU7|#AK zl246Ty81}38eKi6v9u%aPxMhXEuKbt{S)0I<*1nCQR)ALwp)EM$q`RXQp%NPjf-Qq zugqQ{ypS|Z6PwIE&*9T#yqiKTpWy!Bh}b|;5(i(9;282P(FeLO5ewWS7Fg}V(VSM& z!V-OCK!I$WMzxvXFb+?c%QEFQ%O#?a)2O}#EC-X>>TgTfgUqh)<|W}J0(xHVy(x& z?nB6I2&Oto6604(OgSK~iko8jkHJy6Plb3PF9? z-**p7^9L-er?5(KEMa%cJsR|x zJ|Mt#9J_mqrG|+GuaQ=1mbo}e6vlCuC|^ z1TZb&fT?o_^+|r}Pq5>`TCf=ugGzueWf-o2{WIp%Bs-+ z<>IUv@Oer&K|Uy99_q$ZXh1a1B<|Ba2{L%9i0pYFVG*vf@F{Z)VWrd!F>>j z)(-`dAQ7a2l^`D!g1cZi2G((4GMEP{LDe((a_o8hxB@z&>AgTO2nW$18Egmpz*%q^ zTnDyToOA~pcq^M9Wj-8f!Gc-{a^at9CaMnYOoI+ z1}DH-;Ov2NKqN>5+29yB18RZZ9S4ttUSK#F2Nr=!@Cby%#$!P;$N=h?vDIKZI1EmJ zvz};#%lOgP3#|uAKrOfn47mN$K^G7Y)`HET7#skVpkog-8VCo`AQ@zUv*0qg4(@}# zJ<(Vo6eNN)kPY&C=AcmgI0*D!C=B!hlR-RCAJ|(2)`HET7#skV;1O`_jlw}JNCwNm zYOoy~1}DIMV2g=55JZBhpb(q^wT}4jE*MU0j^HkDdtX!@Tn5*{ePHX0G$0Y=gF;XO z4uWIg45$UY`XL)I4=e)3-~h1gkDdg5K_CbPg`fl+1ht?M-0iPU74$J2oCjCHE$|394n?6L8DxMB;4nA~E`#gfK8Os)m4SRv2ueULP^Ttz0lh#x*bIun z0Z<95zb2mjpyk3cjg*EMK?yhr?gD){v;&L-^FT2; z0Iq;rz;Oh$19*Y{AQ-F$y*J>$ec&)S0c=O2V9*Wp1)(64N-Lo%EAg`t+y(xlP!^aB z;=w$y2rLI{!Fliqc!i=o5DcP0EZ6|HgA?E^xD2j?`yen3JqQv(3AhUkqj7zsae!tQ z{OASz!E$f_RDwq!_<5)bhz7AB8DxNE;4HWdu7kjEToZ@{Q$ZTY1}i}!9XYB`%DMak zqJsM%bS$ERM34;oqv4DN=r_;DYEjz_^D8yp13sOSs5bJFk^Q6`uSHiKet091l1a0NIYf@go#Of~g=490bRJVKNE^y?{R$4#t6auoi3v z#oz$A0&amvz;OyH0%~7|N`T?7Ko!7pZ~#<-DscXl93;e#TflKD`UNC|44}S`z8ahW zXTf!FA2?4#|A0^s2@*jX$OieK5Znc7ve3aeFd4*yd7uiM2UozY9Q^kPIL<&*fn<;Y zR)Y;-JGc&yKt(_>NCp{T8CVTAfbHNgI04Rr%iubQoCVzhX&@UM1jj%vxC;!k z(G_4g7zZYUVsKzK`n?iAs=y=Qn26Q@{Xsa02C*O+WPlA|AGi-}lb{D+Do6xrU?s>0 zg;f6)jH?kp?*etWunxL_;b0t?4Az3ppcr_)hGIc52nW$17G!{BU^UnPt^?a-bOeY5 zi69MRgM3g3O2ENnG;S?^G=jT8ooL(z^aB215m*k^g3X``oCl9U$GNBwSPeFSv*0qY zeI2R@`hrjp2@=6Ua17i9`aF~a{O8%=YRPy)f5kg+KH`H&uoC2h5^xYSg1eM{Lhl+j zZvmna=n@bPqQPpg0qg@Oz**2O11$mqL1>1dpCKDR@fH}y@_6J&#x;23BGcY(eL>H;Q%d0;tM3yQ%3PzkC) z$1KzlM1xq643>e_ z$7~b_yg+{t4PrquSO!*u4PZOi2kvKM-U?lU3V^8~5oCjvARinA$3T~*C>X?pd0;tM z3yQ%3Pzlb1D`fl@*R(nZ<$&$rI=ByPm!UgAAczE0K_WN^j)614kc*-~FEAWT2Jv7y zSPP250Z<95z5+ycRGqnW|7w+%fEtMOwy*ar@S6QJ8)p$i}ogi_77`g1uORv;QU z44mIV6c7rgf<%x8vOzv51hwEUQ0I9M2jjqG5DylCV&AQmKp zjFmXRd^LV-2m8QbZ~~kK*TH>Yn}>>lZXgk)ft4U1oB_3<5!?m(Dl{JG1^mHquo)DC z1FK5Iy5sv_dY&uraR_xfi`YZy1to&%4J8t3=UKd*7hHbzto|1pV?z1#^LmcaIG8S8K+-^J zcTs;9e+NG7qCSv9E+XfQi+XQLQNOn17qa>0BHlF%A=3}YErAC8fcU{QQ;85-1y9QR z0g;dWfMgZw*IoQF&L;O-)YYvP9#d;k*Ccwo7AMR3&!PRbNa|0Qln5Y89io}*5N%u? zq79~n@IbwGDiK5%>rnY2_~fuYl-w>MR_rC+59P1Aq`yRY%HzrX3wEF;Dh>XyNnD1=zHZF zM5cPU2GfvwTzeqRSFRx1R*x)((09r;lI5(%_bdCsC!KOx<0vi}(( zkwz+!L~s0z!}}8F&~7+s*UzZJ^`CJu0pxx~e-357d<9tyrd3yvMGzgjf{FywRpkny zP7M$V^g;tX6KP?C{s9uSy9&?2H1aAu18FW?lyVi>ZojG@HztZGxbU%_!%5v+hgP z>X&{4ot;2KZXm`inhQZGH{f5a{1fTB8z?$}9^XL2%%Wj85o-|5zX@F!Ona3pkbb&} zupsJw3t|XOzon0&X}6HW_FH-o+U+9z>4Ng`YS9Bw)WjBRUhlP7d*-Va{Y8}1{x-5q zqKUV0_~GC=wCXml(Vq_8*2kiB(;aKEL+&8XYoIg|NlgDqmXH@>5!GVFZ{;ZJNje5>7B`pzOi;YZ}m4sE%lL~Q|H1zC0 zvka#^Wa$>(?@5V)fmm&Jk_r{l(ckdIR_#wc=_WK_TYWRApQcC{$1Er%}8sVFY5IeB_m zf3`(Ifo-`s4!1^m)~SOX|ExLW)VX}+13k(NEBoH$^c?K6y^T{pHDZpmaT*G{d_#!< z+H2$VJcfhYHco0d7-VY|3zfixs6AS%Se!7-Se$$@ zuzY7h@N8 zD$gM_$O*2YG|LHL!L(k95c)=m1bVE(X3>ClP6NrW9ZE@V=hPd;zSj=HN%TcKCw!rA z4*jN_7ulX4}}H!cWEqQ@>y15814Xh3`T`qNA$0_eT=PR}CYAqc8y zkHT)Xck)Ks_8s7l2@Qfqbbxar?zV65<+1;Aa`|vgMzZ z8taq?YCWsmzPr;Ti!q>ldS9piny6{N(=!zMtW!7DwKJbZv&B7&-1DDBa|Y07&m#9h zbWMrD)V)7)55xzMA%e=6_IK*q9<~1e`uYy&D604E+1Z&Tl$|65QXwROR1HZ8Y0?cP z0Ro|yfTWQEBqSsd5J3P~BF1)sMjRC&q5Ll3H!+_;r;};Utr$BB3eW*jG2iy^YazAY|^}9RntQ45f5uf8E(%cc?tc zXfF^7e;Fd=AKU|DDX0hd^d1;X?eOKsAf995C=-|`dceouOvLwuWdddP6j3baB$GZt zLPvT+?3E00Hbp0+t#ha#*%?cD$<8{oH5q;)=_~N`Wik{Sq=-?Qk^&+*1;h(X#Lyll zb~Eu06S35)7hGY==!F`Mr*)hp(8XTpZ&=j!cJ`o_y`em9Uoz2PAczb~8OT*P5X1{ipzt6N z#qEI@eK`~{$eBnF4?^9S4sznlj0Qn*I}n1nI0%Z-6g(J7Tk1a;`Z2Ts3C$l2tuuq6 ze}s|G5a`EI*CEh|r|Fy|&>keTdx*34@}ZDsQuI*JSyaeLHf)(v}(z7Y$H=gz|?&YwvK;0C$;3-XlZ<%;F@04v!Gs?oUoK zsZ}~^pk+F2#-*bMvS}3)E1CEv-TAPZGlpu71XFV)nBF6yg2Bhc6ejjE(Uz_;ag~XO zM}cTZ!$*M_HVVW`OvKSAOdMgN&f_2wDDiO+36F!A#sqo-6Pua1&O|l^j|LGm8btbN zXKQ;b_E+oxSJ@PrkEu#xmmKKeR>&4<%yiY|aoTgogDO}DN<1pHM2RAMM} zERuGVITm*9sA4QsaL3{+>`%u*GmiR?Llp5eXPg*6pNxYnfgIx@%b<>&WYVPZBG4_I zWYhWa@RCEJh3Lx-3elId3sF^(w7d|?nDh%F#y+nIS8b_#5w2or4kzvC!y=KhIsr)> zeohu7y6^<#jBdnN8Kf2?$)v8FWYMf*k>xwZaF#02B zY)f?~;wpwxkWlhOG~^2t(Xz3$hxs_VJrP>*6j6$HexwxQ(ozJUK^saT&ZP6;k!^4p zca<`T)5~C;L-WdzGv@6NAwbR#$}kS1sQV;nN7JlH&R)p**d#G%{3k=D9i?&-OLHcp z9Jm*A5>JkDXI~U`a5-cdw4fY?%cR5QC_nbyQ_zfARk2f?s~xtus#7zZOKL!A%(KpC zZJAX!o^^g#8(PPf;MR|(U&3?$5(F5(6f+cBe<20Jvw03>{_w%4;J>~MR;;y zc1}6-a*HH+vC3{2@3D-2yB0ND=4>4Fb}hCuVT*1@iju|=nAJ-khpfa!9qI1bTgWMT;^<}j&{bbLO)2DTK!1|cfXy$k!H<9@le2YD9Ul)9 z?3G-b&Dk`coNa?=dx#UTS8{nA?MtC6OpigMvBz`;nSkArOUZ{Cu0R$(bv?w`ExF1t z7yp0fY}0VArx?2>mvy`!%;;dJ8jWPliEFdw60l2h)o>pDvcic?bv=(<(B7_1j1N7s z(%B@~r@n_6&Fji#c73W`=?o!#rPDiTwx<%>*p)>jZCmMV9vtcK;R9{#+P81=ryDDs zq1`rl%F(uU&9X9ocQ?t&?v&uMudI;Txx$Qb#SnUj`IT}YDy_B8< zqVeB%&PKM;6#f!ee!+;@wvs(V8DRCE4Z+fhWc=vr$S>>E4i?vDf5`A?@VyP`?n}y2sD8fR!je%Hz6JrnKaYLHD$z*A&D z%ufsN)$y`zq9@m2b_k=-;T6d~ThlnFe8uUn&wYrs zeEOq-j%;$)4i?vDc{9;KuHo{}Lv;2PXK2trtnZRzNV@v(IC8Fah9r+`<{`#lbWPyr z1mAN&%;WuV)>Y~rQIeO9l!-QU>EoxB*5XL#C7e>Zb3+@tq8UwV*E$;ok8a^1#&~pz zkG8-+oH;{nN9ho};D+V94%+cJ+HyPdIKFzdC8exG(O&hGqb*%U^P!pRoFVOeaJ=O< zM_anY(*(~&>yw=Nc<-EyN!AhGGjjCTMn~4 z&Z`azzTc2ObbkfvKwio!%EC?)z8l`PwB&JG!O&Wc7{5Ywt&ToWDT$QoO z`5w+Js!nZo{%W(et2+F;^IsiHrNcWgXleIFr+3wzH=Q+A8g{OZca_ghXA9lwiu8L- zeUFeYj_eEpWf*aBv9xXv!ib`;_TYSDB|m}ic^79>aTNP5GEJZ{?>aw4l+k;k)s71G zBD`3t;Hx+~yB8{0&Fuq;oyR_q8C0?lF=tZcKFG4@Jd@evzaJ-G-F~d&O#}Bk8$w*N zAH~h03MBOMeyrcl?8m7}4*j_w3ry^dq7T3>k_wPe{sG9h9>4-Ln!Y*!x3N{V4muC0 zi06~T&X)GJ*ungHSm;N*hfty@^F3%q(_&8WyyHFO6+<`p3J)FL7e(mLNgU1LB%b!X z4_N|Tdmow^g0U57TCy0UL?m@`O$l{mBW=0Y3-XmI^q* zlfBQ8M>{&pSJ?lZ#Z^>Q*R#&ab#S@oB1#iSmyy)LSamIg%IVfctX?92a5@oQ#~-js zz@yS1ut~rn?ho*gMd~FKB%5M6!O6@e#DmTGx=ZjENyjd6F7$wf*ya6*8fZ(CenfOJ zRQV$UX-C(7L~URF5w+d)vgo`im!XU;)n%CCgz_?!Gw3ptnH2mJ_6$Kkant-H4uod? zgnV+S@+X{0q3JF{j%@v}Ai<#s5=y=T?YURP4&%)$(2k+=SKzZ9`Cmm6OQ~0pQ5=3+ zQe^uklju#jqN`V7+Tt2aGpYYIh_h(UH3Xeahp)jVl5SrUxrhFYq%EcVEb4jA&(Oqk zL?&bD^3TG%|8?O#<+>=;RKCifO1{E|jT4-P|KdDt%dWck3o02!iul#J1YsTi6;9*n z!LP7Lpy->zaLi3%xcnw$S#;_qa*C!0Na+4egdB6r8BQ&40gVPiEVFJwKbGF)B#tiL z60!K-hFJo2y$upWpOZ{l#|d2ChDtU$enXN&iJY{pD*VlvYlFqv-$j!ce;~=E?wn-N z^grMY$26Q^V*CTA+jyGp_!E|ql=vq?OZXE3P52W5VRSR!mOccJ_PG5gGHpkV|H2j8 z<1ffEXci}#^v+)*pv!!P^N%~o49^Ykpt*7SJ?9RD@$}9e=W;&hP5m1Va1`@5bfc+~ zukgJ6ZG{GcX6n+`!3?r?%~u7^WZ&bWzeL1(84@;Pvm`` zlWa2n5qWq22R$4|aMSq`=NSJ$7)6)=fgz5^@8b%c9H^n)@$$A6o8T5yHiPQSO8>%lr+T zs4VMl@PW#*5?n+sTW4V4FZ;^ik{dQdyjx%c7fU646-N~|=-~+kCpfIOK@(3XR9t0J zrV5oTTEIy*?NMQuL$_5Uf=?TV5VjRO_B$}lz}ldj&7 z#!-nkbmOUluM+Ug1dec$?Ss7VG}#BT92(B`dIuOCY9Gy06crCk<1hX}-u^}yO%5>n*gw8t zUi}nc46~p6L0kpU@IWKQ9`^1%Dhk4{$sP_gy4y#)u9^kmsvLHZW!O9KF_mrv8NEc7 zGSFZnMf-RO;&~<5=%=0YLoA)SKw&Y4PQD?=W7@}yAiW-eU-X?Ef+9Z!M+ZXS@hN09 z;}IjAk{TF2?LCpviw%sCTF+%rzuCYTt+g;w0F7;EB-@`tU7W?;fheBvwbccc4`cT-$RX_TA&E5k&$O_aS41QqZNJL$QYot zU>+rDM7_cg+(NiOOwDL_n9;-D&vn%@+!$fs1&6L2dums>%-6$>e)e6cXk?UQ&ja|i zDRMm6*chsnb0eWD0;p{hqnoyi^<6dNq_s^@GkM(JH=7!9)TpV^#XcGZgnbHaYie|| zA4K)wYMv@f6-Y}SGWuwF+}NEP!|T0=5N{r0daRj|?8pBS!=Ibjk#Xzagw>j6#xU)U zyHC|^ZgkZ)nO(=93Y!~)wL9E4q9M=Y(mooMDylfO1^QpuH|T%ptE06m>_ls64Ak5lT^y7?0KV87dX$B11G+zP5>* z@u^3QmQ+6itvc6zxh%pMXy*XY0rRwYcV!f|LHlxDiozdjgI?^l6l!RVK#GYplC({t zrn&u=L}DPYP_*W6kr+UcXsW(ZDCr&1uUPBTD5JZI`tyr6`qZiCCI5kK1)KGYg3sB} zM!es3Y$^D|?}2hF1^`M(H$1V zi%=6F*u?@-qWuZzVT$bIK@^z?wQ{b#2|z(7U>!trs0iGD6hd{poy?5v-RC!V7?Oft8jIQIrxo)XfO6c~Mk1BSarCTv5hK z5BmXENjP)_o3LNoG+GNi+iKd!>eEMJ3n_J$0^&DQ*zMiH558-<8izuDTQ4}2zgEJJxPeA_2X3YeZdo!V$mt9Vdko0r8FRT+mX$ zUJ@PvG$XnT7%EstV6LKE97>@{hQEIIfTGkEG`^%TJQ*z#b&xtHqeYe-WP|V&Bf#+% zU|+oEmTdUrCuA0})+@KElC`G&&hJPIt$u&tM<7+9rO*6JQF;hk{rE2mO@U_g9lT>I zDE%;Cf`s<~ACrn5|E2{{RJ+Mk@BKI44W&g0Kp*OcYPKmI3o1xR)!C-u^QLGqMCjdY z=zkY4uTuCCFF!h%g1$KX9^OTjqE7%nl5o*Kc%NRvzX0(SoUl#Ybe~UQ!$!el90beufBkZm4G;S5Ff)#Ik742@ZYXBWf+Dfe+*o^ zJ~sR>;6r{?(FZkM>PLH!Cho;Q26r(P4E|q1^JBw-5dYKglmDkIQkhzxj8ynZ^QTrw z6ZpTii@AF6F<|TZ*ierf@cj#8-SObm%KX^yT9_|AnQ8=eN>a)jieIi0qUr_0FMUE* z-!!T&YvubUWR1wy-v|gj3FxX5Z>10if%3y){o0U5^)-Sz`u+(e+=|4hzrf36g8q_ebJPYEV7mF{6_R3%?J)% z%B1w7cq>y1O(OH(GJvw z*2=ewY16Zs%|wryyY}JZG?Hz`2pjy^@00R+wz#g5^Vn+G)}XZmF&D2BTq8}{&78Z` zVYrpc57+HMp)^GC{i2!@|8J_LbiP_Z{J*O%S(xu1)$GiX2r)bVM@A4C=@;%9f#MNC z)5u^->u&@#(UhoaO4Y-Rhpd5Y;%grc4CmexJYxh%t2G^FP@HvsQAsst>0Mkx{3vzC zlxlYAJuF$t_=VN%N+w#eoI8GpNMSIly#Pn<7Gd%0GONr$)BmGu2!we5uM3xu6y~*kg=}DGd{zPxc@OVmm zFdWk@SxI(l$ndz=l$A}uzaYtvO?hlU9E5evYi}h2w@sHUJuewD*F52^?;;i1MhmE+v(a zePMd?R`_2 z8u=mBWc=O#E?HuF1Z1X9lyJPqKo1+xrkbq4LpH7`60%@d{d+5=eJrOFl@ti^U_^Yp zl_HO(D9hkq0BGWt_4DW#WfN9F_N-f$KhA^*@Ufys_#O>cb9*Z}(vAt-SaT{M#GYP! zP^I}MgsdRPfp1W;WI4H(th7%dWINndiZ_PMk4+ggu@Sy?wS{?&n@6c7D=q5*8D}B_ z@>a4ug?+X|nC3S0%y6P&!MhNvm3Gqw@-J?%s>fq3V(voquQ#K zqOiZ`sHk3wryv_|mtOx{h+hWTlo#9?dKO|}$&|tPop~Ya%frHK3lQ8CuepURtKJkR zA;Ypjd|>AhD1Ml92rp&$b~>Z9&jVbvm3oSgGAY`G$e?6m)KHtUr>10ll=Q)tEWhaI z46B+T>te}rGlDX$>V>SoB}>W)hOCZR6FxH(&--23_+~jaWr?Znqm+3}5Jd&MA^X8B zk&n{HV~7-$zLaZIK6BfZxS9`zn3$fQXH$w?87hN4I&4wcjB{gc${M%R>eK4v@iyfH zx6_Fp!)Ibn`$C)2-YqNj80Tf#<&bUoKV^M#LW`_rl8=%*Bg51~q`e~ALs+Ux211V+ z3IFj`?CJ>Eue*$p+EAizAoDjlU#0pCcpEa;(DJP|1NKY~F2PO3H6Qz89J>74l&rGo z5>HvF$JAL;lmeM+(($b}A&o04gDlD&4F4;>{J`hL4UoAOiM~owk3TRuBBC2+7+_XZrM1`UZB)3#cW{KZQcLO zlSe1nl;gU~XZ6`&^)#Cj?vl+=+|vQVib&c!)24KDXIQ=dY_n`iqFYwI{vL&FvL*AF z(8m?M37I)-;U3H1xFA1V4f^L0)+gU|jNGEaYq)ULrk_&%2IloNMs5vh>8FSrn7H8k z*Wr0K#Z|k0O7;6!-REt}PtpwcxUrs9nEp3pJYNy&#SgbuZ+?bjF`+;{d;n|llE=c);$XkSN*mDF*R5$qVW(x!Z8 zql$FHKRjkN%-xmex$MQ^0A%$jW26zFX04`5n5spqY1BxhPslX%S*X-;n{y|UAKd51 zEm=*Wk7M(+20HbHoA9>*U45#a8*y|F~i+&RY9+(ki6kpF-qiW*)3G#XBPM zV^hL>Peay7bOL!*+4y+j0?8 zb3jq8{`hqbrri-#-<`MLMGM%p2s+P+iqP)>w&B?Q9lp(X+xVas9@Rs;=>as=)IAiO zi&-Uok4>pvn-=8aj4Ss8&bT3~6@Ea45bGa(C}sinqI?4!N*8jC`d-&Qyo-xd4d?;v z)T2Mpc_`cL^mi`$^|&8xN*Nu>LxImGU%*8zbI68Z)Vn@Bqx}36rRE`)X4k0zX?W5N zo8np)hA5h5>DE-2LpGQ0b8MkEX+N8dxJh5JS@BJ*kj&Gl5aq1L;sQS*rK`#iy7gEc zzlXT9x5wScb@CAMpP8%=WG`{p0f|=umzb>`q7=C%AJN#;0#x@-AViEH878~m5ja215GnNo# zVx9>_abm*g*jSYQ(J&SLk6S?RYQba|tY0H5zaK7qrAh{1xrAQ=ZkBLXxXL$H_)uRC zr^<1tk9WiA6Qp{BCMpi#cZ`GkA%G46)samobUdU_feNSa@sO?s45dRwxcT@V0Jb%k z(S~Bi@{Idn3N3)Cy0$lMVHe-`Q2PrDt1=mFb(GMIu3VK;IJ z+pV1-ZVq0QR){-jW;zwJ?D3JRGMb7Dag)f%I)IC#8V5Fgx~JtE5( ztI@Y`qWg|kmD99nytu<$%21UjC~cAvsAa0k(;R1jdNGqyi;&IQY*jfaD7_>{RhH7s zay)fgTZBlS8AJP_;ux2!DycQ85Y?jZnV>4`IN|_3y-Zb{(lQ^goAg^*Mky2E_g_$h zDGgcagC?uWWhs5MoGKu7yg5x(t~#i2k`bUittwSgvHvqFzF3CC(-#2tk??Da4Va_i zfd(tsM$xSaDCjCM&86NUz*f@H&(ErSX3vgB%vF_W3FlkzfCX;>+UOA14$yF+s`h@4 zMwOrxCC{t4dkaVF0Uwp{yaj_^Q1Nx0Lg7cir)B*(i1u#LvW=li~*sM7q&Quw8S<3xK=&l7^ zE@9jBK_jU}`bH+py}`bb(C>c0c7!=-2x zpjlTh0-{bijD>*bB+Of(Dx+j@AFfoDBa(e_m5N(b#xJ$-jJyaBhgz;vm8nv+9?&fA zr1ji2M8V#CRmC^3hz0}tT&jNbnyPe_u;vDH5TiN(S4j2%;71b9*{CXCNjQ2F2CH;C zXET2TtcW>xiyQWQovTK$BLMG7IC!h76q0W-Dh#MxI%r?1D)*&4;SH{3F-nfUr79z2 z`!|2b-6GEdnk~|>iffcRh}vqm>~;O#b&rD=09#6@I{{-TV+x*6T?H(&kue1$a@0Om zSwyycyB~#3F*NnpgEVRix^C7Xm3ISB*CzvFHN&tRFjK;>07Ip}JAnS0^k;mC+mFWt+I0a9Gqo5Nip7S-F21i{0n^G~Lnsb5*SvmvMK|$%APIBc!8e*#_nQ366C9DLD z5-|Kbz%AxHZr%~Z70dxtN1o% z;r2@lc6h)GD8asA!SH`E3?&-}SYN{4fLMJ$jaDfD?20w})2N88wd|NTm{xb!qVrFq z1n4K(cP;iq!1|K?8gLbbKZgj*!fE;(M5s5mlMO z5o-GPfSD3@ZNe1>;}E<8$v*T7Fm(h}w=|(q&tk2T+tjXnu2IDtY=zplv@0DP5>IJk zS3*^RRl>i*LRY_tH+Wh|Pqh;4n8SqA+JJ_HL4Yw5_5m!AunKUAgei%3^lxF7259O& z1DGt?V}RbG4)kvyb(yIX+EeIr2zGr3yK>nsg3_Psf&hh)VyvX(uO!hH zSn0>Rah2HSp^HWJuq!XCRQVhR{;_0wz~c9Mv7>FMcE<(4+ET1v@5A&3SgEyAsc;@N z_odmf1z^f?5AcSK7R*Cmy*j|Id@MD045ahWR09UlUAB075FTVx+ViOU=Z4so?iAic z#XDKg<4$&bIHf+1GVQ<%P|IxefIW48obwdw*%=J)bM~|FVkIL{ZfLABtr1qa< zMNX7{^931?`3!z<~lf zJ_4+5qv;D!ucu15E3us;XCgv0>5@{OJA}K}0dXwIAsj5F$`=uW-y}OWttVf{dp+O3 zh^1Sbay!39v=AYc0M55W>c3MdbRkS$d4i)BDlyaSc%MwbHGrGRwg|p^K1mB$vEwW| zHX2Mhz6Z>;QRPC!*<-dHt7V}%bT&O;O|NG-FsAf|fH5?mVH)6P0;-{NsBjTlHg+D( zL#oHkv*Wv#h1S!6p;Bw@JUY+Pn)B^g=d;w21b7X*l*Pz6VktLV+G1|jrIflDn*V~r zdKQ#Ea+zIuL&7@C?aFis=K(I0uo2m@3>3Ok0r4}$Z1$JM_FsX?OR~!W7YgWTw$iSA zrO61C3On{UzDr@(Y7NgV!bNMqv8Em1AezYvKd-YZ4+&QFSx?4NM7!!$9-6}DoCW<~ zvny{&#UroLbXI(Mvt9Yy^ti>2J%F$|0$5urp4mb-Sn;E`xVDA#9^fJgUwGTD43qFj zK#XlJ>Cb>4ir~X{ykmF2x$!8kgv<{wh(3nwVQKL@;B{Ht?|0d;y%c^P+HJ?d3PVR% zz!0-_Mjo&$ze*j2Gp!$!rn z0tI*raDYaYgzn|2tMR@Jw7Rk`Jz&k9pms{l0zXZ8qo&jhYN+Af&6;{5U_A*_0r55? zv)LA$3YZ|-w=DJupfn5r7SMGn+0l&LRhpWi8fGF9QdB6Vu0%+wZc3j7I8VA(@S2es zMm<2BH*)DJ0lhG4Q98#vVVV*mv3@dKQ%*?3wT(60lts`d0P9Hj4d7M*$!C?JVW%%N zF5@ksSP2_6)zJL~+Yqo^!exM_xAy_@awylv7nbfhK)ig(!Tkxi)C_1IPHXU9D=Ys2 zxIn_Eo4b_twSZ2^Rs!NpR@VI$&};{v7MgNgu#WElZKmVzTe=gLu9=Iu)e9W zt+l(=-UBo}YxrT0r(`Cx0r74r=l3q4S^irV+u{)o=O03$FQ6qodNCkb%3U>)}XpU2&td*IwCO-Yr?X924uoFA=W(JTD#0*nz*y^gP0tU!MVj@9_h z))hve4m8?JdfM4h!^jmjYddM!`3ZOo@I46^b=LTGS}xVwfDHvyPj;rlHE{Y9s1{Vb z22$@XZWssHS+bJ>+eo+paEyd?x@wrKgjpvGmH=We#m*L5?0bOWlD!0&C1H=pG(49Q zx|0E&63({ZBEVG1e&>ejBT1C97I803(v(2zvldxx0<0^bx+jS$SlXbQh8x#fmOcX5 zTEd}#@6xSxVEuY%IAjqD?Eu3h9Av>Vw}MJNX!<&=jGphUDOc^Ze=XXtw4a81ys&={ zu#51jYW?X3Gj7VHBUDij=J0VfAbuNTK_c#ZkwdJemgOTbX=SV+g# z!|O^=Ia2xn@LdUa7jgK)=1ahR5-y*hDQ`;Hv)JWHA7;SdCuVw#3Kg^;cR{F!VUpg3>3hI_qWuK>0Y&=D|0Q=YI( zuZw4Cc;``QEO?rOTDu81o7p@83$icZN0NL-!wvS(MvR&{n(~_}?bYWrYzc*GDPXdM z`v9L5AvhAB*OVHja+mpBgF?B#1+xHaNp?KocQW+eFKXDAaw!~h7GmI;@orwCVU`gt zS}xV_2vWe~fb#@&3|odd(n|*S%gY)T!9pXgLd+9fDQnhf${NXbd_}{licoj}_?v{c z)?%&`P<5=M>6=l#A8q80cxyAv&jTh(7`TaNbY|6{O>~15+kpy`(m{Z^0y_2rmg8CY zW^7Mlunu9(ep@tUwbc9>u$zRDucNvoj01dB!V%1R@@;CNq+-+Hf>|&(L1=7 zi?;zz227N22cS*DHvt<^S|z$DP_Q7?D?8}?HstE{7FGpPF9r~^Dm%&r>?Yw>Kpbx| z`xfA%65ap|k+A05V%lYe=73?6?E#n|;ZuMG5?%wutjfCaJGpKJ>;s4e<975~zjrje zL{F)2VC;_DtzoNkXeUPYZmM_#Bm3inn$pZ$N^cz3aGoZNdYwQp(nuY1nvCsSo2U7{ z#$vtG86NloR#@;pV7X+=KIiF_6>RU5b35*)m%$VWM(uZ&Zor|M^M!Q$>=$m)EtB#) z$7=$%S1+EETH2Rxt->!Qwa`uJcLCAgIk@1jd9@&d%LR;*aD@er07gpoZ@?`QuK&gj z`+Vz$e*q4c3TfxL{)OLp0&+cS7Woe#md+eP>UZvZXIOB%1us~z?)MswK!w>b3%&xF zEm`e?JKqj~5t1DXh=n-k_ADSK1%?$Dc|jo9cP)6%f`3@B?hl-?FdKHs?P0=?+{=ZB zV!&w<{$j!W%RF4Af(55oaHa*Hv*02NuC(A<39C?%KwYKVp8>H|u+3x`F%Tj*xGqV@oMrPMFJYEw;-|`EOHO|cOF`(LAj)hO!>O7}a zp#xrOOE;>}|3hPR6r3r&8Q?Ji9lrzS*vZ(1DRmgWIDHp1(-U;8C52{@1!n=am+XGP z))HQ|6#fCkoQn(^+Y@yq+}u(0{?E>$DP*@)k)vL}gRVRy9jyYaBjE$3N+-bCl6?;_n7ZtS!na*@o~Bv%Hee%Kvr1WMDYT!Z_d(&2Ec>X{%MAkn>kC$WxR+Fn164yRb_8rgYxlusJm59~)!^P#u@4@H z_tx>kfshse;z0o`7F)2~f-?Z8N`=1xv6yAukUnnM0We;&Wq@-8bld~P+1dVmsDyic zb!ENOsOYC-63jS&z78~8lHJmDj4|Q&S-@fm?*QgX_;`OEOQ4en&>H#u>DU1jVX{Td zG^rOsO%z%Vb%3teaoTkNx$6UUoYS$f9tYS&!r_3s1*FagaJOA7>DLD7{GtylzYADb z!p{J)NM`mtAWp{^-UX~d;fD~FZ7_u%LR2w>b)1bbr6&SPson*!fn-NoaEb+&S#XC1 zKXXI%>R?)M$OzGfxE+OCu!9?_!-mjHwOVRU$V#3fRiOm8L8t~lUc`afVJ?%_CuV8+#jVYEhW~Qjn>ikyL^P6 z(PA`p{0RBCw5Zl5^{_=nm{c1#rAGnUXvZ;(6d*htgEu_^5D$>paq4JVa27T0X7mC} zuh`8x<^Vc08ubx|!VB3tKh|PT%K-6=jNw)n8>m_2Q5T8-?zPzK7W;=_!_OkV932lr zgsWgcY#2V4q#5)DkU>&@7chWMo`HOf&JWwTB%^V@e-tGF<0aLK08Nii0(Ow>9zfIO zA;3V%ehFw6sdvhC>vji}e$~`mS!ZCHNb7P-Zw6p<$!@UNZ5DgRV!sA7Jv^{j zJ&(JNC{vR>I{yXAWHCMSXw+ve=E4!w0AyxyN-ed;d34NFlNqRc^T;^uG8DCZ!Lq#K zw$vT@ZhuZdGmzH#RCx^6Zbt8C=?wuii!oKO#T=KVy2eu7V6pF8?5BcVbX;1QrMU?b zk7~JTA1$D5K>Z1eon^7FSnNiN{lH?60ydMabsNy2TSpPZ zSiTjBI*JE0B-KBtLxJNDB)0XbnLRVC;r5Zlo9YPC0GlWPtYm1{rXmNdz#iUa) zT0x&-F>@rd+0E$N0h`Le&sgl&7W=Q8wK?bl`)gY0j-)l9ImVL!&C2Kxh-dOV$xL_a z+Mc09Cty9_(pzomePrn!lX_<@y-Sv!PmwEcTL49!gug~$%(jgMd`#v$#nO99>dggX z#DeZ@*x@IYT#TG@&dBuE)EfxTFqCQ_@w0^dnBEE!H&lQw{ zRL@tO2;->z~+G8 z3K*)b#%~Ac zI88|P;0-QCJsi+mvXK@W2Z$vkJURLRK4zyIU*q1pa5Hy1kwL{~`s5pAuoF~63jY?_ zp8~{c5s(&sgKrlK`xfVji?+B(eFb1gse0C8zXilw1MJ|s#r_89FIY#-*L9`8P948R z03){ZmW!3uqV4!;D|~&{>FrhB&l`JMF6!4{aV;%y^7t`*xnG_8;iqNlkJmcW;9c!L zTRd2+YT)Jl`y;j`Rlc#_WV3Cj&2iqXZ7O5%1mA)}AiJdv}6ac!IZ|aS5*^^HENm-_zz DZz%vP diff --git a/Tools/ArdupilotMegaPlanner/temp.Designer.cs b/Tools/ArdupilotMegaPlanner/temp.Designer.cs index 4e844073f1..ec582ef476 100644 --- a/Tools/ArdupilotMegaPlanner/temp.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/temp.Designer.cs @@ -47,6 +47,7 @@ this.BUT_georefimage = new ArdupilotMega.MyButton(); this.BUT_follow_me = new ArdupilotMega.MyButton(); this.BUT_ant_track = new ArdupilotMega.MyButton(); + this.BUT_magcalib = new ArdupilotMega.MyButton(); this.SuspendLayout(); // // button1 @@ -234,11 +235,21 @@ this.BUT_ant_track.UseVisualStyleBackColor = true; this.BUT_ant_track.Click += new System.EventHandler(this.BUT_ant_track_Click); // + // BUT_magcalib + // + this.BUT_magcalib.Location = new System.Drawing.Point(161, 164); + this.BUT_magcalib.Name = "BUT_magcalib"; + this.BUT_magcalib.Size = new System.Drawing.Size(96, 23); + this.BUT_magcalib.TabIndex = 19; + this.BUT_magcalib.Text = "Mag Calib"; + this.BUT_magcalib.Click += new System.EventHandler(this.BUT_magcalib_Click); + // // temp // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(731, 281); + this.Controls.Add(this.BUT_magcalib); this.Controls.Add(this.BUT_ant_track); this.Controls.Add(this.BUT_follow_me); this.Controls.Add(this.BUT_georefimage); @@ -287,6 +298,7 @@ private MyButton BUT_georefimage; private MyButton BUT_follow_me; private MyButton BUT_ant_track; + private MyButton BUT_magcalib; //private SharpVectors.Renderers.Forms.SvgPictureBox svgPictureBox1; } diff --git a/Tools/ArdupilotMegaPlanner/temp.cs b/Tools/ArdupilotMegaPlanner/temp.cs index a6a6bbbaae..fd5c9c8c08 100644 --- a/Tools/ArdupilotMegaPlanner/temp.cs +++ b/Tools/ArdupilotMegaPlanner/temp.cs @@ -886,5 +886,10 @@ namespace ArdupilotMega { new Antenna.Tracker().Show(); } + + private void BUT_magcalib_Click(object sender, EventArgs e) + { + MagCalib.ProcessLog(); + } } } From ad4a2aa9f3c00de7134d7cd88f830af83e999808 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Wed, 21 Mar 2012 22:04:50 +0900 Subject: [PATCH 6/9] ArduCopter - motors_quad.pde - corrected test sequence for + configuration --- ArduCopter/motors_quad.pde | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ArduCopter/motors_quad.pde b/ArduCopter/motors_quad.pde index 41cb7760e0..fc50996585 100644 --- a/ArduCopter/motors_quad.pde +++ b/ArduCopter/motors_quad.pde @@ -178,24 +178,24 @@ static void output_motor_test() }else{ - APM_RC.OutputCh(MOT_3, g.rc_2.radio_min); + APM_RC.OutputCh(MOT_2, g.rc_2.radio_min); delay(4000); - APM_RC.OutputCh(MOT_1, g.rc_3.radio_min + 100); + APM_RC.OutputCh(MOT_3, g.rc_3.radio_min + 100); delay(300); - APM_RC.OutputCh(MOT_1, g.rc_3.radio_min); + APM_RC.OutputCh(MOT_3, g.rc_3.radio_min); delay(2000); - APM_RC.OutputCh(MOT_2, g.rc_1.radio_min + 100); + APM_RC.OutputCh(MOT_1, g.rc_1.radio_min + 100); delay(300); - APM_RC.OutputCh(MOT_2, g.rc_1.radio_min); + APM_RC.OutputCh(MOT_1, g.rc_1.radio_min); delay(2000); APM_RC.OutputCh(MOT_4, g.rc_4.radio_min + 100); delay(300); APM_RC.OutputCh(MOT_4, g.rc_4.radio_min); delay(2000); - APM_RC.OutputCh(MOT_3, g.rc_2.radio_min + 100); + APM_RC.OutputCh(MOT_2, g.rc_2.radio_min + 100); delay(300); } From f4d1295a4b7be2bd7f40a8739959a2e6e2f4bb8c Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 22 Mar 2012 21:13:26 +1100 Subject: [PATCH 7/9] AHRS: fixed build of AHRS example --- libraries/AP_AHRS/examples/AHRS_Test/AHRS_Test.pde | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/AP_AHRS/examples/AHRS_Test/AHRS_Test.pde b/libraries/AP_AHRS/examples/AHRS_Test/AHRS_Test.pde index 0a557f3340..5864d32d61 100644 --- a/libraries/AP_AHRS/examples/AHRS_Test/AHRS_Test.pde +++ b/libraries/AP_AHRS/examples/AHRS_Test/AHRS_Test.pde @@ -21,6 +21,7 @@ #include #include #include +#include // uncomment this for a APM2 board #define APM2_HARDWARE From 4407f6b8ca3edec4071572c12d730fe8bab19ba8 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 22 Mar 2012 22:49:18 +1100 Subject: [PATCH 8/9] pysim: added rotmat.py this is a python library for rotation matrices, following the conventions in AP_Math --- Tools/autotest/pysim/rotmat.py | 268 +++++++++++++++++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 Tools/autotest/pysim/rotmat.py diff --git a/Tools/autotest/pysim/rotmat.py b/Tools/autotest/pysim/rotmat.py new file mode 100644 index 0000000000..f108c8818d --- /dev/null +++ b/Tools/autotest/pysim/rotmat.py @@ -0,0 +1,268 @@ +#!/usr/bin/env python +# +# vector3 and rotation matrix classes +# This follows the conventions in the ArduPilot code, +# and is essentially a python version of the AP_Math library +# +# Andrew Tridgell, March 2012 +# +# This library is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by the +# Free Software Foundation; either version 2.1 of the License, or (at your +# option) any later version. +# +# This library 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 Lesser General Public License +# for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this library; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +'''rotation matrix class +''' + +from math import sin, cos, sqrt, asin, atan2, pi, radians, acos + +class Vector3: + '''a vector''' + def __init__(self, x=None, y=None, z=None): + if x != None and y != None and z != None: + self.x = x + self.y = y + self.z = z + elif x != None and len(x) == 3: + self.x = x[0] + self.y = x[1] + self.z = x[2] + elif x != None: + raise ValueError('bad initialiser') + else: + self.x = 0 + self.y = 0 + self.z = 0 + + def __repr__(self): + return 'Vector3(%.2f, %.2f, %.2f)' % (self.x, + self.y, + self.z) + + def __add__(self, v): + return Vector3(self.x + v.x, + self.y + v.y, + self.z + v.z) + + __radd__ = __add__ + + def __sub__(self, v): + return Vector3(self.x - v.x, + self.y - v.y, + self.z - v.z) + + def __neg__(self): + return Vector3(-self.x, -self.y, -self.z) + + def __rsub__(self, v): + return Vector3(v.x - self.x, + v.y - self.y, + v.z - self.z) + + def __mul__(self, v): + if isinstance(v, Vector3): + '''dot product''' + return self.x*v.x + self.y*v.y + self.z*v.z + return Vector3(self.x * v, + self.y * v, + self.z * v) + + __rmul__ = __mul__ + + def __div__(self, v): + return Vector3(self.x / v, + self.y / v, + self.z / v) + + def __mod__(self, v): + '''cross product''' + return Vector3(self.y*v.z - self.z*v.y, + self.z*v.x - self.x*v.z, + self.x*v.y - self.y*v.x) + + def __copy__(self): + return Vector3(self.x, self.y, self.z) + + copy = __copy__ + + def length(self): + return sqrt(self.x**2 + self.y**2 + self.z**2) + + def zero(self): + self.x = self.y = self.z = 0 + + def angle(self, v): + '''return the angle between this vector and another vector''' + return acos(self * v) / (self.length() * v.length()) + + def normalized(self): + return self / self.length() + + def normalize(self): + v = self.normalized() + self.x = v.x + self.y = v.y + self.z = v.z + +class Matrix3: + '''a 3x3 matrix, intended as a rotation matrix''' + def __init__(self, a=None, b=None, c=None): + if a is not None and b is not None and c is not None: + self.a = a.copy() + self.b = b.copy() + self.c = c.copy() + else: + self.identity() + + def __repr__(self): + return 'Matrix3((%.2f, %.2f, %.2f), (%.2f, %.2f, %.2f), (%.2f, %.2f, %.2f))' % ( + self.a.x, self.a.y, self.a.z, + self.b.x, self.b.y, self.b.z, + self.c.x, self.c.y, self.c.z) + + def identity(self): + self.a = Vector3(1,0,0) + self.b = Vector3(0,1,0) + self.c = Vector3(0,0,1) + + def transposed(self): + return Matrix3(Vector3(self.a.x, self.b.x, self.c.x), + Vector3(self.a.y, self.b.y, self.c.y), + Vector3(self.a.z, self.b.z, self.c.z)) + + + def from_euler(self, roll, pitch, yaw): + '''fill the matrix from Euler angles in radians''' + cp = cos(pitch) + sp = sin(pitch) + sr = sin(roll) + cr = cos(roll) + sy = sin(yaw) + cy = cos(yaw) + + self.a.x = cp * cy + self.a.y = (sr * sp * cy) - (cr * sy) + self.a.z = (cr * sp * cy) + (sr * sy) + self.b.x = cp * sy + self.b.y = (sr * sp * sy) + (cr * cy) + self.b.z = (cr * sp * sy) - (sr * cy) + self.c.x = -sp + self.c.y = sr * cp + self.c.z = cr * cp + + + def to_euler(self): + '''find Euler angles for the matrix''' + if self.c.x >= 1.0: + pitch = pi + elif self.c.x <= -1.0: + pitch = -pi + else: + pitch = -asin(self.c.x) + roll = atan2(self.c.y, self.c.z) + yaw = atan2(self.b.x, self.a.x) + return (roll, pitch, yaw) + + def __add__(self, m): + return Matrix3(self.a + m.a, self.b + m.b, self.c + m.c) + + __radd__ = __add__ + + def __sub__(self, m): + return Matrix3(self.a - m.a, self.b - m.b, self.c - m.c) + + def __rsub__(self, m): + return Matrix3(m.a - self.a, m.b - self.b, m.c - self.c) + + def __mul__(self, other): + if isinstance(other, Vector3): + v = other + return Vector3(self.a.x * v.x + self.a.y * v.y + self.a.z * v.z, + self.b.x * v.x + self.b.y * v.y + self.b.z * v.z, + self.c.x * v.x + self.c.y * v.y + self.c.z * v.z) + elif isinstance(other, Matrix3): + m = other + return Matrix3(Vector3(self.a.x * m.a.x + self.a.y * m.b.x + self.a.z * m.c.x, + self.a.x * m.a.y + self.a.y * m.b.y + self.a.z * m.c.y, + self.a.x * m.a.z + self.a.y * m.b.z + self.a.z * m.c.z), + Vector3(self.b.x * m.a.x + self.b.y * m.b.x + self.b.z * m.c.x, + self.b.x * m.a.y + self.b.y * m.b.y + self.b.z * m.c.y, + self.b.x * m.a.z + self.b.y * m.b.z + self.b.z * m.c.z), + Vector3(self.c.x * m.a.x + self.c.y * m.b.x + self.c.z * m.c.x, + self.c.x * m.a.y + self.c.y * m.b.y + self.c.z * m.c.y, + self.c.x * m.a.z + self.c.y * m.b.z + self.c.z * m.c.z)) + v = other + return Matrix3(self.a * v, self.b * v, self.c * v) + + def __div__(self, v): + return Matrix3(self.a / v, self.b / v, self.c / v) + + def __neg__(self): + return Matrix3(-self.a, -self.b, -self.c) + + def __copy__(self): + return Matrix3(self.a, self.b, self.c) + + copy = __copy__ + + def rotate(self, g): + '''rotate the matrix by a given amount on 3 axes''' + temp_matrix = Matrix3() + a = self.a + b = self.b + c = self.c + temp_matrix.a.x = a.y * g.z - a.z * g.y + temp_matrix.a.y = a.z * g.x - a.x * g.z + temp_matrix.a.z = a.x * g.y - a.y * g.x + temp_matrix.b.x = b.y * g.z - b.z * g.y + temp_matrix.b.y = b.z * g.x - b.x * g.z + temp_matrix.b.z = b.x * g.y - b.y * g.x + temp_matrix.c.x = c.y * g.z - c.z * g.y + temp_matrix.c.y = c.z * g.x - c.x * g.z + temp_matrix.c.z = c.x * g.y - c.y * g.x + self.a += temp_matrix.a + self.b += temp_matrix.b + self.c += temp_matrix.c + + def normalize(self): + '''re-normalise a rotation matrix''' + error = self.a * self.b + t0 = self.a - (self.b * (0.5 * error)) + t1 = self.b - (self.a * (0.5 * error)) + t2 = t0 % t1 + self.a = t0 * (1.0 / t0.length()) + self.b = t1 * (1.0 / t1.length()) + self.c = t2 * (1.0 / t2.length()) + + def trace(self): + '''the trace of the matrix''' + return self.a.x + self.b.y + self.c.z + +def test_euler(): + '''check that from_euler() and to_euler() are consistent''' + m = Matrix3() + from math import radians, degrees + for r in range(-179, 179, 3): + for p in range(-89, 89, 3): + for y in range(-179, 179, 3): + m.from_euler(radians(r), radians(p), radians(y)) + (r2, p2, y2) = m.to_euler() + v1 = Vector3(r,p,y) + v2 = Vector3(degrees(r2),degrees(p2),degrees(y2)) + diff = v1 - v2 + if diff.length() > 1.0e-12: + print('EULER ERROR:', v1, v2, diff.length()) + +if __name__ == "__main__": + import doctest + doctest.testmod() + test_euler() From 5f3e2cf98a3a62500f66f3833f77ff78deb4a09a Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 22 Mar 2012 22:50:47 +1100 Subject: [PATCH 9/9] pysim: update the multicopter simulator with correct acceleration this re-works the multicopter simulator in terms of rotation matrices, and adds full acceleration support, which means it will include linear acceleration affects and centripetal acceleration --- Tools/autotest/pysim/aircraft.py | 68 ++++-------- Tools/autotest/pysim/multicopter.py | 89 +++++++--------- Tools/autotest/pysim/sim_multicopter.py | 26 +++-- Tools/autotest/pysim/testwind.py | 4 +- Tools/autotest/pysim/util.py | 134 +++++------------------- 5 files changed, 96 insertions(+), 225 deletions(-) diff --git a/Tools/autotest/pysim/aircraft.py b/Tools/autotest/pysim/aircraft.py index b45f3156a7..af1d786853 100644 --- a/Tools/autotest/pysim/aircraft.py +++ b/Tools/autotest/pysim/aircraft.py @@ -1,5 +1,5 @@ -import euclid, math, util - +import math, util, rotmat +from rotmat import Vector3, Matrix3 class Aircraft(object): '''a basic aircraft class''' @@ -14,67 +14,35 @@ class Aircraft(object): self.longitude = self.home_longitude self.altitude = self.home_altitude - self.pitch = 0.0 # degrees - self.roll = 0.0 # degrees - self.yaw = 0.0 # degrees + self.dcm = Matrix3() - # rates in earth frame - self.pitch_rate = 0.0 # degrees/s - self.roll_rate = 0.0 # degrees/s - self.yaw_rate = 0.0 # degrees/s + # rotation rate in body frame + self.gyro = Vector3(0,0,0) # rad/s - # rates in body frame - self.pDeg = 0.0 # degrees/s - self.qDeg = 0.0 # degrees/s - self.rDeg = 0.0 # degrees/s - - self.velocity = euclid.Vector3(0, 0, 0) # m/s, North, East, Up - self.position = euclid.Vector3(0, 0, 0) # m North, East, Up - self.accel = euclid.Vector3(0, 0, 0) # m/s/s North, East, Up + self.velocity = Vector3(0, 0, 0) # m/s, North, East, Down + self.position = Vector3(0, 0, 0) # m North, East, Down + self.last_velocity = self.velocity.copy() self.mass = 0.0 self.update_frequency = 50 # in Hz self.gravity = 9.8 # m/s/s - self.accelerometer = euclid.Vector3(0, 0, -self.gravity) + self.accelerometer = Vector3(0, 0, self.gravity) self.wind = util.Wind('0,0,0') - def normalise(self): - '''normalise roll, pitch and yaw - - roll between -180 and 180 - pitch between -180 and 180 - yaw between 0 and 360 - - ''' - def norm(angle, min, max): - while angle > max: - angle -= 360 - while angle < min: - angle += 360 - return angle - self.roll = norm(self.roll, -180, 180) - self.pitch = norm(self.pitch, -180, 180) - self.yaw = norm(self.yaw, 0, 360) - - def update_position(self): + def update_position(self, delta_time): '''update lat/lon/alt from position''' radius_of_earth = 6378100.0 # in meters dlat = math.degrees(math.atan(self.position.x/radius_of_earth)) - dlon = math.degrees(math.atan(self.position.y/radius_of_earth)) - - self.altitude = self.home_altitude + self.position.z self.latitude = self.home_latitude + dlat + lon_scale = math.cos(math.radians(self.latitude)); + dlon = math.degrees(math.atan(self.position.y/radius_of_earth))/lon_scale self.longitude = self.home_longitude + dlon - from math import sin, cos, sqrt, radians - + self.altitude = self.home_altitude - self.position.z + # work out what the accelerometer would see - xAccel = sin(radians(self.pitch)) - yAccel = -sin(radians(self.roll)) * cos(radians(self.pitch)) - zAccel = -cos(radians(self.roll)) * cos(radians(self.pitch)) - scale = 9.81 / sqrt((xAccel*xAccel)+(yAccel*yAccel)+(zAccel*zAccel)) - xAccel *= scale; - yAccel *= scale; - zAccel *= scale; - self.accelerometer = euclid.Vector3(xAccel, yAccel, zAccel) + self.accelerometer = ((self.velocity - self.last_velocity)/delta_time) + Vector3(0,0,self.gravity) +# self.accelerometer = Vector3(0,0,-self.gravity) + self.accelerometer = self.dcm.transposed() * self.accelerometer + self.last_velocity = self.velocity.copy() diff --git a/Tools/autotest/pysim/multicopter.py b/Tools/autotest/pysim/multicopter.py index f24ba7e424..1eca2c62a1 100755 --- a/Tools/autotest/pysim/multicopter.py +++ b/Tools/autotest/pysim/multicopter.py @@ -1,7 +1,9 @@ #!/usr/bin/env python from aircraft import Aircraft -import euclid, util, time, math +import util, time, math +from math import degrees, radians +from rotmat import Vector3, Matrix3 class Motor(object): def __init__(self, angle, clockwise, servo): @@ -83,7 +85,7 @@ class MultiCopter(Aircraft): self.mass = mass # Kg self.hover_throttle = hover_throttle self.terminal_velocity = terminal_velocity - self.terminal_rotation_rate = 4*360.0 + self.terminal_rotation_rate = 4*radians(360.0) self.frame_height = frame_height # scaling from total motor power to Newtons. Allows the copter @@ -96,6 +98,7 @@ class MultiCopter(Aircraft): for i in range(0, len(self.motors)): servo = servos[self.motors[i].servo-1] if servo <= 0.0: + self.motor_speed[i] = 0 else: self.motor_speed[i] = servo @@ -107,78 +110,58 @@ class MultiCopter(Aircraft): delta_time = t - self.last_time self.last_time = t - # rotational acceleration, in degrees/s/s, in body frame - roll_accel = 0.0 - pitch_accel = 0.0 - yaw_accel = 0.0 + # rotational acceleration, in rad/s/s, in body frame + rot_accel = Vector3(0,0,0) thrust = 0.0 for i in range(len(self.motors)): - roll_accel += -5000.0 * math.sin(math.radians(self.motors[i].angle)) * m[i] - pitch_accel += 5000.0 * math.cos(math.radians(self.motors[i].angle)) * m[i] + rot_accel.x += -radians(5000.0) * math.sin(radians(self.motors[i].angle)) * m[i] + rot_accel.y += radians(5000.0) * math.cos(radians(self.motors[i].angle)) * m[i] if self.motors[i].clockwise: - yaw_accel -= m[i] * 400.0 + rot_accel.z -= m[i] * radians(400.0) else: - yaw_accel += m[i] * 400.0 + rot_accel.z += m[i] * radians(400.0) thrust += m[i] * self.thrust_scale # newtons - # rotational resistance - roll_accel -= (self.pDeg / self.terminal_rotation_rate) * 5000.0 - pitch_accel -= (self.qDeg / self.terminal_rotation_rate) * 5000.0 - yaw_accel -= (self.rDeg / self.terminal_rotation_rate) * 400.0 + # rotational air resistance + rot_accel.x -= self.gyro.x * radians(5000.0) / self.terminal_rotation_rate + rot_accel.y -= self.gyro.y * radians(5000.0) / self.terminal_rotation_rate + rot_accel.z -= self.gyro.z * radians(400.0) / self.terminal_rotation_rate # update rotational rates in body frame - self.pDeg += roll_accel * delta_time - self.qDeg += pitch_accel * delta_time - self.rDeg += yaw_accel * delta_time + self.gyro += rot_accel * delta_time - # calculate rates in earth frame - (self.roll_rate, - self.pitch_rate, - self.yaw_rate) = util.BodyRatesToEarthRates(self.roll, self.pitch, self.yaw, - self.pDeg, self.qDeg, self.rDeg) - - # update rotation - self.roll += self.roll_rate * delta_time - self.pitch += self.pitch_rate * delta_time - self.yaw += self.yaw_rate * delta_time + # update attitude + self.dcm.rotate(self.gyro * delta_time) # air resistance air_resistance = - self.velocity * (self.gravity/self.terminal_velocity) - # normalise rotations - self.normalise() - - accel = thrust / self.mass - - accel3D = util.RPY_to_XYZ(self.roll, self.pitch, self.yaw, accel) - accel3D += euclid.Vector3(0, 0, -self.gravity) - accel3D += air_resistance - + accel_body = Vector3(0, 0, -thrust / self.mass) + accel_earth = self.dcm * accel_body + accel_earth += Vector3(0, 0, self.gravity) + accel_earth += air_resistance # add in some wind - accel3D += self.wind.accel(self.velocity) + accel_earth += self.wind.accel(self.velocity) # new velocity vector - self.velocity += accel3D * delta_time - self.accel = accel3D + self.velocity += accel_earth * delta_time # new position vector old_position = self.position.copy() self.position += self.velocity * delta_time # constrain height to the ground - if self.position.z + self.home_altitude < self.ground_level + self.frame_height: - if old_position.z + self.home_altitude > self.ground_level + self.frame_height: - print("Hit ground at %f m/s" % (-self.velocity.z)) - self.velocity = euclid.Vector3(0, 0, 0) - self.roll_rate = 0 - self.pitch_rate = 0 - self.yaw_rate = 0 - self.roll = 0 - self.pitch = 0 - self.accel = euclid.Vector3(0, 0, 0) - self.position = euclid.Vector3(self.position.x, self.position.y, - self.ground_level + self.frame_height - self.home_altitude) + if (-self.position.z) + self.home_altitude < self.ground_level + self.frame_height: + if (-old_position.z) + self.home_altitude > self.ground_level + self.frame_height: + print("Hit ground at %f m/s" % (self.velocity.z)) + + self.velocity = Vector3(0, 0, 0) + # zero roll/pitch, but keep yaw + (r, p, y) = self.dcm.to_euler() + self.dcm.from_euler(0, 0, y) + + self.position = Vector3(self.position.x, self.position.y, + -(self.ground_level + self.frame_height - self.home_altitude)) # update lat/lon/altitude - self.update_position() - + self.update_position(delta_time) diff --git a/Tools/autotest/pysim/sim_multicopter.py b/Tools/autotest/pysim/sim_multicopter.py index a3cb744a05..3425521504 100755 --- a/Tools/autotest/pysim/sim_multicopter.py +++ b/Tools/autotest/pysim/sim_multicopter.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from multicopter import MultiCopter -import euclid, util, time, os, sys, math +import util, time, os, sys, math import socket, struct import select, fgFDM, errno @@ -16,16 +16,20 @@ import mavlink def sim_send(m, a): '''send flight information to mavproxy and flightgear''' global fdm + from math import degrees + + earth_rates = util.BodyRatesToEarthRates(a.dcm, a.gyro) + (roll, pitch, yaw) = a.dcm.to_euler() fdm.set('latitude', a.latitude, units='degrees') fdm.set('longitude', a.longitude, units='degrees') fdm.set('altitude', a.altitude, units='meters') - fdm.set('phi', a.roll, units='degrees') - fdm.set('theta', a.pitch, units='degrees') - fdm.set('psi', a.yaw, units='degrees') - fdm.set('phidot', a.roll_rate, units='dps') - fdm.set('thetadot', a.pitch_rate, units='dps') - fdm.set('psidot', a.yaw_rate, units='dps') + fdm.set('phi', roll, units='radians') + fdm.set('theta', pitch, units='radians') + fdm.set('psi', yaw, units='radians') + fdm.set('phidot', earth_rates.x, units='rps') + fdm.set('thetadot', earth_rates.y, units='rps') + fdm.set('psidot', earth_rates.z, units='rps') fdm.set('vcas', math.sqrt(a.velocity.x*a.velocity.x + a.velocity.y*a.velocity.y), units='mps') fdm.set('v_north', a.velocity.x, units='mps') fdm.set('v_east', a.velocity.y, units='mps') @@ -40,11 +44,11 @@ def sim_send(m, a): raise buf = struct.pack('<16dI', - a.latitude, a.longitude, a.altitude, a.yaw, + a.latitude, a.longitude, a.altitude, degrees(yaw), a.velocity.x, a.velocity.y, - a.accelerometer.x, a.accelerometer.y, a.accelerometer.z, - a.roll_rate, a.pitch_rate, a.yaw_rate, - a.roll, a.pitch, a.yaw, + -a.accelerometer.x, -a.accelerometer.y, -a.accelerometer.z, + degrees(earth_rates.x), degrees(earth_rates.y), degrees(earth_rates.z), + degrees(roll), degrees(pitch), degrees(yaw), math.sqrt(a.velocity.x*a.velocity.x + a.velocity.y*a.velocity.y), 0x4c56414e) try: diff --git a/Tools/autotest/pysim/testwind.py b/Tools/autotest/pysim/testwind.py index 7884479931..af04799492 100755 --- a/Tools/autotest/pysim/testwind.py +++ b/Tools/autotest/pysim/testwind.py @@ -1,12 +1,12 @@ #!/usr/bin/env python # simple test of wind generation code -import util, euclid, time, random +import util, time, random wind = util.Wind('3,90,0.1') t0 = time.time() -velocity = euclid.Vector3(0,0,0) +velocity = Vector3(0,0,0) t = 0 deltat = 0.01 diff --git a/Tools/autotest/pysim/util.py b/Tools/autotest/pysim/util.py index c689a6bf03..3a058499c9 100644 --- a/Tools/autotest/pysim/util.py +++ b/Tools/autotest/pysim/util.py @@ -1,90 +1,8 @@ -import euclid, math +import math import os, pexpect, sys, time, random +from rotmat import Vector3, Matrix3 from subprocess import call, check_call,Popen, PIPE -def RPY_to_XYZ(roll, pitch, yaw, length): - '''convert roll, pitch and yaw in degrees to - Vector3 in X, Y and Z - - inputs: - - roll, pitch and yaw are in degrees - yaw == 0 when pointing North - roll == zero when horizontal. +ve roll means tilting to the right - pitch == zero when horizontal, +ve pitch means nose is pointing upwards - length is in an arbitrary linear unit. - When RPY is (0, 0, 0) then length represents distance upwards - - outputs: - Vector3: - X is in units along latitude. +ve X means going North - Y is in units along longitude +ve Y means going East - Z is altitude in units (+ve is up) - - test suite: - - >>> RPY_to_XYZ(0, 0, 0, 1) - Vector3(0.00, 0.00, 1.00) - - >>> RPY_to_XYZ(0, 0, 0, 2) - Vector3(0.00, 0.00, 2.00) - - >>> RPY_to_XYZ(90, 0, 0, 1) - Vector3(0.00, 1.00, 0.00) - - >>> RPY_to_XYZ(-90, 0, 0, 1) - Vector3(0.00, -1.00, 0.00) - - >>> RPY_to_XYZ(0, 90, 0, 1) - Vector3(-1.00, 0.00, 0.00) - - >>> RPY_to_XYZ(0, -90, 0, 1) - Vector3(1.00, 0.00, 0.00) - - >>> RPY_to_XYZ(90, 0, 180, 1) - Vector3(-0.00, -1.00, 0.00) - - >>> RPY_to_XYZ(-90, 0, 180, 1) - Vector3(0.00, 1.00, 0.00) - - >>> RPY_to_XYZ(0, 90, 180, 1) - Vector3(1.00, -0.00, 0.00) - - >>> RPY_to_XYZ(0, -90, 180, 1) - Vector3(-1.00, 0.00, 0.00) - - >>> RPY_to_XYZ(90, 0, 90, 1) - Vector3(-1.00, 0.00, 0.00) - - >>> RPY_to_XYZ(-90, 0, 90, 1) - Vector3(1.00, -0.00, 0.00) - - >>> RPY_to_XYZ(90, 0, 270, 1) - Vector3(1.00, -0.00, 0.00) - - >>> RPY_to_XYZ(-90, 0, 270, 1) - Vector3(-1.00, 0.00, 0.00) - - >>> RPY_to_XYZ(0, 90, 90, 1) - Vector3(-0.00, -1.00, 0.00) - - >>> RPY_to_XYZ(0, -90, 90, 1) - Vector3(0.00, 1.00, 0.00) - - >>> RPY_to_XYZ(0, 90, 270, 1) - Vector3(0.00, 1.00, 0.00) - - >>> RPY_to_XYZ(0, -90, 270, 1) - Vector3(-0.00, -1.00, 0.00) - - ''' - - v = euclid.Vector3(0, 0, length) - v = euclid.Quaternion.new_rotate_euler(-math.radians(pitch), 0, -math.radians(roll)) * v - v = euclid.Quaternion.new_rotate_euler(0, math.radians(yaw), 0) * v - return v - - def m2ft(x): '''meters to feet''' return float(x) / 0.3048 @@ -289,53 +207,48 @@ def check_parent(parent_pid=os.getppid()): sys.exit(1) -def EarthRatesToBodyRates(roll, pitch, yaw, - rollRate, pitchRate, yawRate): +def EarthRatesToBodyRates(dcm, earth_rates): '''convert the angular velocities from earth frame to body frame. Thanks to James Goppert for the formula - all inputs and outputs are in degrees + all inputs and outputs are in radians - returns a tuple, (p,q,r) + returns a gyro vector in body frame, in rad/s ''' - from math import radians, degrees, sin, cos, tan + from math import sin, cos - phi = radians(roll) - theta = radians(pitch) - phiDot = radians(rollRate) - thetaDot = radians(pitchRate) - psiDot = radians(yawRate) + (phi, theta, psi) = dcm.to_euler() + phiDot = earth_rates.x + thetaDot = earth_rates.y + psiDot = earth_rates.z p = phiDot - psiDot*sin(theta) q = cos(phi)*thetaDot + sin(phi)*psiDot*cos(theta) r = cos(phi)*psiDot*cos(theta) - sin(phi)*thetaDot + return Vector3(p, q, r) - return (degrees(p), degrees(q), degrees(r)) - -def BodyRatesToEarthRates(roll, pitch, yaw, pDeg, qDeg, rDeg): +def BodyRatesToEarthRates(dcm, gyro): '''convert the angular velocities from body frame to earth frame. - all inputs and outputs are in degrees + all inputs and outputs are in radians/s - returns a tuple, (rollRate,pitchRate,yawRate) + returns a earth rate vector ''' - from math import radians, degrees, sin, cos, tan, fabs + from math import sin, cos, tan, fabs - p = radians(pDeg) - q = radians(qDeg) - r = radians(rDeg) + p = gyro.x + q = gyro.y + r = gyro.z - phi = radians(roll) - theta = radians(pitch) + (phi, theta, psi) = dcm.to_euler() phiDot = p + tan(theta)*(q*sin(phi) + r*cos(phi)) thetaDot = q*cos(phi) - r*sin(phi) if fabs(cos(theta)) < 1.0e-20: theta += 1.0e-10 psiDot = (q*sin(phi) + r*cos(phi))/cos(theta) - - return (degrees(phiDot), degrees(thetaDot), degrees(psiDot)) + return Vector3(phiDot, thetaDot, psiDot) class Wind(object): @@ -382,12 +295,15 @@ class Wind(object): '''return current wind acceleration in ground frame. The velocity is a Vector3 of the current velocity of the aircraft in earth frame, m/s''' + from math import radians (speed, direction) = self.current(deltat=deltat) # wind vector - v = euclid.Vector3(speed, 0, 0) - wind = euclid.Quaternion.new_rotate_euler(0, math.radians(direction), 0) * v + v = Vector3(speed, 0, 0) + m = Matrix3() + m.from_euler(0, 0, radians(direction)) + wind = m.transposed() * v # relative wind vector relwind = wind - velocity