text:
using Codeplex.Data;
using ElectronicObserver.Data;
using ElectronicObserver.Observer;
using ElectronicObserver.Resource;
using ElectronicObserver.Utility.Data;
using ElectronicObserver.Utility.Mathematics;
using ElectronicObserver.Window.Control;
using ElectronicObserver.Window.Dialog;
using ElectronicObserver.Window.Support;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;

namespace ElectronicObserver.Window {

	public partial class FormFleet : DockContent {

		private bool IsRemodeling = false;

		private class TableFleetControl {
			public Label Name;
			public ImageLabel StateMain;
			public ImageLabel AirSuperiority;
			public ImageLabel SearchingAbility;
			public ImageLabel AAValue;
			public ToolTip ToolTipInfo;
			public ElectronicObserver.Data.FleetData.FleetStates State;
			public DateTime Timer;

			public TableFleetControl( FormFleet parent ) {

				#region Initialize

				Name = new Label();
				Name.Text = "[" + parent.FleetID.ToString() + "]";
				Name.Anchor = AnchorStyles.Left;
				Name.ForeColor = parent.MainFontColor;
				Name.Padding = new Padding( 0, 1, 0, 1 );
				Name.Margin = new Padding( 2, 0, 2, 0 );
				Name.AutoSize = true;
				//Name.Visible = false;

				StateMain = new ImageLabel();
				StateMain.Anchor = AnchorStyles.Left;
				StateMain.ForeColor = parent.MainFontColor;
				StateMain.ImageList = ResourceManager.Instance.Icons;
				StateMain.Padding = new Padding( 2, 2, 2, 2 );
				StateMain.Margin = new Padding( 2, 0, 2, 0 );
				StateMain.AutoSize = true;

				AirSuperiority = new ImageLabel();
				AirSuperiority.Anchor = AnchorStyles.Left;
				AirSuperiority.ForeColor = parent.MainFontColor;
				AirSuperiority.ImageList = ResourceManager.Instance.Equipments;
				AirSuperiority.ImageIndex = (int)ResourceManager.EquipmentContent.CarrierBasedFighter;
				AirSuperiority.Padding = new Padding( 2, 2, 2, 2 );
				AirSuperiority.Margin = new Padding( 2, 0, 2, 0 );
				AirSuperiority.AutoSize = true;

				SearchingAbility = new ImageLabel();
				SearchingAbility.Anchor = AnchorStyles.Left;
				SearchingAbility.ForeColor = parent.MainFontColor;
				SearchingAbility.ImageList = ResourceManager.Instance.Equipments;
				SearchingAbility.ImageIndex = (int)ResourceManager.EquipmentContent.CarrierBasedRecon;
				SearchingAbility.Padding = new Padding( 2, 2, 2, 2 );
				SearchingAbility.Margin = new Padding( 2, 0, 2, 0 );
				SearchingAbility.AutoSize = true;

				AAValue = new ImageLabel();
				AAValue.Anchor = AnchorStyles.Left;
				AAValue.Font = parent.MainFont;
				AAValue.ForeColor = parent.MainFontColor;
				AAValue.ImageList = ResourceManager.Instance.Equipments;
				AAValue.ImageIndex = (int)ResourceManager.EquipmentContent.AADirector;
				AAValue.Padding = new Padding( 2, 2, 2, 2 );
				AAValue.Margin = new Padding( 2, 0, 2, 0 );
				AAValue.AutoSize = true;

				ConfigurationChanged( parent );
				ToolTipInfo = parent.ToolTipInfo;
				State = FleetData.FleetStates.NoShip;
				Timer = DateTime.Now;

				#endregion

			}

			public TableFleetControl( FormFleet parent, TableLayoutPanel table )
				: this( parent ) {
				AddToTable( table );
			}

			public void AddToTable( TableLayoutPanel table ) {

				table.SuspendLayout();
				table.Controls.Add( Name, 0, 0 );
				table.Controls.Add( StateMain, 1, 0 );
				table.Controls.Add( AirSuperiority, 2, 0 );
				table.Controls.Add( SearchingAbility, 3, 0 );
				table.Controls.Add( AAValue, 4, 0 );
				table.ResumeLayout();

				int row = 0;
                #region set RowStyle
                RowStyle rs = new RowStyle(SizeType.Absolute, Utility.Configuration.Config.UI.MainFont.FontData.Height + 6);

                if ( table.RowStyles.Count > row )
					table.RowStyles[row] = rs;
				else
					while ( table.RowStyles.Count <= row )
						table.RowStyles.Add( rs );
				#endregion
			}

            public void Update(FleetData fleet)
            {

                KCDatabase db = KCDatabase.Instance;

                if (fleet == null) return;

                Name.Text = fleet.Name;
                {
                    int levelSum = fleet.MembersInstance.Sum(s => s != null ? s.Level : 0);

                    int fueltotal = fleet.MembersInstance.Sum(s => s == null ? 0 : (int)Math.Floor(s.FuelMax * (s.IsMarried ? 0.85 : 1.00)));
                    int ammototal = fleet.MembersInstance.Sum(s => s == null ? 0 : (int)Math.Floor(s.AmmoMax * (s.IsMarried ? 0.85 : 1.00)));

                    int fuelunit = fleet.MembersInstance.Sum(s => s == null ? 0 : (int)Math.Floor(s.MasterShip.Fuel * 0.2 * (s.IsMarried ? 0.85 : 1.00)));
                    int ammounit = fleet.MembersInstance.Sum(s => s == null ? 0 : (int)Math.Floor(s.MasterShip.Ammo * 0.2 * (s.IsMarried ? 0.85 : 1.00)));

                    int speed = fleet.MembersWithoutEscaped.Min(s => s == null ? 10 : s.MasterShip.Speed);
                    ToolTipInfo.SetToolTip(Name, string.Format(
                        "Lv合計: {0} / 平均: {1:0.00}\r\n{2}艦隊\r\nドラム缶搭載: {3}個 ({4}艦)\r\n大発動艇搭載: {5}個\r\n総積載: 燃 {6} / 弾 {7}\r\n(1戦当たり 燃 {8} / 弾 {9})",
                        levelSum,
                        (double)levelSum / Math.Max(fleet.Members.Count(id => id != -1), 1),
                        Constants.GetSpeed(speed),
                        fleet.MembersInstance.Sum(s => s == null ? 0 : s.SlotInstanceMaster.Count(q => q == null ? false : q.CategoryType == 30)),
                        fleet.MembersInstance.Count(s => s == null ? false : s.SlotInstanceMaster.Count(q => q == null ? false : q.CategoryType == 30) > 0),
                        fleet.MembersInstance.Sum(s => s == null ? 0 : s.SlotInstanceMaster.Count(q => q == null ? false : q.CategoryType == 24)),
                        fueltotal,
                        ammototal,
                        fuelunit,
                        ammounit
                        ));

                }

                State = FleetData.UpdateFleetState(fleet, StateMain, ToolTipInfo, State, ref Timer);

                //制空戦力計算
                {
                    int airSuperiority = fleet.GetAirSuperiority();
                    int airSuperiority_old = fleet.GetAirSuperiority_Old(1);//对7星舰战使用120内部熟练度进行制空计算
                    int airSuperiority_old2 = fleet.GetAirSuperiority_Old(15);//对7星所有有内部熟练制空使用120内部熟练度进行制空计算
                    AirSuperiority.Text = airSuperiority.ToString();
                    ToolTipInfo.SetToolTip(AirSuperiority,
                        string.Format("满熟练制空值: {0}/{5}\r\n確保: {1}\r\n優勢: {2}\r\n均衡: {3}\r\n劣勢: {4}\r\n",
                        airSuperiority_old,
                        (int)(airSuperiority / 3.0),
                        (int)(airSuperiority / 1.5),
                        (int)(airSuperiority * 1.5 - 1),
                        (int)(airSuperiority * 3.0 - 1),
                        airSuperiority_old2));
                }

				//索敵能力計算
				SearchingAbility.Text = fleet.GetSearchingAbilityString();
				{
					StringBuilder sb = new StringBuilder();
					double probStart = fleet.GetContactProbability();
					var probSelect = fleet.GetContactSelectionProbability();

					var ss = Utility.Configuration.Config.FormFleet.SearchingAbilities.Split( ';' );
					for ( int i = 0; i < ss.Length; i++ ) {
						sb.AppendFormat( "{0}: {1}\r\n", ss[i], fleet.GetSearchingAbilityString( i ) );
					}
					sb.AppendFormat( "\r\n触接開始率: \r\n 確保 {0:p1} / 優勢 {1:p1}\r\n",
						probStart,
						probStart * 0.6 );

					if ( probSelect.Count > 0 ) {
						sb.AppendLine( "触接選択率: " );

						foreach ( var p in probSelect.OrderBy( p => p.Key ) ) {
							sb.AppendFormat( " 命中{0} : {1:p1}\r\n", p.Key, p.Value );
						}
					}

					ToolTipInfo.SetToolTip( SearchingAbility, sb.ToString() );

					// 舰队防空值计算
					AAValue.Text = CalculatorEx.GetFleetAAValue(fleet, 0).ToString();
					ToolTipInfo.SetToolTip(AAValue,
					string.Format("单纵阵: {0}\r\n复纵阵: {1}\r\n轮形阵: {2}\r\n梯形阵: {3}\r\n单横阵: {4}\r\n",
						CalculatorEx.GetFleetAAValue(fleet, 1),
						CalculatorEx.GetFleetAAValue(fleet, 2),
						CalculatorEx.GetFleetAAValue(fleet, 3),
						CalculatorEx.GetFleetAAValue(fleet, 4),
						CalculatorEx.GetFleetAAValue(fleet, 5)));
				}

            }

			public void ResetState() {
				State = FleetData.FleetStates.NoShip;
			}

			public void Refresh() {

				FleetData.RefreshFleetState( StateMain, State, Timer );

			}

			public void ConfigurationChanged( FormFleet parent ) {
				Name.Font = parent.MainFont;
				StateMain.Font = parent.MainFont;
				StateMain.BackColor = Color.Transparent;
				AirSuperiority.Font = parent.MainFont;
				AirSuperiority.Font = parent.MainFont;
				SearchingAbility.Font = parent.MainFont;

			}

		}

		private class TableMemberControl {
			public ImageLabel Name;
			public ShipStatusLevel Level;
			public ShipStatusHP HP;
			public ImageLabel Condition;
			public ShipStatusResource ShipResource;
			public ShipStatusEquipment Equipments;

			private ToolTip ToolTipInfo;
			private FormFleet Parent;

			public TableMemberControl( FormFleet parent ) {

				#region Initialize

				Name = new ImageLabel();
				Name.SuspendLayout();
				Name.Text = "*nothing*";
				Name.Anchor = AnchorStyles.Left;
				Name.TextAlign = ContentAlignment.MiddleLeft;
				Name.ImageAlign = ContentAlignment.MiddleCenter;
				Name.ForeColor = parent.MainFontColor;
				Name.Padding = new Padding( 0, 1, 0, 1 );
				Name.Margin = new Padding( 2, 0, 2, 0 );
				Name.AutoSize = true;
				//Name.AutoEllipsis = true;
				Name.Visible = false;
				Name.Cursor = Cursors.Help;
				Name.MouseDown += Name_MouseDown;
				Name.ResumeLayout();

				Level = new ShipStatusLevel();
				Level.SuspendLayout();
				Level.Anchor = AnchorStyles.Left | AnchorStyles.Bottom;
				Level.Value = 0;
				Level.MaximumValue = ExpTable.ShipMaximumLevel;
				Level.ValueNext = 0;
				Level.MainFontColor = parent.MainFontColor;
				Level.SubFontColor = parent.SubFontColor;
				//Level.TextNext = "n.";
				Level.Padding = new Padding( 0, 0, 0, 0 );
				Level.Margin = new Padding( 2, 0, 2, 1 );
				Level.AutoSize = true;
				Level.Visible = false;
				Level.ResumeLayout();

				HP = new ShipStatusHP();
				HP.SuspendLayout();
				HP.Anchor = AnchorStyles.Left;
				HP.Value = 0;
				HP.MaximumValue = 0;
				HP.MaximumDigit = 999;
				HP.UsePrevValue = false;
				HP.MainFontColor = parent.MainFontColor;
				HP.SubFontColor = parent.SubFontColor;
				HP.RepairFontColor = parent.SubFontColor;
				HP.Padding = new Padding( 0, 0, 0, 0 );
				HP.Margin = new Padding( 2, 1, 2, 2 );
				HP.AutoSize = true;
				HP.Visible = false;
				HP.ResumeLayout();

				Condition = new ImageLabel();
				Condition.SuspendLayout();
				Condition.Text = "*";
				Condition.Anchor = AnchorStyles.Left | AnchorStyles.Right;
				Condition.ForeColor = parent.MainFontColor;
				Condition.TextAlign = ContentAlignment.BottomRight;
				Condition.ImageAlign = ContentAlignment.MiddleLeft;
				Condition.ImageList = ResourceManager.Instance.Icons;
				Condition.Padding = new Padding( 2, 2, 2, 2 );
				Condition.Margin = new Padding( 2, 0, 2, 0 );
				Condition.Size = new Size( 40, 20 );
				Condition.AutoSize = true;
				Condition.Visible = false;
				Condition.ResumeLayout();

				ShipResource = new ShipStatusResource( parent.ToolTipInfo );
				ShipResource.SuspendLayout();
				ShipResource.FuelCurrent = 0;
				ShipResource.FuelMax = 0;
				ShipResource.AmmoCurrent = 0;
				ShipResource.AmmoMax = 0;
				ShipResource.Anchor = AnchorStyles.Left;
				ShipResource.Padding = new Padding( 0, 2, 0, 1 );
				ShipResource.Margin = new Padding( 2, 0, 2, 0 );
				ShipResource.Size = new Size( 30, 20 );
				ShipResource.AutoSize = false;
				ShipResource.Visible = false;
				ShipResource.ResumeLayout();

				Equipments = new ShipStatusEquipment();
				Equipments.SuspendLayout();
				Equipments.Anchor = AnchorStyles.Left;
				Equipments.Padding = new Padding( 0, 2, 0, 1 );
				Equipments.Margin = new Padding( 2, 0, 2, 0 );
				Equipments.Size = new Size( 40, 20 );
				Equipments.AutoSize = true;
				Equipments.Visible = false;
				Equipments.ResumeLayout();

				ConfigurationChanged( parent );

				ToolTipInfo = parent.ToolTipInfo;
				Parent = parent;
				#endregion

			}

			public TableMemberControl( FormFleet parent, TableLayoutPanel table, int row )
				: this( parent ) {
				AddToTable( table, row );
			}

			public void AddToTable( TableLayoutPanel table, int row ) {

				table.SuspendLayout();
				table.Controls.Add( Name, 0, row );
				table.Controls.Add( Level, 1, row );
				table.Controls.Add( HP, 2, row );
				table.Controls.Add( Condition, 3, row );
				table.Controls.Add( ShipResource, 4, row );
				table.Controls.Add( Equipments, 5, row );
				table.ResumeLayout();

                #region set RowStyle
                RowStyle rs = new RowStyle(SizeType.Absolute, Utility.Configuration.Config.UI.MainFont.FontData.Height + 6);

                if ( table.RowStyles.Count > row )
					table.RowStyles[row] = rs;
				else
					while ( table.RowStyles.Count <= row )
						table.RowStyles.Add( rs );
				#endregion
			}

			private double CalculateFire( ShipData ship ) {
				return CalculatorEx.CalculateFire( ship );
			}

			private double CalculateWeightingAA( ShipData ship )
			{
				return CalculatorEx.CalculateWeightingAA( ship );
			}

			public void Update( int shipMasterID ) {

				KCDatabase db = KCDatabase.Instance;
				ShipData ship = db.Ships[shipMasterID];

				if ( ship != null ) {

					bool isEscaped = KCDatabase.Instance.Fleet[Parent.FleetID].EscapedShipList.Contains( shipMasterID );

					Name.Text = ship.MasterShip.NameWithClass;
					Name.Tag = ship.ShipID;
					ToolTipInfo.SetToolTip( Name,
						string.Format(
							"{0} {1}\n火力: {2}/{3}\n雷装: {4}/{5}\n対空: {6}/{7}\n加权对空: {19:0.##}\n装甲: {8}/{9}\n対潜: {10}/{11}\n回避: {12}/{13}\n索敵: {14}/{15}\n運: {16}\n射程: {17} / 速力: {18}\n(右クリックで図鑑)\n",
							ship.MasterShip.ShipTypeName, ship.NameWithLevel,
							ship.FirepowerBase,
							(ship.MasterShip.ShipType == 7 ||	// 轻空母
							ship.MasterShip.ShipType == 11 ||	// 正规空母
							ship.MasterShip.ShipType == 18) ?	// 装甲空母
							string.Format( "{0}(空母火力:{1:F0})", ship.FirepowerTotal, CalculateFire( ship ) ) :
							ship.FirepowerTotal.ToString(),
							ship.TorpedoBase, ship.TorpedoTotal,
							ship.AABase, ship.AATotal,
							ship.ArmorBase, ship.ArmorTotal,
							ship.ASWBase, ship.ASWTotal,
							ship.EvasionBase, ship.EvasionTotal,
							ship.LOSBase, ship.LOSTotal,
							ship.LuckTotal,
							Constants.GetRange( ship.Range ),
							Constants.GetSpeed( ship.MasterShip.Speed ),
							CalculateWeightingAA( ship )
							) );

					Level.Value = ship.Level;
					Level.ValueNext = ship.ExpNext;

					{
						StringBuilder tip = new StringBuilder();
						tip.AppendFormat( "Total: {0} exp.\r\n", ship.ExpTotal );

						if ( !Utility.Configuration.Config.FormFleet.ShowNextExp )
							tip.AppendFormat( "次のレベルまで: {0} exp.\r\n", ship.ExpNext );

						if ( ship.MasterShip.RemodelAfterShipID != 0 && ship.Level < ship.MasterShip.RemodelAfterLevel ) {
							tip.AppendFormat( "改装まで: Lv. {0} / {1} exp.\r\n", ship.MasterShip.RemodelAfterLevel - ship.Level, ship.ExpNextRemodel );

						} else if ( ship.Level <= 99 ) {

							// 判断隔代改装的经验
							var ship_m = ship.MasterShip.RemodelAfterShip;
							int nextRemodelLevel = 0;
							while ( ship_m != null && ship_m.RemodelAfterShipID != 0 )
							{
								int level = ship_m.RemodelAfterLevel;
								if ( ship.Level < level ) {
									tip.AppendFormat( "改装まで: Lv. {0} / {1} exp.\n", level - ship.Level, Math.Max( ExpTable.ShipExp[level].Total - ship.ExpTotal, 0 ) );
									break;
								}

								if ( level <= nextRemodelLevel ) {
									// 发现可能的循环改造,跳出
									break;
								}
								nextRemodelLevel = level;
								ship_m = ship_m.RemodelAfterShip;
							}

							tip.AppendFormat( "Lv99まで: {0} exp.", Math.Max( ExpTable.GetExpToLevelShip( ship.ExpTotal, 99 ), 0 ) );

						} else {
							tip.AppendFormat( "Lv{0}まで: {1} exp.\r\n", ExpTable.ShipMaximumLevel, Math.Max( ExpTable.GetExpToLevelShip( ship.ExpTotal, ExpTable.ShipMaximumLevel ), 0 ) );

						}

						ToolTipInfo.SetToolTip( Level, tip.ToString() );
					}

					HP.Value = ship.HPCurrent;
					HP.MaximumValue = ship.HPMax;
					{
						int dockID = ship.RepairingDockID;

						HP.RepairTime = null;
						if ( dockID != -1 ) {
							HP.RepairTime = db.Docks[dockID].CompletionTime;
						}
					}
					if ( isEscaped ) {
						HP.BackColor = Color.Silver;
					} else {
						HP.BackColor = Utility.Configuration.Config.UI.BackColor;
					}
					{
						StringBuilder sb = new StringBuilder();
						double hprate = (double)ship.HPCurrent / ship.HPMax;

						sb.AppendFormat( "HP: {0:0.0}% [{1}]\n", hprate * 100, Constants.GetDamageState( hprate ) );
						if ( isEscaped ) {
							sb.AppendLine( "退避中" );
						} else if ( hprate > 0.50 ) {
							sb.AppendFormat( "中破まで: {0} / 大破まで: {1}\n", ship.HPCurrent - ship.HPMax / 2, ship.HPCurrent - ship.HPMax / 4 );
						} else if ( hprate > 0.25 ) {
							sb.AppendFormat( "大破まで: {0}\n", ship.HPCurrent - ship.HPMax / 4 );
						} else {
							sb.AppendLine( "大破しています!" );
						}

						if ( ship.RepairTime > 0 ) {
							var span = DateTimeHelper.FromAPITimeSpan( ship.RepairTime );
							sb.AppendFormat( "入渠時間: {0} @ {1}",
								DateTimeHelper.ToTimeRemainString( span ),
								DateTimeHelper.ToTimeRemainString( new TimeSpan( span.Add( new TimeSpan( 0, 0, -30 ) ).Ticks / ( ship.HPMax - ship.HPCurrent ) ) ) );
						}

						ToolTipInfo.SetToolTip( HP, sb.ToString() );
					}

					Condition.Text = ship.Condition.ToString();
					if ( ship.Condition < 20 ) {
						Condition.ImageIndex = (int)ResourceManager.IconContent.ConditionVeryTired;
					} else if ( ship.Condition < 30 ) {
						Condition.ImageIndex = (int)ResourceManager.IconContent.ConditionTired;
					} else if ( ship.Condition < 40 ) {
						Condition.ImageIndex = (int)ResourceManager.IconContent.ConditionLittleTired;
					} else if ( ship.Condition < 50 ) {
						Condition.ImageIndex = (int)ResourceManager.IconContent.ConditionNormal;
					} else {
						Condition.ImageIndex = (int)ResourceManager.IconContent.ConditionSparkle;
					}
					if ( ship.Condition < 49 ) {
						TimeSpan ts = new TimeSpan( 0, (int)Math.Ceiling( ( 49 - ship.Condition ) / 3.0 ) * 3, 0 );
						ToolTipInfo.SetToolTip( Condition, string.Format( "完全回復まで 約 {0:D2}:{1:D2}", (int)ts.TotalMinutes, (int)ts.Seconds ) );
					} else {
						ToolTipInfo.SetToolTip( Condition, string.Format( "あと {0} 回遠征可能", (int)Math.Ceiling( ( ship.Condition - 49 ) / 3.0 ) ) );
					}

					ShipResource.SetResources( ship.Fuel, ship.FuelMax, ship.Ammo, ship.AmmoMax );

					Equipments.SetSlotList( ship );
					ToolTipInfo.SetToolTip( Equipments, GetEquipmentString( ship ) );

				} else {
					Name.Tag = -1;
				}

				Name.Visible =
				Level.Visible =
				HP.Visible =
				Condition.Visible =
				ShipResource.Visible =
				Equipments.Visible = shipMasterID != -1;

			}

			void Name_MouseDown( object sender, MouseEventArgs e ) {
				int? id = Name.Tag as int?;

				if ( id != null && id != -1 && ( e.Button & System.Windows.Forms.MouseButtons.Right ) != 0 ) {
					new DialogAlbumMasterShip( (int)id ).Show( Parent );
				}

			}

			private string GetEquipmentString( ShipData ship ) {
				StringBuilder sb = new StringBuilder();

				for ( int i = 0; i < ship.Slot.Count; i++ ) {
					var eq = ship.SlotInstance[i];
					if ( eq != null )
						sb.AppendFormat( "[{0}/{1}] {2}\r\n", ship.Aircraft[i], ship.MasterShip.Aircraft[i], eq.NameWithLevel );
				}

				{
					var exslot = ship.ExpansionSlotInstance;
					if ( exslot != null )
						sb.AppendFormat( "補強: {0}\r\n", exslot.NameWithLevel );
				}

				int[] slotmaster = ship.SlotMaster.ToArray();

				sb.AppendFormat( "\r\n昼戦: {0}", Constants.GetDayAttackKind( Calculator.GetDayAttackKind( slotmaster, ship.ShipID, -1 ) ) );
				{
					int shelling = ship.ShellingPower;
					int aircraft = ship.AircraftPower;
					if ( shelling > 0 ) {
						if ( aircraft > 0 )
							sb.AppendFormat( " - 砲撃: {0} / 空撃: {1}", shelling, aircraft );
						else
							sb.AppendFormat( " - 威力: {0}", shelling );
					} else if ( aircraft > 0 )
						sb.AppendFormat( " - 威力: {0}", aircraft );
				}
				sb.AppendLine();

				sb.AppendFormat( "夜戦: {0}", Constants.GetNightAttackKind( Calculator.GetNightAttackKind( slotmaster, ship.ShipID, -1 ) ) );
				{
					int night = ship.NightBattlePower;
					if ( night > 0 ) {
						sb.AppendFormat( " - 威力: {0}", night );
					}
				}
				sb.AppendLine();

				{
					int torpedo = ship.TorpedoPower;
					int asw = ship.AntiSubmarinePower;
					if ( torpedo > 0 ) {
						if ( asw > 0 )
							sb.AppendFormat( "雷撃: {0} / 対潜: {1}\r\n", torpedo, asw );
						else
							sb.AppendFormat( "雷撃: {0}\r\n", torpedo );
					} else if ( asw > 0 )
						sb.AppendFormat( "対潜: {0}\r\n", asw );
				}

				{
					int aacutin = Calculator.GetAACutinKind( ship.ShipID, slotmaster );
					if ( aacutin != 0 ) {
						sb.AppendFormat( "対空: {0}\r\n", Constants.GetAACutinKind( aacutin ) );
					}
				}
				{
					int airsup = Calculator.GetAirSuperiority( ship );
					int airbattle = ship.AirBattlePower;
					if ( airsup > 0 ) {
						if ( airbattle > 0 )
							sb.AppendFormat( "制空戦力: {0} / 航空威力: {1}\r\n", airsup, airbattle );
						else
							sb.AppendFormat( "制空戦力: {0}\r\n", airsup );
					} else if ( airbattle > 0 )
						sb.AppendFormat( "航空威力: {0}\r\n", airbattle );
				}

				return sb.ToString();
			}

			public void ConfigurationChanged( FormFleet parent ) {
				Name.Font = parent.MainFont;
				Level.MainFont = parent.MainFont;
				Level.SubFont = parent.SubFont;
				HP.MainFont = parent.MainFont;
				HP.SubFont = parent.SubFont;
				Condition.Font = parent.MainFont;
				Equipments.Font = parent.SubFont;
			}
		}

		public int FleetID { get; private set; }

		public Font MainFont { get; set; }
		public Font SubFont { get; set; }
		public Color MainFontColor { get; set; }
		public Color SubFontColor { get; set; }

		private TableFleetControl ControlFleet;
		private TableMemberControl[] ControlMember;

		private Pen LinePen = Pens.Silver;

		public FormFleet( FormMain parent, int fleetID ) {
			this.SuspendLayoutForDpiScale();
			InitializeComponent();

			FleetID = fleetID;
			Utility.SystemEvents.UpdateTimerTick += UpdateTimerTick;

			ConfigurationChanged();

			MainFontColor = Utility.Configuration.Config.UI.ForeColor;
			SubFontColor = Utility.Configuration.Config.UI.SubForeColor;

			//ui init

			ControlHelper.SetDoubleBuffered( TableFleet );
			ControlHelper.SetDoubleBuffered( TableMember );

			TableFleet.Visible = false;
			TableFleet.SuspendLayout();
			TableFleet.BorderStyle = BorderStyle.FixedSingle;
			ControlFleet = new TableFleetControl( this, TableFleet );
			TableFleet.ResumeLayout();

			TableMember.SuspendLayout();
			ControlMember = new TableMemberControl[6];
			for ( int i = 0; i < ControlMember.Length; i++ ) {
				ControlMember[i] = new TableMemberControl( this, TableMember, i );
			}
			TableMember.ResumeLayout();

			ConfigurationChanged();		//fixme: 苦渋の決断

			Icon = ResourceManager.ImageToIcon( ResourceManager.Instance.Icons.Images[(int)ResourceManager.IconContent.FormFleet] );

			this.ResumeLayoutForDpiScale();
		}

		private void FormFleet_Load( object sender, EventArgs e ) {

			Text = string.Format( "#{0}", FleetID );

			APIObserver o = APIObserver.Instance;

			o.APIList["api_req_hensei/change"].RequestReceived += ChangeOrganization;
			o.APIList["api_req_kousyou/destroyship"].RequestReceived += ChangeOrganization;
			o.APIList["api_req_kaisou/remodeling"].RequestReceived += ChangeOrganization;
			o.APIList["api_req_kaisou/powerup"].ResponseReceived += ChangeOrganization;
			o.APIList["api_req_hensei/preset_select"].ResponseReceived += ChangeOrganization;

			o.APIList["api_req_nyukyo/start"].RequestReceived += Updated;
			o.APIList["api_req_nyukyo/speedchange"].RequestReceived += Updated;
			o.APIList["api_req_hensei/change"].RequestReceived += Updated;
			o.APIList["api_req_kousyou/destroyship"].RequestReceived += Updated;
			o.APIList["api_req_member/updatedeckname"].RequestReceived += Updated;
			o.APIList["api_req_kaisou/remodeling"].RequestReceived += Updated;
			o.APIList["api_req_map/start"].RequestReceived += Updated;
			o.APIList["api_req_hensei/combined"].RequestReceived += Updated;

			o.APIList["api_port/port"].ResponseReceived += Updated;
			o.APIList["api_get_member/ship2"].ResponseReceived += Updated;
			o.APIList["api_get_member/ndock"].ResponseReceived += Updated;
			o.APIList["api_req_kousyou/getship"].ResponseReceived += Updated;
			o.APIList["api_req_hokyu/charge"].ResponseReceived += Updated;
			o.APIList["api_req_kousyou/destroyship"].ResponseReceived += Updated;
			o.APIList["api_get_member/ship3"].ResponseReceived += Updated;
			o.APIList["api_req_kaisou/powerup"].ResponseReceived += Updated;		//requestのほうは面倒なのでこちらでまとめてやる
			o.APIList["api_get_member/deck"].ResponseReceived += Updated;
			o.APIList["api_get_member/slot_item"].ResponseReceived += Updated;
			o.APIList["api_req_map/start"].ResponseReceived += Updated;
			o.APIList["api_req_map/next"].ResponseReceived += Updated;
			o.APIList["api_get_member/ship_deck"].ResponseReceived += Updated;
			o.APIList["api_req_hensei/preset_select"].ResponseReceived += Updated;
			o.APIList["api_req_kaisou/slot_exchange_index"].ResponseReceived += Updated;
			o.APIList["api_get_member/require_info"].ResponseReceived += Updated;
			o.APIList["api_req_kaisou/slot_deprive"].ResponseReceived += Updated;

			//追加するときは FormFleetOverview にも同様に追加してください

			Utility.Configuration.Instance.ConfigurationChanged += ConfigurationChanged;
		}

		void Updated( string apiname, dynamic data ) {

			if ( IsRemodeling ) {
				if ( apiname == "api_get_member/slot_item" ||
					 apiname == "api_get_member/require_info" )
					IsRemodeling = false;
				else
					return;
			}
			if ( apiname == "api_req_kaisou/remodeling" ) {
				IsRemodeling = true;
				return;
			}

			KCDatabase db = KCDatabase.Instance;

			if ( db.Ships.Count == 0 ) return;

			FleetData fleet = db.Fleet.Fleets[FleetID];
			if ( fleet == null ) return;

			TableFleet.SuspendLayout();
			ControlFleet.Update( fleet );
			TableFleet.Visible = true;
			TableFleet.ResumeLayout();

			TableMember.SuspendLayout();
			for ( int i = 0; i < ControlMember.Length; i++ ) {
				ControlMember[i].Update( fleet.Members[i] );
			}
			TableMember.ResumeLayout();

			if ( Icon != null ) ResourceManager.DestroyIcon( Icon );
			Icon = ResourceManager.ImageToIcon( ControlFleet.StateMain.Image );
			if ( Parent != null ) Parent.Refresh();		//アイコンを更新するため

		}

		void ChangeOrganization( string apiname, dynamic data ) {

			ControlFleet.ResetState();

		}

		void UpdateTimerTick() {

			TableFleet.SuspendLayout();
			{
				FleetData fleet = KCDatabase.Instance.Fleet.Fleets[FleetID];
				if ( fleet != null )
					ControlFleet.Refresh();

			}
			TableFleet.ResumeLayout();

			TableMember.SuspendLayout();
			for ( int i = 0; i < ControlMember.Length; i++ ) {
				ControlMember[i].HP.Refresh();
			}
			TableMember.ResumeLayout();

		}

		//艦隊編成のコピー
		private void ContextMenuFleet_CopyFleet_Click( object sender, EventArgs e ) {

			StringBuilder sb = new StringBuilder();
			KCDatabase db = KCDatabase.Instance;
			FleetData fleet = db.Fleet[FleetID];
			if ( fleet == null ) return;

			sb.AppendFormat( "{0}\t制空戦力{1}/索敵能力{2}\r\n", fleet.Name, fleet.GetAirSuperiority(), fleet.GetSearchingAbilityString() );
			for ( int i = 0; i < fleet.Members.Count; i++ ) {
				if ( fleet[i] == -1 )
					continue;

				ShipData ship = db.Ships[fleet[i]];

				sb.AppendFormat( "{0}/{1}\t", ship.MasterShip.Name, ship.Level );

				var eq = ship.AllSlotInstance;

				if ( eq != null ) {
					for ( int j = 0; j < eq.Count; j++ ) {

						if ( eq[j] == null ) continue;

						int count = 1;
						for ( int k = j + 1; k < eq.Count; k++ ) {
							if ( eq[k] != null && eq[k].EquipmentID == eq[j].EquipmentID && eq[k].Level == eq[j].Level && eq[k].AircraftLevel == eq[j].AircraftLevel ) {
								count++;
							} else {
								break;
							}
						}

						if ( count == 1 ) {
							sb.AppendFormat( "{0}{1}", j == 0 ? "" : "/", eq[j].NameWithLevel );
						} else {
							sb.AppendFormat( "{0}{1}x{2}", j == 0 ? "" : "/", eq[j].NameWithLevel, count );
						}

						j += count - 1;
					}
				}

				sb.AppendLine();
			}

			Clipboard.SetData( DataFormats.StringFormat, sb.ToString() );
		}

		private void ContextMenuFleet_Opening( object sender, CancelEventArgs e ) {

			ContextMenuFleet_Capture.Visible = Utility.Configuration.Config.Debug.EnableDebugMenu;

		}

		/// <summary>
		/// 「艦隊デッキビルダー」用編成コピー
		/// <see cref="http://www.kancolle-calc.net/deckbuilder.html"/>
		/// </summary>
		private void ContextMenuFleet_CopyFleetDeckBuilder_Click( object sender, EventArgs e ) {

			StringBuilder sb = new StringBuilder();
			KCDatabase db = KCDatabase.Instance;

			// 手書き json の悲しみ

			sb.Append( @"{""version"":3," );

			foreach ( var fleet in db.Fleet.Fleets.Values ) {
				if ( fleet == null ) continue;

				sb.AppendFormat( @"""f{0}"":{{", fleet.FleetID );

				int shipcount = 1;
				foreach ( var ship in fleet.MembersInstance ) {
					if ( ship == null ) break;

					sb.AppendFormat( @"""s{0}"":{{""id"":{1},""lv"":{2},""luck"":{3},""items"":{{",
						shipcount,
						ship.ShipID,
						ship.Level,
						ship.LuckBase );

					if ( ship.ExpansionSlot <= 0 )
						sb.Append( @"""ix"":{}," );
					else
						sb.AppendFormat( @"""ix"":{{""id"":{0}}},", ship.ExpansionSlotMaster );

					int eqcount = 1;
					foreach ( var eq in ship.SlotInstance ) {
						if ( eq == null ) break;

						// 水偵は改修レベル優先(熟練度にすると改修レベルに誤解されて 33式 の結果がずれるため)
						sb.AppendFormat( @"""i{0}"":{{""id"":{1},""rf"":{2}}},", eqcount, eq.EquipmentID, eq.MasterEquipment.CategoryType == 10 ? eq.Level : Math.Max( eq.Level, eq.AircraftLevel ) );

						eqcount++;
					}

					if ( eqcount > 0 )
						sb.Remove( sb.Length - 1, 1 );		// remove ","
					sb.Append( @"}}," );

					shipcount++;
				}

				if ( shipcount > 0 )
					sb.Remove( sb.Length - 1, 1 );		// remove ","
				sb.Append( @"}," );

			}

			sb.Remove( sb.Length - 1, 1 );		// remove ","
			sb.Append( @"}" );

			Clipboard.SetData( DataFormats.StringFormat, sb.ToString() );
		}

		private void ContextMenuFleet_Capture_Click( object sender, EventArgs e ) {

			using ( Bitmap bitmap = new Bitmap( this.ClientSize.Width, this.ClientSize.Height ) ) {
				this.DrawToBitmap( bitmap, this.ClientRectangle );

				Clipboard.SetData( DataFormats.Bitmap, bitmap );
			}
		}

		void ConfigurationChanged() {

			var c = Utility.Configuration.Config;

			MainFont = Font = c.UI.MainFont;
			SubFont = c.UI.SubFont;

			LinePen = new Pen( c.UI.LineColor.ColorData );

			AutoScroll = ContextMenuFleet_IsScrollable.Checked = c.FormFleet.IsScrollable;
			ContextMenuFleet_FixShipNameWidth.Checked = c.FormFleet.FixShipNameWidth;

			if ( ControlFleet != null && KCDatabase.Instance.Fleet[FleetID] != null ) {
				ControlFleet.ConfigurationChanged( this );
				ControlFleet.Update( KCDatabase.Instance.Fleet[FleetID] );
			}

			if ( ControlMember != null ) {
				bool showAircraft = c.FormFleet.ShowAircraft;
				bool fixShipNameWidth = c.FormFleet.FixShipNameWidth;
				bool shortHPBar = c.FormFleet.ShortenHPBar;
				bool colorMorphing = c.UI.BarColorMorphing;
				//Color[] colorScheme = c.UI.BarColorScheme.Select( col => col.ColorData ).ToArray();
				bool showNext = c.FormFleet.ShowNextExp;
				var levelVisibility = c.FormFleet.EquipmentLevelVisibility;
				bool textProficiency = c.FormFleet.ShowTextProficiency;
				for ( int i = 0; i < ControlMember.Length; i++ ) {
					ControlMember[i].Equipments.ShowAircraft = showAircraft;
					if ( fixShipNameWidth ) {
						ControlMember[i].Name.AutoSize = false;
						ControlMember[i].Name.Size = new Size( 40, 20 );
					} else {
						ControlMember[i].Name.AutoSize = true;
					}

					ControlMember[i].HP.Text = shortHPBar ? "" : "HP:";
					ControlMember[i].HP.HPBar.ColorMorphing = colorMorphing;
					ControlMember[i].HP.HPBar.ReloadBarSettings();
					ControlMember[i].Level.TextNext = showNext ? "next:" : null;
					ControlMember[i].Equipments.LevelVisibility = levelVisibility;
					ControlMember[i].Equipments.TextProficiency = textProficiency;
					ControlMember[i].ShipResource.BarFuel.ColorMorphing =
					ControlMember[i].ShipResource.BarAmmo.ColorMorphing = colorMorphing;
					ControlMember[i].ShipResource.BarFuel.ReloadBarSettings();
					ControlMember[i].ShipResource.BarAmmo.ReloadBarSettings();

					ControlMember[i].ConfigurationChanged( this );
				}
			}
			TableMember.PerformLayout();		//fixme:サイズ変更に親パネルが追随しない

		}

		//よく考えたら別の艦隊タブと同期しないといけないので封印
		private void ContextMenuFleet_IsScrollable_Click( object sender, EventArgs e ) {
			Utility.Configuration.Config.FormFleet.IsScrollable = ContextMenuFleet_IsScrollable.Checked;
			ConfigurationChanged();
		}

		private void ContextMenuFleet_FixShipNameWidth_Click( object sender, EventArgs e ) {
			Utility.Configuration.Config.FormFleet.FixShipNameWidth = ContextMenuFleet_FixShipNameWidth.Checked;
			ConfigurationChanged();
		}

		private void TableMember_CellPaint( object sender, TableLayoutCellPaintEventArgs e ) {
			e.Graphics.DrawLine( LinePen, e.CellBounds.X, e.CellBounds.Bottom - 1, e.CellBounds.Right - 1, e.CellBounds.Bottom - 1 );
		}

		public override string GetPersistString()
		{
			return "Fleet #" + FleetID.ToString();
		}

	}

}

redpajama_set_name: RedPajamaGithub


Cool, effortless and thrilling; an energy source for men.
The thumping heartbeat of a city, the freedom of moving on your own terms.The antidote to the daily grind.
Lively citrus notes give way to spicy pepper notes, whilst a bloom of deep floral-woody notes seal the seductive deal.
Top Notes: Mint, Pink Pepper, Pineapple Leaf, Lemon.
Heart Notes: Freesia, Nutmeg, Juniper, Clary Sage.
Base Notes: Teak Wood, Leather, Vanilla.


text:
UN Art and Gifts
Peace and Security
UN Affairs
Law and Crime Prevention
The Lid is On
UN Gender Focus
UN and Africa
Podcast Classics
All Statements
Selected Speeches
Press Encounters
Official Travels
UN Video
Audio Hub
UN human rights report shows rise in reprisals against activists, victims
UN Colombia
A wide range of human rights activists have been targeted in Colombia, especially those living in rural areas.Human and environmental rights campaigners are one focus of a new UNEP/OHCHR agreement signed 16 August, 2019.
Cases of intimidation and retaliation against victims, civil society and activists who cooperate with the United Nations are on the rise, a new report from the UN Human Rights Office reveals.
The study documents incidents from nearly 50 countries, such as the detention and imprisonment of activists, and the filming of participants at meetings, including on UN premises, without their consent.
Andrew Gilmour, UN Assistant Secretary-General for Human Rights, said there are also cases of authorities threatening and harassing relatives of activists.
🆕 UN Secretary-General Report documents alleged #reprisals against victims, members of civil society and activists for cooperating with the @UN in 4⃣8⃣ countries. Learn more: https://t.co/0wBG61S10k pic.twitter.com/zhZ9Wg34a8
— UN Human Rights (@UNHumanRights) September 19, 2019
"Some governments seem prepared to go to almost any lengths to punish people who cooperate with us. This may actually underscore the justice of the victims' causes," he said.
The report covers the period from 1 June 2018 to 31 May of this year. It also notes misuse of online spaces to promote hate speech, cyberbullying and smear campaigns, particularly against women and lesbian, gay, bisexual, transgender and intersex persons.
Mr. Gilmour expressed concern over the continued trend in the use of national security arguments and counter-terrorism strategies as justification for blocking access to the United Nations.
"Reported cases include individuals or organizations being charged with terrorism, blamed for cooperation with foreign entities or accused of damaging the reputation or security of the State. These have also been used to justify restrictions on foreign funding," he wrote in the report's conclusions and recommendations.
"A disproportionate number of cases of enforced disappearance or detention, many which have been deemed arbitrary by United Nations experts, relate to these national security arguments. This is a worrisome trend that I have addressed publicly, including in my previous report, and, regrettably, it continues."
He said the UN will continue to strengthen its response to these developments, including through improved reporting on allegations. However, he added, the onus remains on countries as "Member States must be accountable for their own actions and practices, and provide remedy when reprisals occur."
♦ Receive daily updates directly in your inbox - Subscribe here to a topic.
♦ Download the UN News app for your iOS or Android devices.
FEATURE: Story of Japan's 'Schindler' offers lessons for tackling contemporary xenophobia
Bring human rights to discussion tables and into decisions at Davos, UN experts urge
Human rights under attack, 'no longer a priority; a pariah' – UN rights chief
News Tracker: Past Stories on This Issue
Human rights are everyone's business, amid relentless crises around world: UN's Bachelet
The relentless outbreak of crises around the world – from the fires in the Amazon to "carnage" in Syria and demonstrations in Hong Kong, Russia, Indonesian Papua and elsewhere - risk pushing the world "further and further away from global solutions to global problems", the UN's top rights official said on Wednesday.
Navigate the News
Information for Broadcasters
UN System Links
UN Journal
Meetings Coverage
SG Twitter
Spokesperson's Office
Latest Statements
Briefing Highlights
Briefing Transcripts
Notes to Correspondents
UN News App
Contact UN News

redpajama_set_name: RedPajamaCommonCrawl


At the past weekend, the Public Relations Unit of the Anti-Corruption Commission (ACC) announced the arrest of the former Executive Director of the Sierra Leone Maritime Administration, Dr. Sarah Bendu and her husband, Fourah College Economics and Accounting tutor, Dr. Dante Bendu.
The ACC announcement published on Friday, 11th January, 2018 detailed that Dr. Sarah Bendu has been under investigation since the 22nd of December, 2018, following alleged massive corruption at SLMA during her brief tenure.
ACC accuses her of directly interfering with its investigations, manipulating witnesses, attempting to mislead ACC through interference, with known witnesses and ACC suspects and other related obstruction actions.
ACC stated that Dr. Sarah Bendu and her husband were arrested to protect the integrity of the investigations against her going forward.
ACC notes that it thrives on the integrity of investigations in the public domain and as such will not tolerate any tampering of witnesses or investigation by any individual under the circumstances.
In the light of the above, ACC says it wishes to reassure the general public of its commitment to protect government property, revenue and resources.


I believe there are pivotal moments in life that you will look back upon and identify as your tipping point. After returning from a two day Women Powering Technology (WPT) conference in NYC, I can unequivocally say this was the trip that changed my perspective.
WPT is a non-profit organization headed by Angelique Mohring and Tabitha Creighton. Both women, who run their own tech companies, noticed the need and created a platform to inspire, support, and empower women in and entering technology. In partnership with the Canadian Consulate, they organized two full days of intimate programming that included 10 Canadian tech-savvy entrepreneurs.
A recent Forbes report noted that women entrepreneurs out earn men by 14%, so why does it appear that we face so many more hurdles than our male counterparts? At the Ernst & Young breakout session, we had the opportunity to discuss this with Shala Burroughs (Women Innovate Mobile) & Jennifer Shaw (Bella Minds) and concluded that there are a number of reoccurring themes including suffering from imposture syndrome and not making the ask.
Taking part in this program helped me to gain new insight and knowledge by connecting with key executives from Estée Lauder, Pitney Bowes, American Express, Little Miss Match, and Verizon.
There is no formula to succeeding as an entrepreneur, but knowing that there is an outlet you can plug in to, can give you the power that you need to persevere.


Quick Take: Simple flavors and heavy yeast emphasis gives this a different body and complexion. This is a Tripel brimming with Belgian yeast that drinks like a boozy summer beer and avoids the traditional sweet, bubble gum or banana qualities. For me, I'd have this as a change of pace Tripel, but it's not my first choice.
Brew Facts: Originally brewed in 1990, Tripel Threat was recognized by Michael Jackson (the beer guy) as the first commercially brewed Belgian Beer in the US. This beer went on to win a Gold Medal at the Great American Beer Festival in 1991. Now, Tripel Threat is contract brewed by Mercury Brewing Company.
Appearance: Pours gold with the slightest haze, like a glowing bulb of liquid wheat. This is what the look of a golden Tripel is all about with just a few tiny bubbles rushing to the surface. A small, thin white film rotates lazily around the middle like a spinning island in a pool of melted butter. I'd love to vacation there.
Aroma: The aroma is peppery with sweet citrus tang and the distinct smell of Belgian yeast. An undertone of pear clings to the dominant sweet bread. There is a slight, toasty grain. Not a particularly complex or surprising aroma, but a damn fine one.
Taste/Mouth Feel: A sip reveals Tripel Threat to be the anti-gassy. Near flat with the only element of carbonation happening not in the mouth, but as the beer cascades down the throat. It does have some body thanks to an abundance of yeast. The front seems like it will swell to the usual Tripel bready sweet with a citrus bite, but the sugar never comes. This is biscuity to the point of wanting to pull out a bread knife and slice off another glass. A citrus and alcohol tang comes along for the ride, slicking its way past the bread. After the initial liquid clears the mouth, it leaves a buttery slick in the mouth along with a dollop of dough to slide around on your taste buds. The slightest spice surfaces around the time you feel the warming spread through your chest.
Final Thoughts: Tripels typically have a sweet and crisp richness that can overwhelm the palate. This is definitely different and tastes like a version of a Tripel that pre-dates the rest. Simple flavors and heavy yeast emphasis gives this a different body and complexion. Deep this is not, but not all beers need to be. This is a Tripel brimming with Belgian yeast that drinks like a boozy summer beer and avoids the traditional sweet, bubble gum or banana qualities. The lack of sweet is disconcerting at first, second and third, but this is a nice alternative for Belgian beer drinkers that might be tired of the traditional. For me, I'd have this as a change of pace Tripel, but it's not my first choice.


text:
Love Horoscope For Friday, March 11, 2022
By Aria Gmitter — Written on Mar 10, 2022
Photo: vhpicstock/Shutterstock.com
For Friday's love horoscope by zodiac sign, resident astrologer Aria Gmitter shares how current astrological events affect you on March 11, 2022.
RELATED: The Luckiest Day For The Month Of March 2022 For Each Zodiac Sign
What today's love horoscope has in store for each zodiac sign on Friday, March 11, 2022:
Sometimes love demands your attention, and then there are times when you prefer to avoid it at all costs.
Today, it can feel as though the attention you crave is not coming your way easily. But, when you feel the pangs of emptiness that can come when you fear love has been lost, look deeper within. The day can be a wonderful teacher of self-confidence and help you to connect to peace that comes from within.
RELATED: Why Are Aries So Impulsive?
Love can require extensive bravery, and today, you may feel pushed to be more confident than usual due to circumstances out of your control.
This is no time to put on a mask and pretend that you are OK through it all. Be honest, Taurus. Say what needs to be said so that your significant other is able to see the impact of their choices on your life.
RELATED: 5 Reasons Why A Taurus Will Love You Better Than Anyone Else
When someone confides in your fully, it can be hard to hear, but there's a lot to be said about learning who you are falling in love with. You may not know all that there is to know without having gone through a tough time together.
So, be the shoulder to lean on when you can, and remember to comfort from a place of humanity and respect, and not from a need to have things your way.
RELATED: What Do Geminis Find Attractive
Commitment can start off as emotions, but soon life happens and you learn to do the ins and outs of romance on a day-to-day basis. This can lead to a lackluster existence with your significant other.
What your relationship needs are a boost of fun and play. So, for today, try to do one thing that you both enjoy, and perhaps make it a routine part of your life as a couple.
RELATED: 10 Best Love Quotes That Perfectly Describe The Cancer Zodiac Sign
The day can be a grind, so you'll want and need the comfort of someone's loving arms to run to. Today, don't be afraid to ask for that last-minute date or a visit to have dinner together.
The time to chill and enjoy something simple with a loved one is never a bad idea, especially after a long, hard day at work.
RELATED: Leo Friendship Compatibility & 10 Truths About Having A Leo Friend
There are so many wonderful and warm things that you can do when you let yourself be a die-hard romantic.
You may enjoy sweet conversations or go out for something fun that you don't get to do too often such as attending a movie or having dinner at your favorite restaurant... then go for a long, leisurely walk beneath the stars.
RELATED: Why Are Virgos So Successful?
It's not easy to blend two families into one family, especially when everyone has their own strong personality or wants to do things a certain way.
Finding a compromise will not be easy, but if there is lots of love, there can also be lots of solutions that you can try together as a team.
RELATED: 10 Compelling Reasons Why Every Zodiac Sign Should Date A Libra (At Least Once)
An argument can easily become an ordeal if not managed well. Set your own ego aside when you can to listen intentionally and to show you care by allowing your partner to speak free of interruptions.
You may be so surprised at how easily one little thing can change the entire process when you are in the middle of a tough conversation you can't avoid having.
RELATED: Why Are Scorpios So Secretive?
People are not possessions, and no one knows this more than you Sagittarius. So, when you sense a person is trying to usurp your personal space or tell you how things will happen, you may find that you dislike the direction things are headed and move on.
Don't be surprised if you have a particular someone whom you used to speak to reach out again. Be mindful of what you want and not just what you think you can get down the road, should things work out.
RELATED: What Makes A Sagittarius Happy?
How you love is so personal and it's your way of showing your innermost thoughts and feelings about an individual you believe is worth all you have to offer.
The Love Horoscope For Each Zodiac Sign On Tuesday, January 31, 2023
Monthly Love Horoscope For All Zodiac Signs For February 2023
The 3 Zodiac Signs Who Are The Luckiest In Love On January 31, 2023
This may come with a few moments of doubts and uncertainty, but Capricorn, feelings of wondering are normal. It's what you do with them and how you feel that matters.
RELATED: Why Is Capricorn So Attractive?
It can be so hard to step away from the past, especially if it was full of negative memories and pain.
This time of your life was meant to help you heal so that you can find what you're looking for in a fulfilling relationship with a person who treasures you for all that you are.
RELATED: 4 Zodiac Signs That Are Aquarius Soulmates
Friends are wonderful for helping you remember what you forgot. Tap into the resources of your friendships when you forget why a relationship you left didn't work out.
Then ask them to remind you of all the things you love and who you once were, as it's so easy to forget when you are moving on to a new chapter of your life.
RELATED: 9 Ways A Pisces Will Be The Most Confusing Person You'll Ever Meet
The Zodiac Sign You'll Have The Best S*x With
Zodiac Signs That Can't Stop Cheating, Ranked From Most To Least Likely
Love Might Be Calling Your Name! Get An Accurate Prediction Today
The Best (And Worst) Zodiac Compatibility For Each Sign
Aria Gmitter, M.S, M.F.A., is YourTango's Senior Editor of Horoscopes and Spirituality. She studies with the Midwestern School of Astrology and is a member of the South Florida Astrological Association.
Get your horoscope delivered free to your inbox daily!


text:
NetScientific portfolio company, Glycotest Inc., appoints world leading medical advisory board chaired by David Chernoff, M.D.
Instinctif Partners > News > Client News > NetScientific portfolio company, Glycotest Inc., appoints world leading medical advisory board chaired by David Chernoff, M.D.
London, UK – 6 January 2016 – NetScientific plc ("NetScientific" or the "Group", AIM: NSCI), the transatlantic biomedical and healthcare technology group, appoints a medical advisory board of leading liver experts to advise on the development of Glycotest's diagnostic tests for liver related diseases.
Scott Friedman, M.D. and Douglas Dieterich, M.D have been appointed to the advisory board alongside the chair, David Chernoff, M.D.
Glycotest is a molecular diagnostics company commercialising clinical laboratory testing services to reduce mortality and increase survival for patients at risk from liver cancers and fibrosis–cirrhosis. Glycotest employs unique non-invasive blood tests based on proprietary serum biomarkers, biomarker panels and assay methodology that exploit novel sugar-based disease signal chemistry.
David Chernoff, MD is a molecular diagnostics industry veteran who has played pivotal roles in the launch of multiple products such Vectra DA (Crescendo Bioscience), AlloMap (CareDx) and HIV, HBV and HCV bDNA tests (Chiron Diagnostics). He brings both senior clinical leadership experience and a key commercial perspective to his role as chair of Glycotest's Medical Advisory Board. Dr. Chernoff has served as Chief Medical Officer at multiple entrepreneurial molecular diagnostics companies, most recently Crescendo Bioscience, and previously was Vice President of Corporate Technology at Elan Pharmaceuticals and Medical Director at Chiron Diagnostics. Dr. Chernoff holds an MD degree from New York University and completed his medical training at the University of California, San Francisco.
Scott Friedman, MD is Chief of the Division of Liver Diseases and Dean for Therapeutic Discovery at the Icahn School of Medicine at Mount Sinai, New York and was President of the American Association for the Study of Liver Diseases (AASLD) in 2009. Dr. Friedman is one of the foremost leaders in the field of liver fibrosis, having been the first to isolate and characterise the causative cell type. He contributes a wealth of experience with emerging diagnostic and therapeutic approaches in serious liver disease. Dr. Friedman received his MD degree from Mount Sinai and completed his training at Beth Israel Hospital, Boston and the University of California, San Francisco.
Douglas Dieterich, MD is Professor of Medicine at the Icahn School of Medicine at Mount Sinai, New York with appointments in the Divisions of Liver Diseases, Gastroenterology and Infectious Diseases, and is the newly appointed Director for the Institute for Liver Medicine at the Mount Sinai Health System. Chronic hepatitis B and C are key focal areas of Dr. Dieterich's clinical research and he has authored many publications on viral hepatitis and AIDS-related infections of the liver. His extensive clinical practice experience in serious liver disease will be a vital resource for Glycotest. Dr. Dieterich's MD degree is from New York University School of Medicine and he completed his medical training at Bellevue Hospital Center in New York.
Commenting on the appointments, NetScientific's Chief Executive Officer, Francois R. Martelet said: "Dr. Chernoff's appointment as Chairman of Glycotest's Medical Advisory Board and the appointments of Dr Scott Friedman and Dr Douglas Dieterich complements our strategy of advancing the development and commercialisation of these novel tests in the US market. We look forward to drawing upon the team's extensive experience within the specific liver disease market that we are initially focusing on."
About NetScientific
NetScientific is a biomedical and healthcare technology group that funds and develops technologies that offer transformative benefits to people's lives and society through improved diagnosis, prognosis and treatment.
For more information, please visit the website at www.netscientific.net.
About Glycotest
Glycotest is a molecular diagnostics company commercialising novel clinical laboratory testing services for patients at risk for liver cancers and fibrosis–cirrhosis. The Company was founded in 2012 on proprietary technology that originated at the Philadelphia area institutions Baruch S. Blumberg Institute and Drexel University College of Medicine. Glycotest provides financial compensation to the members of the Medical Advisory Board for their service. www.glycotest.com
Issued for and on behalf of NetScientific by Instinctif Partners.
For more information please contact: netscientific@instinctif.com


A short-stemmed succulent perennial herb. The succulent leaves are crowded on the top of their stems, spreading grayish green and glaucous; spotted when young, 20 to 50 cm long, 3 to 5 cm wide at the base, tapering gradually to the pointed tip. Flowers are borne in cylindrical terminal racemes on central flower stalks, 5 to 100 cm high. Each flower has 6 protruding stamens and three-celled ovary with long style. They are succulent plants belonging to the Lily family, with perennial, strong and fibrous roots and numerous, persistent, fleshy leaves, proceeding from the upper part of the root, narrow, tapering, thick and fleshy, usually beset at the edges with spiney teeth. The flowers are produced in erect, terminal spikes. There is no calyx, the corolla is tubular, divided into six narrow segments at the mouth and of a red, yellow or purplish colour. The capsules contain numerous angular seeds.
Aloe-emodin, aspartic acid, barbaloin, benzyl-acetone, beta-sitosterol, choline, chrysophanic acid, chrysophanol, cinnamic acid, coumarin, emodin, formic acid, glycerol, lupeol, p-coumaric acid, rhein (plant); arginine, ascorbic acid, beta-carotene, folacin, glutamic acid, glutamine, glycine, histidine, lysine, niacin, phenyl-alanine, riboflavin, serine, thiamin, tyrosine, valine (leaf).
As a tonic, in amenorrhea, asthma, boils, bruises, burns (including those from radiation), stomach cancer, common cold, cough, digestive disorders, fever, hemorrhages, hysteria, inflammation, eye problems, jaundice, cirrhosis, hepatitis, stomach ulcers, colitis, wound, scald, dry skin, conjunctivitis, psoriasis, hair fall, rosacea, warts and eczema; prevents opportunistic infections in cases of HIV and AIDS.
Pregnant women and children under five should not take Aloe vera internally.
Johnson T. CRC Ethnobotany Desk Reference (www.herbweb.com).


text:
import os

from setuptools import setup, find_packages

requires = [
    'c2c.template',
    'flake8',
    'plaster_pastedeploy',
    'psycopg2',
    'pyramid',
    'pyramid_debugtoolbar',
    'pyramid-mako',
    'pyramid_retry',
    'pyramid_tm',
    'pyyaml',
    'SQLAlchemy',
    'sqlahelper',
    'transaction',
    'zope.sqlalchemy',
    'waitress',
]

tests_require = [
    'WebTest >= 1.3.1',  # py3 compat
    'pytest',
    'pytest-cov',
]

setup(
    name='sitn_portal',
    version='0.0',
    description='sitn_portal',
    classifiers=[
        'Programming Language :: Python',
        'Framework :: Pyramid',
        'Topic :: Internet :: WWW/HTTP',
        'Topic :: Internet :: WWW/HTTP :: WSGI :: Application',
    ],
    author='',
    author_email='',
    url='',
    keywords='web pyramid pylons',
    packages=find_packages(),
    include_package_data=True,
    zip_safe=False,
    extras_require={
        'testing': tests_require,
    },
    install_requires=requires,
    entry_points={
        'paste.app_factory': [
            'main = sitn_portal:main',
        ],
        'console_scripts': [
            'initialize_sitn_portal_db = sitn_portal.scripts.initializedb:main',
        ],
    },
)


Crescent - Did You Know? Adjective. You probably know "crescent" as the shape of a moon that is less than half-illuminated. These days, "crescent" is generally used of either. Shop Electrical Supplies Online at Crescent Electric Supply Company. Serving the electrical, construction, commercial, industrial, utility and datacomm markets.. Welcome to Crescent. Crescent Real Estate is a fully integrated real estate investment, operation and development company. We continue to build our portfolio alongside the investors we've invited to join us..
the emblem of Turkey or of Islam. the power, religion, or civilization of Turkey or of Islam. Also called Chinese crescent, Chinese pavilion, jingling Johnny, pavillon Chinois, Turkish crescent. a musical percussion instrument of Turkish origin, consisting of a pole bearing a crescent-shaped metal plate, topped with a pavillon, and hung with small bells.. 1. The figure of the moon as it appears before its first quarter phase or after its third quarter phase, with concave and convex edges terminating in points.. Your savings federally insured to at least $250,000 and backed by the full faith and credit of the United States Government. National Credit Union Administration, a U.S. Government Agency..
CrescentPhx.com 308 N. 2nd Avenue Phoenix, AZ 85003 602-716-2222. One block west of the Van Buren Light Rail station. Pay Parking lot is $5, bring exact change. Additional Ticket Info. HOLGATE — Members of the Holgate Teachers' Association (HTA) were in attendance during Wednesday's Holgate Local Board of Education meeting to ask the board to. Crescent Theater is Mobile, Alabama's premiere independent movie theater, bringing you the best in independent film, locally-produced cinema and live performances..
From classic crowd-pleasing appetizers to easy everyday favorites, when you cook with crescents, your options are unlimited..


text:
Prabhas treats fans with breathtaking glimpses of Saaho on birthday
On the morning of 23rd October which happens to be our onscreen Baahubali, Prabhas's birthday, the superstar took to Facebook and released a special video giving a sneak peek into his next big ticket film, Saaho.
The video not only reveals our Pan-India superstar Prabhas's all new, uber-stylish look from the film but also gives a little preview of the Abu Dhabi schedule, where the Saaho team shot for one of industry's most expensive, multi-crore action sequences.
As soon as the video was put out, his fans across India and even overseas went absolutely berserk with it as they had been waiting to see more of their favourite superstar.
It has become a tradition for his fans to get some content from Prabhas's next on his birthday. There was immense anticipation prior and they went to town with the video after it was released.
Saaho, a big budget film, which is simultaneously being shot in 3 languages, Hindi, Telugu and Tamil, is Prabhas's next film after the record breaking and history creating Baahubali: The Conclusion, which collected over a humongous 1500 cr across the globe.
The teaser of Saaho which was released much earlier became huge and ever since then, Prabhas's fans have been requesting for more and more content from the film.
Giving in to the enormous demand, the makers introduced a first of its kind, series of short videos, 'Shades of Saaho', a rare mix of the making and film footage of this big budget film which will give a foretaste of the film to the millions of fans of Prabhas.
Starring Pan India superstar Prabhas and Bollywood actress Shraddha Kapoor in leading roles, 'Saaho' will also have an ensemble cast of Jackie Shroff, Neil Nitin Mukesh, Mandira Bedi, Chunky Pandey, Mahesh Manjrekar, Arun Vijay, Murali Sharma, amongst others.
Prabhas's next big outing Saaho is a high octane action thriller, trilingual film, the shoot for which is currently under progress. A UV Creations production , 'Saaho' is produced by Vamsi, Pramod, Vikram and directed by Sujeeth.
The film is being filmed at striking locations in, around and outside the country. Music by the awesome trio of Shankar-Ehsaan-Loy and lyrics by the very talented Amitabh Bhattacharya are sure to jazz up our playlists.
You can expect the director of photography Madhie, versatile editor Sreekar Prasad and celebrated production designer Sabu Cyril to do a spectacular job with the film.
Tags: BaahubaliSaahoShraddha Kapoor
ரசிகர் மன்றத்தை மட்டும் வைத்துக் கொண்டு ஆட்சியை பிடிக்க முடியாது... ரஜினிக்கு ஏற்பட்ட தெளிவு...
பிரபாஸ் பிறந்தநாள் பரிசாக சாஹூ படத்தின் முன்னோட்டம்
'The Lion King' roars into theaters on July 19, 2019
Ranveer delivers 800 crore in 12 months at the box office
Director Ramprakash Rayappa on Suttu Pidikka Utharavu
Arun Vijay's herculean avatar for 'Boxer'
Ranveer is Jayeshbhai Jordaar!
Reba Monica John gets onboard for Harish Kalyan's Dhanusu Raasi Neyargale


The Comedy of Errors, a fast-paced farce of arriving in a new town, looking for food, family, and home.
Many years ago, Egeon fathered a pair of identical twins, both named Antipholus. Each Antipholus was given a servant, Dromio and his identical twin Dromio and thus the family was whole. Until one day a mighty storm separated one Antipholus and Dromio from the other Antipholus and Dromio. Ever since the twins are split in two, are incomplete, unwhole.
The Comedy of Errors is a play about forging a family and finding home. It is an action-packed adventure through a city that is both welcoming and terrifying, domestic and miraculous. As such we are taking Summer Shakespeare right into the central city of Wellington.
This play is a delightful comedy through and through, yet at the heart of the play is family tragedy and the shock of not being recognised as yourself. It features hilarious set-pieces, witty wordplay and farcical mischief. Its roots in commedia dell'arte and Roman comedy are nodded to in this production, the first The Comedy of Errors in Wellington Summer Shakespeare's canon.
Wellington is an incredibly welcoming city; you can make a home here and explore who you want to be in the world. Our city invites you to have adventures, to be anyone, to find yourself here. We invite you to join our Summer Shakespeare family for The Comedy of Errors.


text:
Pando Days Update: Gina Valona, Otis
Gina Valona, Professor of Art and Design at Otis College
By Rich Binell | Aug. 25, 2021
Pando's Rich Binnel reached out to Gina Valona, a professor at Otis College of Art and Design, about her involvement in Pando Days 2019/20, and the project she developed for the program to make interacting with LA in a green way both easy and fun.
Read on to learn about what she's teaching and doing that matters to them, to Pando, to Los Angeles, and to the world.
What we found is predictably astonishing, and inspiring.
Why sustainability? Because the climate-change clock is ticking.
Since 2017, Gina Valona has taught in Otis College Creative Action, a program that introduces students to social and environmental issues using human-centered design, socially-engaged art practices, and multidisciplinary collaboration to develop innovative solutions to topics including sustainability.
She developed her "Art, Systems, and Sustainability" course due to her concern about the climate crisis. It's a systems-thinking course that challenges students to become aware of the complex web of forces related to environmental justice at the intersection of cultural, political and economic issues.
How did you become involved with Pando Days?
"I was introduced to Pando by Adam Eeuwens, the 2019/20 Pando Days producer who pitched me the concept and invited me to be involved. I was excited to collaborate, and we created a partnership that blends the program into both my practice and a course at Otis College.
"A partnership at this level challenges both me to work in step with contemporaries in the fields of art and design and with non-profits and government agencies. I am very interested in the concept of artist as creative strategist and in the past few years, I have turned my practice towards working on more civically engaged projects .
Tell me more about your class.
"On the educational side, the class is practical teaching students a framework and process to address complex projects while learning how to work in partnership with organizations like Pando and the OurCountyLA Sustainability Plan. Addressing specific RFP design challenges aligned with the goals, strategies and actions of the plan, students are faced with working on a high-stakes, collaborative project. It is a unique learning experience where they create alongside professionals in the field co-developing projects that have potential for real-world implementation.
"The challenge at the junior level is the content is complex involving layers of comprehension and engagement that must occur before project ideation begins. After weeks of research and analysis, students are then put into multidisciplinary teams to bring their best concepts forward for evaluation so we can determine which solutions might work best in addressing the design challenge.
"Because the work is emergent and we are learning and experimenting along the way, considering perspectives from several stakeholders, there's much that cannot be pre-planned. It is about discovery, not a strict set of assignments. Empathy and patience are required while keeping them inspired when they get overwhelmed .
"By the end of the semester, students are really taking ownership of the work and consistently producing projects they never imagined possible at the onset. My goal is to encourage and stretch them beyond their perceived capabilities so that the work they produce can serve as a valuable portfolio piece upon graduation.
"For the first Pando Days, which came in 2019/20, the class generated the idea of using the OurCountyLA plan to create an eco-justice constellation—in short, a green map that stakeholders could use to visualize and connect disparate parts, people and actions—working in various capacities towards creating a sustainable LA County.
"One of the challenges was: How to make the Plan visible and accessible to the LA community at large?
"We used the first letters of the words Transparent, Inclusive, and Accountable to create the acronym, TIA, which in Spanish translates to aunt. We loved the idea of using the concept of a Tía, a figure of trust who mentors, engages, collaborates, and learns along with us about the plan. Thus, the tiaproject.org was born."
What is the importance of The Tía Project?
"It's an ongoing collaborative project for community partners and students to learn, create and build upon each other's work.
"The Tia Project will grow over several years, and the framework allows me to ground in my own art + public practice while combining it with my academic work.
"The work is intense and deep and the thinking it requires goes way beyond the scope of the classroom because it's a part of my life, for our partners, our community, and the L.A. Sustainability Office itself.
"Project proposals range from an OurCountyLA Mobile App to site specific pop-up buildings to community-engagement workshops along with strategies focused on the goals of the plan."
What's your continuing involvement with Pando?
"My involvement connects us all to a wider network and sets up a healthy competition and sharing of ideas amongst colleges, colleagues, peers and students to do their best work and push innovative ideas.
"There's been a shift in the last few years in which a philosophical alignment between government, big business, technology, artist/designers and community has started to integrate rather than divide in silos.
"I think this way of working creates opportunities for us to make a collective impact. We need each other. We need to work together. And we are in a dire situation when it comes to the climate crisis because the clock is ticking—faster and faster.
"People can reach out to me via tiaproject.org."
This is one of a continuing series of conversations with Southern California professors involved in Pando Days, our flagship program that brings together Southern California colleges and universities to implement LA County's sustainability goals.
Rich Binell is a writer, brand strategist, and corporate storyteller. He helps companies understand and explain why they matter.


text:
Courtney Petrizzi
Before I became a Communications Specialist, I was a newspaper reporter. I covered everything from sports and education, to breaking news and city council meetings. I also worked for a specialty add-on magazine for the newspaper, which was a special request from the editor.
My beginnings in the world of journalism started as an intern for a local paper, to traveling overseas to Spain and Portugal for Alpine Living Magazine, and below is a culmination of my clips from those experiences.
I have always had an affinity for writing, both creatively and from a journalist's perspective. Because of these capabilities, I find one of the most rewarding things I can do is help create a world from someone's story, because everyone has a story to tell.
Discover Wiregrass
Competition. Community. Cheer
In-depth feature on Enterprise High School cheerleading squad
City of Progress continues to Grow
In-depth feature of downtown Enterprise, AL.
Tomberlins sought welcome comfort for Enterprise home
Home is where the heart is. Many of us have come across the old adage throughout our lives. We've seen it on a decorative pillow, a refrigerator magnet or heard it come out of grandma's mouth. For one Enterprise family, the phrase couldn't ring more true.
'Mountain Man' speaks on travel, chasing passions
Enterprise High School students were visited by a special guest on Tuesday who spoke to them about the adventure known as life. Reed Rombough, affectionately called 'Mountain Man' by EHS teacher Suzanne Taylor, was welcomed back to his alma mater where he brought with him the stories of his new life.
Video games: Coming soon to a cupcake near you
Cupcakes, video games and all things sweet and different, will collide in the delicious vision that Misty McAlhany has for Lolee's Cupcade. Both words in the shop's name are mash-ups of some of the biggest parts of McAlhany's world: Logan Lee turns into Lolee for her 10-year-old daughter, and the Cupcade is a combination of cupcake and arcade.
Reviving Elba
One nonprofit group aims to revamp into the city of Elba. With projects in the works, Restoration 154 works to attract tourism and spur growth for their local community. When first starting the organization, President Justin Maddox and Vice President Philip Box wanted to restore the Elba Theatre.
Archery: Dothan's newest sport
Feathers flew at the Olympic-style archery class held at Eastgate Park on Tuesday. Eastgate is holding a beginners archery class this week. Another week of class is scheduled for July 30-Aug. 3. Both classes will run from 6-7:30 p.m.
Special tricycles hitting local streets
The Wiregrass Rehabilitation Center (WRC) hosted an AmTryke road show Tuesday to help fit local disabled residents with specialty tricycles for their specific needs. Founded in 1922, National AMBUCS, Inc. is a non-profit service organization dedicated to creating mobility and independence for people with disabilities.


Michael Novak is a Partner within the Firm's Tax & Business Services Division. He has more than 30 years of experience serving clients across a broad range of disciplines.
As a practice partner of the Firm, Mr. Novak provides and coordinates specific account management and services to his clients, including helping them with their daily business needs. He also offers assistance when clients face significant decisions, such as refinancing, expanding or purchasing, relying on his experience and guidance. Many of his long-term clients have trusted his expertise for more than 25 years.
Mr. Novak serves on the board of directors for his division. Specifically, he leads the division's technology area.


While many of us worry about the ways in which Google Glass could be used to infringe on peoples' privacy, scientists at Saarland University in Germany have instead developed a process in which the high-tech eyewear could ensure privacy. More specifically, it would keep shady characters from obtaining your PIN while you used an automated teller.
The process starts with a Glass-wearing user approaching an ATM, and "identifying himself" to it. It's not clear if this is done using a debit card, or some other means.
In any case, using a software system known as Ubic, the ATM then identifies the user's unique digital Google Glass signature, and responds by displaying a customized QR code on its screen. To everyone else (even other Glass-wearers, all with different signatures), that code remains unreadable. The user's glasses are able to read it, however, and they display a one-time-use PIN in place of the code, on the inside of the lens.
The user then keys in that PIN and goes about their ATM business, after which that particular PIN becomes useless – a new one is issued for each of their subsequent transactions.
Needless to say, the same thing could be done simply using a camera-equipped smartphone. The difference with Google Glass, however, is the fact that while other people could sneak a peek at the decoded PIN on a phone's screen, only the one user would be able to see it on the Glass display.
The researchers have suggested that Ubic could perhaps also have other applications. One of these could include single encrypted documents that display different confidential content to different people, depending on each person's Google Glass signature.


The Starlite Room, or Jim's Starlite Room, is a family restaurant serving greasy comfort food in the same place for 50 years and counting. Little blue stars are behind the burger in the sign, another banner claims "Great Tenderloins". They have a multi generational customer base in this section of Cedar Rapids that keeps the place filled with large groups eating burgers and fries and other fast foods.
Location: 3300 1st Avenue Northeast in Cedar Rapids, Eastern Iowa.
Directions: First Ave is the main route from downtown Cedar Rapids to Marion and place beyond. The Starlite is in an old strip mall behind a Dairy Queen.
The Tenderloin: This felt like a good seven ounces when I picked it up. Breading was a thick layer covering a triangle shaped loin. The good thick white meat had steam coming out of it that permeated the breading and the bun. The loin had been tenderized significantly by hand. Served on a large toasted bun, Overall 7.5 out of ten.
Also on the menu: the half pound "The Superburger" seems to predate the recent gourmet or upscale burger trend by a few decades. The rest of the menu is filled with fried stuff and other sandwiches.
Service: I grabbed takeout from the bar area, but there is table service in the dining area.
Ambiance: This location has been here for a long time and the interior is split into a bar area and a dining area with booths that was filled with families when I visited. Wood paneling, flatsceen televisions, a fortune-telling machine, and ugly electric signs dominated the interior of this neighborhood dive.
Final Thoughts: The Starlite keeps its crowds coming for its friendly atmosphere and superior fast food cuisine. I've slowly been making my way through Cedar Rapids tenderloins and my only real disappointment has been the Tic Toc Restaurant. My next stop in Cedar Rapids will have to be the reopened kitchen at the Little Bohemia bar that has been on my list for years now.
This longstanding comfort food diner is wedged in between student apartment buildings and the UNI Campus in Cedar Falls. For a college town, this place felt like a meeting place for the older townies.
Location: 1724 W 31st St in Cedar Falls, just south of the UNI campus and the UNI Dome.
Directions: Its about four miles north of Highway 20 just off Hudson Road in Cedar Falls. Look for the tall sign.
The Tenderloin: Described on the menu as 14 oz. and lean cut pork meat. The point of distinction here is that the large cut of pork loins is trimmed of fat completely. This makes a big difference when you are eating a super jumbo tenderloin. The breading is just a thin golden brown layer that gets moistened by the steam in the meat. Served with your choice of fixings on a huge fresh baked bun. Overall 8.0 out of ten.
Also on the menu: The menu is huge with breakfast, baked goods, broasted chicken and daily specials. They have a loosemeat burger named "J's MADEWRONG", a cheese stuffed "JUICY J's BURGER", along with classics like hot ham or Rueben sandwiches.
Service: there is a small counter but most people get table service and eat in booths.
Ambiance: This place shows its age. Its not old enough to have a nostalgic appeal like an older diner would, and its kept clean. But it still has tons of wood paneling and a baked goods display.
Final Thoughts: The dictionary definition of homestyle food from Google reads "Such as would be made or provided at home; simple and unpretentious". One of the online coupons for this place claims "We put the HOME in HOMESTYLE". J's Homestyle is like eating at a grandmothers house, from the decorations to the cookies.


text:
package org.bachelor.gv.service;

import java.util.List;

import org.bachelor.gv.domain.GlobalVariable;

public interface IGVService {

	public void update(GlobalVariable  gv);

	public List<GlobalVariable> queryAll(GlobalVariable gv);

	public void save(GlobalVariable gv);

	public void saveOrUpdate(GlobalVariable  gv);

	public void delete(GlobalVariable gv);

	public void batchDeleteById(String info);

	public GlobalVariable findById(String id);

	public GlobalVariable findByName(String name);

	public boolean exist(String propertyName, String propertyValue);
}


Couldnt put Humpty together again!
Humpty Dumpty is one of the nick name used for cannon during the Civil War. It was first printed in 1810. It became famous through Lewis carroll's book, 'Alice through the looking Glass'.
Kids, enjoy by singing the lyrics of this lovely rhymes.


text:
Home Entertainment SDCC 2019: Marvel Studios Phase Four lineup includes female Thor, Blade, Shang-Chi and more!
SDCC 2019: Marvel Studios Phase Four lineup includes female Thor, Blade, Shang-Chi and more!
I think it's pretty safe to say that no other Hall H panel happening at Comic-Con this year was as eagerly anticipated as Marvel Studios' mysterious 90-minute presentation. I say "mysterious" because up until this point, we've officially known NOTHING about what's in store for the Marvel Cinematic Universe following the cataclysmic events of Avengers: Endgame (with Spider-Man: Far From Home also adding its coda).
Well, the panel started out by looking back as Marvel Studios boss Kevin Feige first took to the stage to debut a highlight reel that showed off all the heroes of the MCU suiting/powering up, ending with an official logo for The Infinity Saga. "The Infinity Saga is complete," Feige declares before he brought out the many behind-the-scenes "soldiers" that made the first 10 years of MCU possible in producers Julia Esposito, Victoria Alonso, Stephen Broussard, Sarah Smith, Nate Tran, Jonathan Schwarz, and more. It was a really classy touch to honour these people that don't ever really get the spotlight for their efforts.
And then things got serious as a Phase 4 timeline popped up on the screen and Feige wasted very little time in starting to drop those bombs.
First up, we finally have an official announcement for The Eternals which director Chloe Zhao describes as being "full Jack Kirby." The movie also gets a release date of 6 November 2020.
Just announced in Hall H at #SDCC, Marvel Studios' THE ETERNALS with Angelina Jolie, Richard Madden, Kumail Nanjiani, Lauren Ridloff, Brian Tyree Henry, Salma Hayek, Lia McHugh and Don Lee. Directed by Chloé Zhao. In theaters November 6, 2020. pic.twitter.com/k6ZgfX38VW
— Marvel Studios (@MarvelStudios) July 21, 2019
We also have our cast announcements with Richard Madden as Icarus, as speculated on before, while Angelina Jolie will play Thena. Another A-list addition though is Salma Hayek as Ajak, the leader of the Eternals. The rest include Lauren Ridloff as Makkari, Bryan Tyree Henry as Phastos, Lia McHugh as Sprite, Kumail Nanjiani as Kingo, and finally Don Lee as Gilgamesh the Forgotten One.
UPDATE: I previously had Lauren Ridloff's role marked incorrectly. It should be Makkari, which has traditionally been a male character. Making Ridloff's casting even more diverse (besides for being a woman of colour) is the fact that she becomes the first deaf superhero in a mainstream Hollywood comic book movie.
Next up, Anthony Mackie and Sebastian Stan, the stars of the upcoming Disney+ series The Falcon and the Winter Soldier took to the stage. Mackie actually came out wearing the shield he had inherited from Captain America in Avengers: Endgame. He offered it to Stan on-stage only to take it back. We also got a new official logo as it was revealed that the show will debut on Disney+ plus in the US Fall season 2020 (so roughly around September here locally).
Just announced in Hall H at #SDCC, Marvel Studios' THE FALCON AND THE WINTER SOLDIER, an original series with Anthony Mackie, Sebastian Stan and Daniel Brühl. Streaming exclusively on Disney+, Fall 2020. pic.twitter.com/FmFMKWUrhO
As Mackie and Stan spoke about what they want to bring to the show, Daniel Bruhl's villain Zemo from Captain America: Civil War showed up having seemingly hacked the video "just to say hello to some old friends", before pulling on a mask similar to his comic book counterpart Baron Zemo (though it was black and not purple!).
Then everybody got kung fu fighting as Shang-Chi and the Legend of the Ten Rings was finally announced officially for release on 12 February 2021. Yes, you read that correctly. Ten rings! The Mandarin… the REAL Mandarin, is indeed confirmed to be in the movie (like I suspected) and he will be played by Oscar-nominated Hong Kong veteran Tony Leung (Hard Boiled, Infernal Affairs, Hero).
Just announced in Hall H at #SDCC, Marvel Studios' SHANG-CHI AND THE LEGEND OF THE TEN RINGS, with Simu Liu, Awkwafina and Tony Leung, directed by Destin Daniel Cretton. In theaters February 12, 2021. pic.twitter.com/VXaqJ5uN6B
This finally picks up the threads from Marvel's 2013 One-Shot, All Hail the King, which revealed that there was indeed a real Mandarin, the leader of the Ten Rings terrorist group first introduced in 2008's Iron Man, and that he was not happy that Iron Man 3 baddie Aldrich Killian had been using his name. Director Destin Daniel Creton also revealed that there are apparently Ten Rings easter eggs hidden in Ant-Man.
Back to the casting and Awkwafina will also be in the movie in an undisclosed role, but the big role of Shang Chi himself will be played by Chinese-born Canadian actor Simu Liu. The 30-year-old actor, most famous for sitcom Kim's Convenience, was reportedly just cast this past Tuesday. I'm admittedly not familiar with his work (he's also appeared in the Taken TV series, Orphan Black, and Slasher), but he certainly looks the part.
Next up was another Disney+ series in WandaVision which has now been officially dated for Spring 2021. The show will star Elizabeth Olsen's Scarlett Witch and Paul Bettany's Vision and will take place after the events of Endgame.
Just announced in Hall H at #SDCC, Marvel Studios' WANDAVISION, an original series with Elizabeth Olsen, Paul Bettany and Teyonah Parris. Streaming exclusively on Disney+, Spring 2021. pic.twitter.com/6lIiMJdfYw
That, of course, begs the question of how is Vision even alive in this as he died in Avengers: Infinity War, which is something that Bettany jokingly claims he doesn't even know. That's not the only surprise though, as it was revealed that the character of Monica Rambeau (last seen as a 10-year old girl in the 1990s-set Captain Marvel) will be in this series played by actress Teyonah Parris.
Staying with Disney+, the previously announced Loki got a Spring 2021 release date and really weird new logo. It was confirmed that Tom Hiddleston will be playing the version of Loki that escapes with one of the Infinity Stones back in 2012 during the time-travelling events of Avengers: Endgame.
Just announced in Hall H at #SDCC, Marvel Studios' LOKI, an original series with Tom Hiddleston. Streaming exclusively on Disney+, Spring 2021. pic.twitter.com/Ntb8g9SSwq
Hiddleston, who received massive applause as he took to the stage. recalled that the last time he was in Hall H he was demanding for Feige to kneel. He also spoke about how due to this being the Loki from the past, he is very much still a villain at this point with none of the redemption that came later. Jokingly, the last thing to happen to him is that he got Hulk smashed.
And if you were missing all the multiverse madness that we predicted for Spider-Man: Far From Home then don't worry because the Sorcerer Supreme has you covered. Officially announced for release on7 May 2021 will be Doctor Strange in the Multiverse of Madness! Ooh what a title!
Just announced in Hall H at #SDCC, Marvel Studios' DOCTOR STRANGE IN THE MULTIVERSE OF MADNESS with Benedict Cumberbatch and Elizabeth Olsen. Scott Derrickson returns as director. In theaters May 7, 2021. pic.twitter.com/HtF68htiB1
According to director Scott Derrickson, this will be Marvel's first scary film – which isn't surprising given the fact that he first broke out in Hollywood in the horror genre – but he will still keep things PG-13.
As for the man himself, Benedict Cumberbatch had a nice welcome as Hall H sang happy birthday for him. Cumberbatch continued by saying that the humor is still in the movie, but "we're going back to try and destroy him a bit." Also, Olsen's Scarlet Witch is in Doctor Strange: MOM (can we start calling it that?) as well, as reportedly the events of WandaVision will tie directly into this. This matches up with Feige's statements earlier in the year that going forward, Marvel's TV offerings and feature films will be far more intrinsically linked.
Next up was the previously announced What If…? anthology show which will be Marvel's first animated effort and will debut on Disney+ in mid-2021. The series, like the comics it draws from, will explore alternate versions of characters and events from the MCU. The show will feature all the original actors providing voices where necessary but will see Jeffrey Wright debuting as the voice of the Watcher.
Just announced in Hall H at #SDCC, Marvel Studios' WHAT IF…?, the first animated series in the MCU, with Jeffrey Wright as the voice of The Watcher and many actors from across the MCU reprising their roles as voice talent. Streaming exclusively on Disney+, Summer 2021. pic.twitter.com/el6etc3xZH
According to Wright, the Watcher will often be off doing his own thing, but occasionally intervenes. They can also "take it anywhere" when it comes to the potential stories of the show.
More Disney+ as the rumoured Hawkeye event series was confirmed, with a release date pegged for Fall 2021. Jeremy Renner will reprise his fan favourite role as the superhero archer, Clint Barton, but as previously reported this show will also see the introduction of Kate Bishop.
Just announced in Hall H at #SDCC, Marvel Studios' HAWKEYE with Jeremy Renner, an original series that will also introduce Kate Bishop. Streaming exclusively on Disney+, Fall 2021. pic.twitter.com/qPH8M2TQSj
In the comics, Bishop is the second Hawkeye who Barton tutors and takes under his wing. There was no announcement of who would be playing her though as we only got a promo image showing off the characters of Barton and Bishop side by side but in silhouette. The show will reportedly show off more of Barton's time as Ronin as seen in Endgame though.
Next up, we got what will undoubtedly go down as the best superhero movie title ever as Thor: Love and Thunder was officially announced for November 2021. The dynamite Thor: Ragnarok team of Chris Hemsworth as Thor and Tessa Thompson as Valkyrie, with director Taika Waititi (who also voices Korg), will be back together again.
Just announced in Hall H at #SDCC, Marvel Studios' THOR: LOVE AND THUNDER with Chris Hemsworth, Tessa Thompson and Natalie Portman. Taika Waititi returns as director. In theaters November 5, 2021. pic.twitter.com/7RRkOYWTQM
Thompson said that following the events of Endgame where she became "King" of Asgard, this film will see her trying to find her queen. Hopefully that means that Marvel will actually lean into the character's queer status instead of barely paying it lip service like last time.
UPDATE: Speaking to i09 after the panel, Feige has confirmed that Valkyrie will indeed be involved in an LGBTQ storyline on-screen.
The answer is yes. How that impacts the story remains to be seen with that level of representation you'll see across our films, not in just Thor 4.
However, the really big announcement was that Waititi is pulling from Jason Aaron's now iconic The Mighty Thor run which saw Jane Foster become Thor. That will apparently happen here as Natalie Portman is back to reprise her role. After coming out on stage, Waititi handed Thor's hammer Mjolnir to her, with Portman jokingly adding that she's always had a little hammer envy.
Next we got another official announcement that we already knew was coming as the Black Widow solo movie was revealed to be releasing on 1 May 2020. Along with Scarlett Johannson's Natasha Romanov, it's been confirmed that Florence Pugh plays Yelena, who in the comics was the second Black Widow.
Just announced in Hall H at #SDCC, Marvel Studios' BLACK WIDOW with Scarlett Johansson, David Harbour, Florence Pugh, O-T Fagbenle, and Rachel Weisz. Directed by Cate Shortland. In theaters May 1, 2020. pic.twitter.com/7WGECDIw3t
The film will reportedly deal with the secrets of Natasha's past and will see her trying to put all the pieces of herself back together. Yelena will also portray a sister figure to Natasha. Joining them in the cast will be David Harbour as the villainous Alexi aka The Red Guardian, while O-T Fagbenle plays a fixer and former contact/romantic flame from Natasha's pre-SHIELD past. Rachel Weisz has also been cast as a character named Melina.
Although not released online, fans in attendance got to see a short trailer for Black Widow (which has been in production for a few weeks now). The trailer confirms that the film is set after the events of Civil War and sees Natasha travelling to Budapest. The footage shows her fighting against Yelena before making peace with and sharing a drink with her. The footage ends though with another surprise as the villain Taskmaster appears to engage her in a fight and he has his own shield!
That seemingly wrapped up the presentation as a Feige revealed there were more movies in development but that they couldn't speak about them yet. Movies like Black Panther 2, Guardians of the Galaxy Vol. 3, Captain Marvel 2 and… FANTASTIC FOUR! Yes, it's officially happening. He revealed nothing further though and then snarkily also added that "there's no time to talk about those mutants". Sorry, Fantastic Four and X-Men fans, we have to wait some more to see what Marvel will do with the properties now that they have them back from Fox.
But then Feige dropped possibly the biggest bomb of the night as he brought out Mahershala Ali and revealed he will be playing Blade!
Just announced in Hall H at #SDCC, Marvel Studios' BLADE with Mahershala Ali. pic.twitter.com/mtrDBy5OV0
Yes, the Daywalker is back! Of course, as amazing as this news is, this gets a little awkward now as the Oscar-winner previously played Cottonmouth in the first season of Luke Cage. So does this mean that the Netflix shows are not in the same timeline as the movies or are Marvel just saying "screw it" and casting Ali anyway? Honestly, I don't care as long as they got him because this is one hell of a casting!
That then officially wraps up the panel for real and damn has it lived up to the hype! And remember this is only Marvel's release timeline through 2021. There's still a lot more of Phase 4 to be unveiled. I have a feeling that next month's Disney D23 Expo is going to another big one for Marvel.
UPDATE: While we're waiting on an official release (which usually happens after a day or so), Variety has posted a video of the entire panel minus the sections where footage is shown and all electronics in Hall H have to be switched off. A warning though: This is essentially cellphone footage and audio cuts out in places, but it's all we have for now.
Unsolicited Opinions About "Black Widow" – Uncle Jim Reviews a Movie?
This isn't intended to be a movie review, but I suppose it's inevitable that many of you w…


Published 04/18/2019 01:10:36 pm at 04/18/2019 01:10:36 pm in Concrete Edging Spokane.
concrete edging spokane concrete curbing spokane landscape curb no project to large for our seamless continuous pour concrete edging photo of creative edge spokane wa united states no project to large.
oldcastle perfect edge concrete edger mulch rock oldcastle perfect edge concrete edger , dundee concrete landscaping spokanes leading concrete curbing water features, dundee concrete landscaping spokanes leading concrete curbing landscaping, concrete landscape borders landscape channel concrete landscape borders well suited edging diy diy curbing in spokane creative , concrete curbing machine concrete curb edging machine concrete curb concrete curbing machine curb machines manufactured by the concrete edge company are designed to easily extrude concrete curbing , curb machine landscape and concrete curb machines landscape curbing, creative landscape borders for concrete landscape edging in spokane after creative landscape borders, concrete edging services concrete edging pros concrete edging pros, landscape edging mow strips landscaping network brick lawn edging, curbing machine rental adiantechnologiesinfo curbing machine rental landscape curbing machine rental used concrete near me concrete curb machine rental spokane, concrete edging and curbing services in spokane wa creative edge oneofakind mixing truck for concrete edging.


In an effort to keep up with competition, investment firms have been lowering fees.
With the launch of its new mobile trading platform, JPMorgan Chase became the most recent entrant in the investing world's battle to offer the lowest fees.
The investing service, called You Invest, comes with no investment minimum and gives users 100 commission-free stock and exchange-traded fund trades in the year after opening an account. Investors can earn more free trading if they hold sufficient assets in certain Chase accounts.
Cathy Seifert, an analyst at investment research firm CFRA, expects more firms to slash commissions. Beyond costs, investors should consider the tools and resources a brokerage platform offers. "JPMorgan has a great reputation, but they're a late entrant" in the mobile brokerage business, Seifert says.
The Chase rollout comes shortly after Fidelity slashed its fees and began introducing mutual funds with a zero expense ratio. In August, Fidelity launched Fidelity Zero Total Market Index (symbol FZROX), which tracks the U.S. stock market, and Fidelity Zero International Index (FZILX), which tracks stocks abroad. In the first month, the two funds attracted more than $1 billion in assets. And in September, the company introduced Fidelity ZERO Large Cap Index Fund (FNILX), which tracks large U.S. company stocks, and the Fidelity ZERO Extended Market Index Fund (FZIPX), which tracks small- to mid-sized U.S. company stocks. All the funds have no investment minimums.
What's the catch? The funds are available only to individual investors with Fidelity brokerage accounts. To save on management costs, Fidelity will not license indexes from outside providers but will instead benchmark the funds to indexes assembled by Fidelity. Prospective investors should monitor the funds' performance compared with other low-cost funds that track traditional indexes, says Charles Rotblut, vice president of the American Association of Individual Investors.
Meanwhile, online brokerage Firstrade recently announced that it will offer free trading on all stocks, ETFs and options.
The goal of Fidelity and Firstrade is to attract new customers, says Michael Venuto, chief information officer for investment firm Toroso Asset Management. "It's no different than a toaster at a bank or free breadsticks at Olive Garden," he says. Once you're a customer, firms will likely try to sell you more expensive products, he says.