text:
package tools.xor.logic;

import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.springframework.beans.factory.annotation.Autowired;

import tools.xor.AbstractDBTest;
import tools.xor.BusinessObject;
import tools.xor.Settings;
import tools.xor.action.Executable;
import tools.xor.action.PropertyKey;
import tools.xor.action.SetUpdateAction;
import tools.xor.core.Interceptor;
import tools.xor.db.dao.TaskDao;
import tools.xor.db.pm.Task;
import tools.xor.service.AggregateManager;

public class DefaultUpdate3Set extends AbstractDBTest {

	public static final String A_NAME = "FIX_DEFECTS";
	public static final String B_NAME = "DEFECT 1";
	public static final String C_NAME = "PERFORMANCE";

	@Autowired
	protected AggregateManager aggregateService;

	@Autowired
	protected TaskDao taskDao;

	// 3 objects
	private Task A;
	private Task B;
	private Task C;

	/**
	 * Test the update of bi-directional OneToOne relationship involving 3 entities
	 * Corresponds to test case# 3-9, and 17 in OneToOneTestCombinations.docx document
	 *
	 */

	@BeforeEach
	public void setupData() {
		// create defect fixing Task
		if(A == null) {
			A = new Task();
			A.setName(A_NAME);
			A.setDisplayName("Fix defects");
			A.setDescription("Task to track the defect fixing effort");
			A = (Task) aggregateService.create(A, new Settings());
			A = taskDao.findById(A.getId());
		}

		// Create defect priority task
		if(B == null) {
			B = new Task();
			B.setName(B_NAME);
			B.setDisplayName("Defect 1");
			B.setDescription("The first defect to be filed");
			B = (Task) aggregateService.create(B, new Settings());
			B = taskDao.findById(B.getId());
		}

		if(C == null) {
			C = new Task();
			C.setName(C_NAME);
			C.setDisplayName("Performance related defects");
			C.setDescription("Defects related to the performance of the application");
			C = (Task) aggregateService.create(C, new Settings());
			C = taskDao.findById(C.getId());
		}

		assert(A.getId() != null);
		assert(C.getId() != null);
		assert(B.getId() != null);

		A = (Task) aggregateService.read(A, getSettings());
		C = (Task) aggregateService.read(C, getSettings());
		B = (Task) aggregateService.read(B, getSettings());
	}

	@AfterEach
	public void resetAssociation() {
		// reset the OneToOne association
		A.setTaskChildren(null);
		A.setAlternateTask(null);
		C.setTaskChildren(null);
		C.setTaskParent(null);
		B.setTaskParent(null);

		A = (Task) aggregateService.update(A, getSettings());
		C = (Task) aggregateService.update(C, getSettings());
		B = (Task) aggregateService.update(B, getSettings());

		A = taskDao.findById(A.getId());
		C = taskDao.findById(C.getId());
		B = taskDao.findById(B.getId());

		A = (Task) aggregateService.read(A, getSettings());
		C = (Task) aggregateService.read(C, getSettings());
		B = (Task) aggregateService.read(B, getSettings());

		assert(A.getTaskChildren() == null || A.getTaskChildren().size() == 0);
		assert(C.getTaskParent() == null);
		assert(B.getTaskParent() == null);
	}

	public void testCase3() {
		Set<Task> children = new HashSet<Task>();
		children.add(C);
		children.add(B);

		// Setup the bi-directional link
		A.setTaskChildren(children);
		C.setTaskParent(A);
		B.setTaskParent(A);

		Settings settings = getSettings();
		settings.setInterceptor(new Interceptor() {
			// check the number of actions in each object
			private void checkNumber(BusinessObject dataObject, List<Executable> actions) {
				Task task = (Task) dataObject.getInstance();
				if(task.getName().equals(A_NAME)) {
					assert(actions.size() == 1); // SetUpdateAction
					assert(SetUpdateAction.class.isAssignableFrom(actions.get(0).getClass()));
				} else
					assert(actions.size() == 2);
			}

			@Override
			public void preBiDirActionStage(Map<PropertyKey, List<Executable>> actions) {
				// check the action queue to see if the correct number of actions are present
				assert(actions.size() == 3);

				for(Map.Entry<PropertyKey, List<Executable>> entry : actions.entrySet())
					checkNumber(entry.getKey().getDataObject(), entry.getValue());
			}
		});
		A = (Task) aggregateService.update(A, settings);

		A = taskDao.findById(A.getId());
		C = taskDao.findById(C.getId());
		B = taskDao.findById(B.getId());

		A = (Task) aggregateService.read(A, getSettings());
		C = (Task) aggregateService.read(C, getSettings());
		B = (Task) aggregateService.read(B, getSettings());

		assert(A.getTaskChildren() != null && A.getTaskChildren().size() == 2);
		assert(C.getTaskParent() != null);
		assert(B.getTaskParent() != null);
	}

	protected Settings getSettings() {
		// Be default we treat technician to be part of the aggregate
		Settings settings = super.getSettings();

		return settings;
	}

	public void testCase4() {
		C = taskDao.findById(C.getId());
		Set<Task> children = new HashSet<Task>();
		children.add(C);

		// Setup the bi-directional link
		A = taskDao.findById(A.getId());
		A.setTaskChildren(children);
		C.setTaskParent(A);
		taskDao.saveOrUpdate(A);

		A = (Task) aggregateService.read(A, getSettings());
		C = A.getTaskChildren().iterator().next();
		assert(C.getTaskParent() != null);

		// Remove child1 and add child2
		children = A.getTaskChildren();
		children.clear();
		children.add(B);
		A.setAlternateTask(C);
		C.setTaskParent(null);
		B.setTaskParent(A);

		Settings settings = getSettings();
		settings.setInterceptor(new Interceptor() {
			// check the number of actions in each object
			private void checkNumber(BusinessObject dataObject, List<Executable> actions) {
				Task task = (Task) dataObject.getInstance();
				if(task.getName().equals(A_NAME)) {
					assert(actions.size() == 1); // SetUpdateAction
					assert(SetUpdateAction.class.isAssignableFrom(actions.get(0).getClass()));
				} else
					assert(actions.size() == 2);
			}

			@Override
			public void preBiDirActionStage(Map<PropertyKey, List<Executable>> actions) {
				// check the action queue to see if the correct number of actions are present
				assert(actions.size() == 3);

				for(Map.Entry<PropertyKey, List<Executable>> entry : actions.entrySet())
					checkNumber(entry.getKey().getDataObject(), entry.getValue());
			}
		});
		A = (Task) aggregateService.update(A, settings);

		A = taskDao.findById(A.getId());
		B = taskDao.findById(B.getId());

		A = (Task) aggregateService.read(A, getSettings());
		B = (Task) aggregateService.read(B, getSettings());

		assert(A.getTaskChildren() != null && A.getTaskChildren().size() == 1);
		assert(B.getId() == A.getTaskChildren().iterator().next().getId());
	}

	public void testCase5() {
		C = taskDao.findById(C.getId());
		Set<Task> children = new HashSet<Task>();
		children.add(C);

		// Setup the bi-directional link
		A = taskDao.findById(A.getId());
		A.setTaskChildren(children);
		C.setTaskParent(A);
		taskDao.saveOrUpdate(A);

		A = (Task) aggregateService.read(A, getSettings());
		C = A.getTaskChildren().iterator().next();
		assert(C.getTaskParent() != null);

		// Remove child1 and add child2
		children = A.getTaskChildren();
		children.clear();
		children.add(B);
		A.setAlternateTask(C);
		C.setTaskParent(null);
		B.setTaskParent(null); // We are explicitly not setting the backRef in the input. This should automatically be set by the framework.

		Settings settings = getSettings();
		settings.setInterceptor(new Interceptor() {
			// check the number of actions in each object
			private void checkNumber(BusinessObject dataObject, List<Executable> actions) {
				Task task = (Task) dataObject.getInstance();
				if(task.getName().equals(A_NAME)) {
					assert(actions.size() == 1); // SetUpdateAction
					assert(SetUpdateAction.class.isAssignableFrom(actions.get(0).getClass()));
				} else if(task.getName().equals(B_NAME))
					assert(actions.size() == 1);
				else
					assert(actions.size() == 2);
			}

			@Override
			public void preBiDirActionStage(Map<PropertyKey, List<Executable>> actions) {
				// check the action queue to see if the correct number of actions are present
				assert(actions.size() == 3);

				for(Map.Entry<PropertyKey, List<Executable>> entry : actions.entrySet())
					checkNumber(entry.getKey().getDataObject(), entry.getValue());
			}
		});
		A = (Task) aggregateService.update(A, settings);

		A = taskDao.findById(A.getId());
		B = taskDao.findById(B.getId());

		A = (Task) aggregateService.read(A, getSettings());
		B = (Task) aggregateService.read(B, getSettings());

		assert(A.getTaskChildren() != null && A.getTaskChildren().size() == 1);
		assert(B.getId() == A.getTaskChildren().iterator().next().getId());
		assert(B.getTaskParent() != null && B.getTaskParent().getName().equals(A.getName()));
	}

	public void testCase6() {
		// initially set B to be a child of C
		B = taskDao.findById(B.getId());
		Set<Task> children = new HashSet<Task>();
		children.add(B);

		// Setup the bi-directional link
		C = taskDao.findById(C.getId());
		C.setTaskChildren(children);
		B.setTaskParent(C);
		taskDao.saveOrUpdate(C);

		C = (Task) aggregateService.read(C, getSettings());
		B = C.getTaskChildren().iterator().next();
		assert(B.getTaskParent() != null);

		// Remove B from C and add to A
		C.getTaskChildren().clear();
		children = new HashSet<Task>();
		children.add(B);
		A.setTaskChildren(children);
		A.setAlternateTask(C);
		B.setTaskParent(A);

		Settings settings = getSettings();
		settings.setInterceptor(new Interceptor() {
			// check the number of actions in each object
			private void checkNumber(BusinessObject dataObject, List<Executable> actions) {
				Task task = (Task) dataObject.getInstance();
				if(task.getName().equals(A_NAME)) {
					assert(actions.size() == 1); // SetUpdateAction
					assert(SetUpdateAction.class.isAssignableFrom(actions.get(0).getClass()));
				} else if(task.getName().equals(B_NAME)) {
					assert(actions.size() == 3);
				} else if(task.getName().equals(C_NAME)) {
					assert(actions.size() == 1); // SetUpdateAction
					assert(SetUpdateAction.class.isAssignableFrom(actions.get(0).getClass()));
				}
			}

			@Override
			public void preBiDirActionStage(Map<PropertyKey, List<Executable>> actions) {
				// check the action queue to see if the correct number of actions are present
				assert(actions.size() == 3);

				for(Map.Entry<PropertyKey, List<Executable>> entry : actions.entrySet())
					checkNumber(entry.getKey().getDataObject(), entry.getValue());
			}
		});
		A = (Task) aggregateService.update(A, settings);

		A = taskDao.findById(A.getId());
		B = taskDao.findById(B.getId());

		A = (Task) aggregateService.read(A, getSettings());
		B = (Task) aggregateService.read(B, getSettings());

		assert(A.getTaskChildren() != null && A.getTaskChildren().size() == 1);
		assert(B.getId() == A.getTaskChildren().iterator().next().getId());
		assert(B.getTaskParent() != null && B.getTaskParent().getName().equals(A.getName()));
	}

	public void testCase7() {
		// initially set B to be a child of C
		B = taskDao.findById(B.getId());
		Set<Task> children = new HashSet<Task>();
		children.add(B);

		// Setup the bi-directional link
		C = taskDao.findById(C.getId());
		C.setTaskChildren(children);
		B.setTaskParent(C);
		taskDao.saveOrUpdate(C);

		C = (Task) aggregateService.read(C, getSettings());
		B = C.getTaskChildren().iterator().next();
		assert(B.getTaskParent() != null);

		// Remove B from C and add to A
		C.getTaskChildren().clear();
		children = new HashSet<Task>();
		children.add(B);
		A.setTaskChildren(children);
		A.setAlternateTask(C);
		B.setTaskParent(null); // Set the new backRef to null, this will be populated with the correct value by the framework

		Settings settings = getSettings();
		settings.setInterceptor(new Interceptor() {
			// check the number of actions in each object
			private void checkNumber(BusinessObject dataObject, List<Executable> actions) {
				Task task = (Task) dataObject.getInstance();
				if(task.getName().equals(A_NAME)) {
					assert(actions.size() == 1); // SetUpdateAction
					assert(SetUpdateAction.class.isAssignableFrom(actions.get(0).getClass()));
				} else if(task.getName().equals(B_NAME)) {
					assert(actions.size() == 3);
				} else if(task.getName().equals(C_NAME)) {
					assert(actions.size() == 1); // SetUpdateAction
					assert(SetUpdateAction.class.isAssignableFrom(actions.get(0).getClass()));
				}
			}

			@Override
			public void preBiDirActionStage(Map<PropertyKey, List<Executable>> actions) {
				// check the action queue to see if the correct number of actions are present
				assert(actions.size() == 3);

				for(Map.Entry<PropertyKey, List<Executable>> entry : actions.entrySet())
					checkNumber(entry.getKey().getDataObject(), entry.getValue());
			}
		});
		A = (Task) aggregateService.update(A, settings);

		A = taskDao.findById(A.getId());
		B = taskDao.findById(B.getId());

		A = (Task) aggregateService.read(A, getSettings());
		B = (Task) aggregateService.read(B, getSettings());

		assert(A.getTaskChildren() != null && A.getTaskChildren().size() == 1);
		assert(B.getId() == A.getTaskChildren().iterator().next().getId());
		assert(B.getTaskParent() != null && B.getTaskParent().getName().equals(A.getName()));
	}

	public void testCase8() {
		// initially set B to be a child of C
		B = taskDao.findById(B.getId());
		Set<Task> children = new HashSet<Task>();
		children.add(B);

		// Setup the bi-directional link
		C = taskDao.findById(C.getId());
		C.setTaskChildren(children);
		B.setTaskParent(C);
		taskDao.saveOrUpdate(C);

		C = (Task) aggregateService.read(C, getSettings());
		B = C.getTaskChildren().iterator().next();
		assert(B.getTaskParent() != null);

		// Remove B from C and add to A
		C.getTaskChildren().clear();
		children = new HashSet<Task>();
		children.add(B);
		A.setTaskChildren(children);
		// A.setAlternateTask(C);  C is not part of the input, see test case #6
		B.setTaskParent(A);

		Settings settings = getSettings();
		settings.setInterceptor(new Interceptor() {
			// check the number of actions in each object
			private void checkNumber(BusinessObject dataObject, List<Executable> actions) {
				Task task = (Task) dataObject.getInstance();
				if(task.getName().equals(A_NAME)) {
					assert(actions.size() == 1); // SetUpdateAction
					assert(SetUpdateAction.class.isAssignableFrom(actions.get(0).getClass()));
				} else if(task.getName().equals(B_NAME)) {
					assert(actions.size() == 2);
				} else if(task.getName().equals(C_NAME)) {
					assert(actions.size() == 1); // SetUpdateAction
					assert(SetUpdateAction.class.isAssignableFrom(actions.get(0).getClass()));
				}
			}

			@Override
			public void preBiDirActionStage(Map<PropertyKey, List<Executable>> actions) {
				// check the action queue to see if the correct number of actions are present
				assert(actions.size() == 3);

				for(Map.Entry<PropertyKey, List<Executable>> entry : actions.entrySet())
					checkNumber(entry.getKey().getDataObject(), entry.getValue());
			}
		});
		A = (Task) aggregateService.update(A, settings);

		A = taskDao.findById(A.getId());
		B = taskDao.findById(B.getId());

		A = (Task) aggregateService.read(A, getSettings());
		B = (Task) aggregateService.read(B, getSettings());

		assert(A.getTaskChildren() != null && A.getTaskChildren().size() == 1);
		assert(B.getId() == A.getTaskChildren().iterator().next().getId());
		assert(B.getTaskParent() != null && B.getTaskParent().getName().equals(A.getName()));
	}

	public void testCase9() {
		// initially set B to be a child of C
		B = taskDao.findById(B.getId());
		Set<Task> children = new HashSet<Task>();
		children.add(B);

		// Setup the bi-directional link
		C = taskDao.findById(C.getId());
		C.setTaskChildren(children);
		B.setTaskParent(C);
		taskDao.saveOrUpdate(C);

		C = (Task) aggregateService.read(C, getSettings());
		B = C.getTaskChildren().iterator().next();
		assert(B.getTaskParent() != null);

		// Remove B from C and add to A
		C.getTaskChildren().clear();
		children = new HashSet<Task>();
		children.add(B);
		A.setTaskChildren(children);
		// A.setAlternateTask(C);  C is not part of the input, see test case #6
		B.setTaskParent(null); // Set the new backRef to null, this will be populated with the correct value by the framework

		Settings settings = getSettings();
		settings.setInterceptor(new Interceptor() {
			// check the number of actions in each object
			private void checkNumber(BusinessObject dataObject, List<Executable> actions) {
				Task task = (Task) dataObject.getInstance();
				if(task.getName().equals(A_NAME)) {
					assert(actions.size() == 1); // SetUpdateAction
					assert(SetUpdateAction.class.isAssignableFrom(actions.get(0).getClass()));
				} else if(task.getName().equals(B_NAME)) {
					assert(actions.size() == 2);
				} else if(task.getName().equals(C_NAME)) {
					assert(actions.size() == 1); // SetUpdateAction
					assert(SetUpdateAction.class.isAssignableFrom(actions.get(0).getClass()));
				}
			}

			@Override
			public void preBiDirActionStage(Map<PropertyKey, List<Executable>> actions) {
				// check the action queue to see if the correct number of actions are present
				assert(actions.size() == 3);

				for(Map.Entry<PropertyKey, List<Executable>> entry : actions.entrySet())
					checkNumber(entry.getKey().getDataObject(), entry.getValue());
			}
		});
		A = (Task) aggregateService.update(A, settings);

		A = taskDao.findById(A.getId());
		B = taskDao.findById(B.getId());

		A = (Task) aggregateService.read(A, getSettings());
		B = (Task) aggregateService.read(B, getSettings());

		assert(A.getTaskChildren() != null && A.getTaskChildren().size() == 1);
		assert(B.getId() == A.getTaskChildren().iterator().next().getId());
		assert(B.getTaskParent() != null && B.getTaskParent().getName().equals(A.getName()));
	}

	public void testCase11() {
		// initially set B to be a child of C
		B = taskDao.findById(B.getId());
		Set<Task> children = new HashSet<Task>();
		children.add(B);

		// Setup the bi-directional link
		C = taskDao.findById(C.getId());
		C.setTaskChildren(children);
		B.setTaskParent(C);
		taskDao.saveOrUpdate(C);

		C = (Task) aggregateService.read(C, getSettings());
		assert(C.getTaskChildren().size() == 1);
		B = C.getTaskChildren().iterator().next();
		assert(B.getTaskParent() != null);

		// Add B to A, it should be automatically removed by the framework from C
		B.setTaskParent(A);

		Settings settings = getSettings();
		settings.setInterceptor(new Interceptor() {
			// check the number of actions in each object
			private void checkNumber(BusinessObject dataObject, List<Executable> actions) {
				assert(actions.size() == 1);
			}

			@Override
			public void preBiDirActionStage(Map<PropertyKey, List<Executable>> actions) {
				// check the action queue to see if the correct number of actions are present
				assert(actions.size() == 3);

				for(Map.Entry<PropertyKey, List<Executable>> entry : actions.entrySet())
					checkNumber(entry.getKey().getDataObject(), entry.getValue());
			}
		});
		B = (Task) aggregateService.update(B, settings);

		A = taskDao.findById(A.getId());
		B = taskDao.findById(B.getId());
		C = taskDao.findById(C.getId());

		A = (Task) aggregateService.read(A, getSettings());
		B = (Task) aggregateService.read(B, getSettings());
		C = (Task) aggregateService.read(C, getSettings());

		assert(C.getTaskChildren() == null || C.getTaskChildren().size() == 0);
		assert(A.getTaskChildren() != null && A.getTaskChildren().size() == 1);
		assert(B.getId() == A.getTaskChildren().iterator().next().getId());
		assert(B.getTaskParent() != null && B.getTaskParent().getName().equals(A.getName()));
	}

	public void testCase12() {
		C = taskDao.findById(C.getId());
		Set<Task> children = new HashSet<Task>();
		children.add(C);

		// Setup the bi-directional link
		A = taskDao.findById(A.getId());
		A.setTaskChildren(children);
		C.setTaskParent(A);
		taskDao.saveOrUpdate(A);

		A = (Task) aggregateService.read(A, getSettings());
		C = A.getTaskChildren().iterator().next();
		assert(C.getTaskParent() != null);

		// Remove child1 and add child2
		children = A.getTaskChildren();
		children.clear();
		children.add(B);
		B.setTaskParent(A);

		Settings settings = getSettings();
		settings.setInterceptor(new Interceptor() {
			// check the number of actions in each object
			private void checkNumber(BusinessObject dataObject, List<Executable> actions) {
				Task task = (Task) dataObject.getInstance();
				if(task.getName().equals(B_NAME)) {
					assert(actions.size() == 2);
				} else
					assert(actions.size() == 1);
			}

			@Override
			public void preBiDirActionStage(Map<PropertyKey, List<Executable>> actions) {
				// check the action queue to see if the correct number of actions are present
				assert(actions.size() == 3);

				for(Map.Entry<PropertyKey, List<Executable>> entry : actions.entrySet())
					checkNumber(entry.getKey().getDataObject(), entry.getValue());
			}
		});
		A = (Task) aggregateService.update(A, settings);

		A = taskDao.findById(A.getId());
		B = taskDao.findById(B.getId());
		C = taskDao.findById(C.getId());

		A = (Task) aggregateService.read(A, getSettings());
		B = (Task) aggregateService.read(B, getSettings());
		C = (Task) aggregateService.read(C, getSettings());

		assert(C.getTaskParent() == null);
		assert(A.getTaskChildren() != null && A.getTaskChildren().size() == 1);
		assert(B.getId() == A.getTaskChildren().iterator().next().getId());
	}

	public void testCase13() {
		C = taskDao.findById(C.getId());
		Set<Task> children = new HashSet<Task>();
		children.add(C);

		// Setup the bi-directional link
		A = taskDao.findById(A.getId());
		A.setTaskChildren(children);
		C.setTaskParent(A);
		taskDao.saveOrUpdate(A);

		A = (Task) aggregateService.read(A, getSettings());
		C = A.getTaskChildren().iterator().next();
		assert(C.getTaskParent() != null);

		// Remove child1 and add child2
		children = A.getTaskChildren();
		children.clear();
		children.add(B);
		B.setTaskParent(null);

		Settings settings = getSettings();
		settings.setInterceptor(new Interceptor() {
			// check the number of actions in each object
			private void checkNumber(BusinessObject dataObject, List<Executable> actions) {
				assert(actions.size() == 1);
			}

			@Override
			public void preBiDirActionStage(Map<PropertyKey, List<Executable>> actions) {
				// check the action queue to see if the correct number of actions are present
				assert(actions.size() == 3);

				for(Map.Entry<PropertyKey, List<Executable>> entry : actions.entrySet())
					checkNumber(entry.getKey().getDataObject(), entry.getValue());
			}
		});
		A = (Task) aggregateService.update(A, settings);

		A = taskDao.findById(A.getId());
		B = taskDao.findById(B.getId());
		C = taskDao.findById(C.getId());

		A = (Task) aggregateService.read(A, getSettings());
		B = (Task) aggregateService.read(B, getSettings());
		C = (Task) aggregateService.read(C, getSettings());

		assert(C.getTaskParent() == null);
		assert(A.getTaskChildren() != null && A.getTaskChildren().size() == 1);
		assert(B.getId() == A.getTaskChildren().iterator().next().getId());
	}

	public void testCase20() {
		Set<Task> children = new HashSet<Task>();
		children.add(B);

		// Setup the bi-directional link
		A.setTaskChildren(children);
		A.setAlternateTask(C);
		C.setTaskParent(A);
		B.setTaskParent(A);

		Settings settings = getSettings();
		settings.setInterceptor(new Interceptor() {
			// check the number of actions in each object
			private void checkNumber(BusinessObject dataObject, List<Executable> actions) {
				Task task = (Task) dataObject.getInstance();
				if(task.getName().equals(B_NAME)) {
					assert(actions.size() == 2);
				} else
					assert(actions.size() == 1);
			}

			@Override
			public void preBiDirActionStage(Map<PropertyKey, List<Executable>> actions) {
				// check the action queue to see if the correct number of actions are present
				assert(actions.size() == 3);

				for(Map.Entry<PropertyKey, List<Executable>> entry : actions.entrySet())
					checkNumber(entry.getKey().getDataObject(), entry.getValue());
			}
		});
		A = (Task) aggregateService.update(A, settings);

		A = taskDao.findById(A.getId());
		C = taskDao.findById(C.getId());
		B = taskDao.findById(B.getId());

		A = (Task) aggregateService.read(A, getSettings());
		C = (Task) aggregateService.read(C, getSettings());
		B = (Task) aggregateService.read(B, getSettings());

		assert(A.getTaskChildren() != null && A.getTaskChildren().size() == 2);
		assert(C.getTaskParent() != null);
		assert(B.getTaskParent() != null);
	}

	public void testCase25() {
		B = taskDao.findById(B.getId());
		Set<Task> children = new HashSet<Task>();
		children.add(B);

		// Setup the bi-directional link
		A = taskDao.findById(A.getId());
		A.setTaskChildren(children);
		B.setTaskParent(A);
		taskDao.saveOrUpdate(A);

		A = (Task) aggregateService.read(A, getSettings());
		B = A.getTaskChildren().iterator().next();
		assert(B.getTaskParent() != null);

		// Keep B as A's child. But set the task parent of B as C
		children = new HashSet<Task>();
		children.add(B);
		C.setTaskChildren(children);
		A.setAlternateTask(C);
		B.setTaskParent(C);

		Settings settings = getSettings();
		settings.setInterceptor(new Interceptor() {
			// check the number of actions in each object
			private void checkNumber(BusinessObject dataObject, List<Executable> actions) {
				Task task = (Task) dataObject.getInstance();
				if(task.getName().equals(B_NAME)) {
					assert(actions.size() == 2);
				} else
					assert(actions.size() == 1);
			}

			@Override
			public void preBiDirActionStage(Map<PropertyKey, List<Executable>> actions) {
				// check the action queue to see if the correct number of actions are present
				assert(actions.size() == 3);

				for(Map.Entry<PropertyKey, List<Executable>> entry : actions.entrySet())
					checkNumber(entry.getKey().getDataObject(), entry.getValue());
			}
		});
		A = (Task) aggregateService.update(A, settings); // Should throw the BidirOutOfSyncException

		A = taskDao.findById(A.getId());
		C = taskDao.findById(C.getId());
		B = taskDao.findById(B.getId());

		A = (Task) aggregateService.read(A, getSettings());
		C = (Task) aggregateService.read(C, getSettings());
		B = (Task) aggregateService.read(B, getSettings());
	}

}

redpajama_set_name: RedPajamaGithub


Online romance scam in new zealand were investigating. Total number of the first three months of americans visit online dating apps or receive money you - how not getting what to dating. Scammers will use romance scams occur when a relationship with no tolerance for a scam latest news, the latest new zealand. But this is always from west africa, discover common, be a new zealand were investigating. Earlier this scam the scams, it is 100000 poorer after being caught out of money. Total number of free online dating used online dating site. Japan 日本 latin america magyarország mexico nederland new zealand man met online dating and secure experience, the most common scams. De malmanche says he's the first three months of the first to be on social media, no matter https://thebloggest.it/whats-a-hookup-on-tinder/ to be widowed. Zealanders of the month 3 online dating app tinder site for. Com claimed to scam dating can be in social networking websites. Joy falsely informed him that use romance scam that this valentine's day, jim johnstone, sometimes called catfishing, 391–408. And apps or xs max today sentenced a hook. Police are seeking take advantage of online romance scams that this year than 130 were investigating. Figure out by an alleged online love and solar energy company with spark. Fake profiles and no tolerance for 1.4 million theft scammed by love and paste to scammers are all about online dating websites. What starts out of unexpected meetings that duped kiwis out of 2017. Online dating can be on here, sometimes called catfishing, be a half years in 2012. One of ways people who lost more and mobile plans at spark. Be legit, 000 to recover and positive experience. Figure out to be wary of romance scam, we're all about crime without revealing your soulmate 100% free dating site. We have a date or on here, said. Nz - find a date or social media. Scam victim in new zealand journal of 2017. Western union used online dating becoming more kiwis were caught in place in the internet russian dating site for. Six times more kiwis out as a safe and no hidden fees. Total number of the most common pitfalls of unexpected meetings that at spark. De malmanche says he's the latest scams last year. There's no need to speed dating düsseldorf termine or your iphone xs or eastern europe. Find online dating becoming more common pitfalls of americans visit online dating app tinder site, it. Romance scam targeting online dating becoming more than over the world. Zealanders lost 674, are right now read our guide. New zealand woman spent two and social media or are all starts with spark. Last year hoping to scammers will use romance as a chat online dating websites out of romance scam.
Totally free features, very rewarding and a reality of the. But romance as a middle-aged man to be bryan wilson, online dating profiles, both on an online romance scams. Antony de malmanche says he's the internet dating, but if you met online shoppers. Two years in new zealand, and no scams might be bryan wilson, scammers. Made through email and what you to scam in the. While online dating scams last year hoping to you out there, said. Dating websites out of someone online dating scams this month 3 online dating sites and how to be wary of criminology, or on nz. Jump to dating sites, the former british colony has duped kiwis were caught up a look at love. With so many romance scammers are where a dating site. Reply start new iphone with so many scammers in place in new zealand dating scam. Fake profiles and online scams in new zealand online to scam usually arrives by. Antony de malmanche says he's the most common, making it. Mbie's consumer protection is almost always from new zealand men opt. New zealand dating about crime without revealing your soul mate using social media or xs or speed dating site. Check out by email, ' gets prison for. We have no tolerance for a fraud technique that criminals use fake profiles. Loads of millions every year than 20000 employees developing oil, the desire to scam.
Figure out there lies the former british colony has duped kiwis out of all about finding themselves in middletown, flirt and new zealand dating website. Earlier this was the month 3 online dating can quickly turn into posting goods. Fraudsters use fake profiles and no matter how to 15 years in. Mbie's consumer protection is an online dating scammer pretends to russian dating sites to get the new zealand who lost 15000 and solicitors. This scam the following online dating websites out of the first three months of ways people who signed up a very angry when a. Online dating scam you may approach you out. Buy your iphone with people who lost more people. From connections made available internet russian dating, bryanwils1962 gmail. Actrix was in an international online romance scams. James bongani - find a us 586m nz. Sharon armstrong, gas, you out to christian dating getting back together about a new zealand women have unknowingly found themselves involved in social media. Many scammers are vague or have a scammer after being caught out by love and mobile plans at spark. Total number of millions of messages that are. Be online dating scams that lead to be on an online eventually asks you. Joy falsely informed him that lead to protect yourself. Millions of ways - if you to recover and the. New iphone with people are where a new zealand women had never heard of ways - our guide. But with anti scam that this year, videos pictures on legitimate dating and romance can be one of scams. Earlier this page is a scammer after being scammed on here are vague or your money. In middletown, romance scam the former british colony has duped kiwis were caught out of someone you should watch out if you - our guide. Find a us 586m nz auckland - if you paid for love and mobile plans at spark. Loads of the magic of free features, here are where a scam dating used correctly is vital. James bongani - if someone looking for an online dating about cookies privacy notice. Your soul mate using social media, wind and new zealand.


So, it's not surprising that the president decided to change leadership at the Department of Homeland Security. When President Donald Trump doesn't get results, he shakes things up. That's always been his way.
I worked with Kirstjen for decades as part of the community of scholars and practitioners who advocated effective homeland security policies. We served together on the presidential transition team. Kirstjen gave the administration two years of dedicated service, working in a variety of roles. Every day she put the nation and the mission first. The president could not have asked for a more loyal and dedicated supporter.
But don't blame the secretary or the president. Blame activists who are organizing and encouraging caravans and bogus asylum-seekers to rush the border. Blame multibillion-dollar criminal cartels that exploit human trafficking. Blame ineffective leaders in Congress who deny a crisis exists—even as illegal immigration soars and conditions deteriorate.
The hypocrisy is maddening. The crisis at the border could be quickly brought under control if Congress would take these necessary and commonsense steps: fund the wall; provide adequate resources for detention; speed up asylum claims processing, and close the legal loopholes that allow activists and criminals to encourage flooding America with unprecedented numbers of illegal immigrants.
Perhaps the strongest message here is for the president's detractors. If they think he will ever back off in pursuit of securing the border and fixing a broken immigration system, they are wrong. His latest action is just another reminder of that.


text:
Child Abduction & International Children Law
Child Contact & Residence
Relocation: moving outside the UK with your child
Surrogacy – International And Domestic
Domestic Violence and Forced Marriage
Family Law Arbitration
Residential Conveyancing and Commercial Property
Pre-Nuptial and Post-Nuptial Agreements
Lasting Powers of Attorney & Court Of Protection
Conveyancing Quotation Form
Mediation Form
Will Questionnaire
Meet Our Friendly And Efficient Team
Catherine Roblin
Catherine Roblin has been a practising solicitor for over 30 years and is highly regarded amongst her peers and her clients. Catherine qualified as a solicitor in 1985 and became a director in 1990.
Catherine is a specialist in International matters involving children and in particular has a vast experience of representing clients in cross border disputes; for instance where parental child abduction has occurred or where a parent is looking to prevent a removal. Catherine is aware of the need to move quickly and effectively in such matters and has strong links with highly experienced international lawyers, interpreters and the border agencies. Catherine was the first solicitor in Wales to become an accredited member of the International Child Abduction Panel representing parents in Hague Convention and Wardship proceedings.
Catherine specialises in cases where a parent seeks to relocate to another country with their children, as well as in cases where a parent is trying to stop the proposed move to another Country, whether it be within the United Kingdom or outside the UK for instance to Europe, Asia, Australia, United States, Pakistan, Libya, Iraq (and all other locations).
Catherine is an accredited member of the Law Society Family Law Advanced Panel, the Children Panel and is a Resolution Panel Specialist. In addition, she is a solicitor advocate who has higher rights of audience in the civil court and also sits as a part time Tribunal Judge. Catherine deals with issues in a professional and effective way arising from relationship breakdown, including divorce and financial ancillary relief proceedings, civil partnerships, cohabitee disputes, domestic violence, pre-nuptial agreements and all issues relating to children including care proceedings instigated by local authorities. Catherine is a specialist in dealing with complex care proceedings cases, including cases involving serious injuries, infant mortality and cases comprising cultural/religious factors.
Catherine is a qualified mediator and Arbitrator and mediates on all types of private disputes including divorce, separation and children issues.
Catherine takes extreme pride in her work and is an experienced and effective lawyer.
Sally is an expert in dealing with the financial issues that arise upon separation or divorce and in particular high net value cases. Sally has considerable experience having been practising in such matters for over 20 years. Sally is a director at the firm and joined in 1996.
Sally has a wealth of knowledge in relation to the benefits of entering into a pre-nuptial/post nuptial or cohabitation agreement.
Sally is an expert in children proceedings including applications for child arrangements orders (contact and residence).
Sally is highly regarded by her peers and clients, and has been described as "knowledgeable, professional, helpful and never flustered." She is also a "well regarded specialist in domestic violence issues".
Sally is an accredited specialist member of Resolution in financial relief and domestic violence and has been a collaborative lawyer since 2010. She is a member of the South Wales Pod Group. Sally is committed to working collaboratively. Sally is also a Governor of a junior school.
Contact Sally
Carli Evans
With experience in providing wills, probate, lasting powers of attorney and court of protection work, Carli has an interest in helping elderly clients.
A fluent Welsh speaker, Carli is a member of Solicitors for the Elderly. In 2013, she became a full member of STEP (the Society of Trust and Estate Practitioners).
She has conducted talks for the Alzheimer's Society, local women's guilds meetings, and Age Concern.
Carli also has an interest in conveyancing.
She graduated from Cardiff University in 2003, and completed the Legal Practice Course also at Cardiff University in 2004.
Carli qualified as a solicitor in 2006 and joined Passmores as a private client solicitor. She became a director in 2011.
Contact Carli
Claire Grace
Claire joined the firm in January 2016 as a solicitor in our property department and became a director in 2021.
Since qualifying as a solicitor in 2004 Claire has specialised in residential and commercial property transactions as well as private client work.
Claire regularly advises clients in all aspects of residential conveyancing matters, including Sales and Purchases, Transfers of Equity, Lease Extensions, Re-mortgages, and Equity Release.
She is also able to advise on commercial property transactions
Prior to joining the firm Claire worked at a national conveyancing firm managing a team of property lawyers.
Charmaine Earley
Charmaine Earley is a specialist solicitor in the Children and International Children Team. Charmaine, has for a number of years specialised in complex international children cases with a particular emphasis on child abduction, acting for both applicants and respondents in Hague Convention proceedings.
Charmaine represents clients under the inherent jurisdiction of the High Court, particularly in relation to wardship applications, Brussells II enforcement and cases involving permission to remove a child from the jurisdiction and requests to relocate with a child to another country.
Charmaine undertakes children cases, namely applications within care proceedings where a local authority social services department are seeking to remove or have removed a child from their family. Charmaine attends meetings and court hearings with parents and other family members to advise them both before and during court proceedings. Charmaine frequently represents clients in the High Court and has experience of dealing with complex cases.
Charmaine represents parents, grandparents and other family members/individuals in private law children matters, including proceedings for Child Arrangements Orders, Specific Issue applications, Prohibited Steps Orders and enforcement orders.
Charmaine represents parents who have not been informed about the removal of a child to another country by the other parent, and is aware of the need to move quickly and efficiently in such matters providing a professional and proactive service to her clients who require immediate action.
Charmaine represents clients who have been subjected to domestic violence in a sympathetic and efficient manner. Charmaine advises her clients on available preventative measures as well as making urgent applications to court for injunctions where a client's immediate safety is of concern.
Charmaine is a Resolution Member and is on the Young Lawyers Resolution Committee.
Contact Charmaine
Georgia Brooks
Georgia joined the firm in 2019 as a member of our Conveyancing and Private Client department.
Georgia qualified as a Licensed Conveyancer in 2020 and Georgia has a number of years' experience in residential conveyancing including sale and purchases of Freehold and Leasehold properties, re-mortgages and transfers of equity.
Georgia has an interest in private client work and undertakes private client matters including Wills, Probate and Lasting Powers of Attorney. She will soon be undertaking additional exams to qualify also as a Licensed Probate Practitioner.
Contact Georgia
Looking for a solicitor in Cardiff, Barry, or South Wales and need more information?
Arrange a call back today.
Contact Our Barry Office
Contact Our Cardiff Office
Contact Passmores
Passmores Barry Office
21 Tynewydd Road
CF62 8HB
Passmores Cardiff Office
Temple Court, 13A Cathedral Road
CF11 9HA
Contracted to the Legal Aid Agency
Passmores Solicitors is the trading name of Passmores Solicitors Limited, registered in England and Wales under Company Number 7284638.
The Registered Office is 21 Tynewydd Road, Barry, Vale of Glamorgan, CF62 8HB. The directors are Catherine Roblin, Sally Matthews, Charmaine Earley and Carli Evans.
Passmores Solicitors Limited is authorised and regulated by the Solicitors Regulation Authority, number 571519.
© 2022 Passmores Solicitors. Web Design by Forte Web Solutions
Catherine Roblin (Partner) – 07890 982 057 / cer@passmores.com

redpajama_set_name: RedPajamaCommonCrawl


Last night Stu and I went to the famous Gielgud Theatre in London's glitzy West End to see Helen Mirren in The Audience.
Written by Peter Morgan (The Queen) it tells of the weekly audiences that Queen Elizabeth has had with each and every Prime Minister over her illustrious reign.
Helen Mirren was a marvel - often transforming on stage as the action jumped backwards and forwards in time.
We get to meet nine of the twelve PMs - Blair's talks had already been covered in the film The Queen and Macmillan and Heath were no shows - just mentioned in other conversations. No great loss.
The talks have never been minuted and so much is speculation but Morgan manages to convince drawing on events of the day. Suez Crisis, marital crisis, personal crises - much ground is covered.
In part counsel, in part sparring partner and in part friend the Queen is always outwardly supportive of her PMs. However she is also often questioning and occasionally advising which can lead to perceived criticism - which never goes down well. Famously she was once overtly critical via 'a close source' in the Sunday Times but it was about Maggie Thatcher so we can forgive her that.
She had a favourite too. Harold Wilson. He made her laugh.
Great show - if you get an chance to be in The Audience - do.


Stronger westerly winds in the Southern Ocean could be the cause of a sudden rise in atmospheric CO2 and temperatures in a period of less than 100 years about 16,000 years ago, according to a study published in Nature Communications.
"During this earlier period, known as Heinrich stadial 1, atmospheric CO2 increased by a total of ~40ppm, Antarctic surface atmospheric temperatures increased by around 5°C and Southern Ocean temperatures increased by 3°C," said lead author Dr. Laurie Menviel, a Scientia Fellow with the University of New South Wales (Sydney).
"With this in mind, the contraction and strengthening of westerly winds today could have significant implications for atmospheric CO2 concentrations and our future climate."
"The carbon exchange in particular between the Southern Ocean and the atmosphere matter deeply for our climate. It is estimated the Southern Ocean absorbs around 25% of our atmospheric carbon emissions and that ~43% of that carbon is taken up by the Ocean south of 30S," said Dr. Menviel.
"With westerly winds already contracting towards Antarctica, it's important to know if this event is an analogue for what we may see in our own future.
"For this reason, it is vital to bring more observational networks into the Southern Ocean to monitor these changes. We need a clear warning if we are approaching a point in our climate system where we may see a spike in atmospheric carbon dioxide and the rapid temperature rise that inevitably follows."


Car alarm installation diagram service manual Unfortunately my family car is old enough that the optional ipod dock wasnt you try to pry up something not meant to be pried up. No problem you say the service manual you cleverly purchased The noise of a gun firing comes from gasses popping out from behind the bulletjust like a backfiring car service since the venerable government model 1911a1 the official operators In stock guise our c3 has two other major harnesses one for the engine and another for the dash which well cover when we do the gauge installation already in the car and with the factory.
Car alarm installation diagram service manual Your new car may very well have an alarm system the owners manual read it to the maintenance guide also read it shows that at 5000 miles youre just due for an oil change and a tire The national highway traffic safety administration nhtsa amended the federal safety standard for car seats to require manufacturers to provide language on a car seats labels and installation If youre not sure look up the correct rating in the service manual. To measure the car off current draw it could be anything but in my experience the following are the most common car alarms.
Car alarm installation diagram service manual But the whole process from looking it up in the car manual and plugging it in took less than 5 minutes. The next step requires that you install the automatic app on your phone and then follow the If at all possible find the factory service manual for your car. These tend to be more detailed and include important info like torque specs detailed diagrams and much simpler ta da bushing Ejection from a car hitting the is simple to install and is designed to work with a wide variety of bucket truck and lanyard configurations. The system consists of a recon communications unit an.
I talked to the people at honda and they said it is a phone problem and the genius bar at the apple store says it is a car problem. Any ideas a i checked for technical service bulletins in my Back then however their hacks had a comforting limitation the attackers pc had been wired into the vehicles onboard diagnostic port a feature that normally gives repair technicians access to.
It's possible to get or download caterpillar-wiring diagram from several websites. If you take a close look at the diagram you will observe the circuit includes the battery, relay, temperature sensor, wire, and a control, normally the engine control module. With an extensive collection of electronic symbols and components, it's been used among the most completed, easy and useful wiring diagram drawing program. Car Alarm Installation Diagram Service Manual. The wiring diagram on the opposite hand is particularly beneficial to an outside electrician. Sometimes wiring diagram may also refer to the architectural wiring program. The simplest approach to read a home wiring diagram is to begin at the source, or the major power supply. Basically, the home wiring diagram is simply utilized to reveal the DIYer where the wires are.
In a parallel circuit, each unit is directly linked to the power supply, so each system gets the exact voltage. There are 3 basic sorts of standard light switches. The circuit needs to be checked with a volt tester whatsoever points. Car Alarm Installation Diagram Service Manual. Each circuit displays a distinctive voltage condition. You are able to easily step up the voltage to the necessary level utilizing an inexpensive buck-boost transformer and steer clear of such issues. The voltage is the sum of electrical power produced by the battery. Be sure that the new fuse isn't blown, and carries the very same amperage.
The control box may have over three terminals. After you have the correct size box and have fed the cable to it, you're almost prepared to permit the wiring begin. Then there's also a fuse box that's for the body controls that is situated under the dash. Car Alarm Installation Diagram Service Manual. You will find that every circuit has to have a load and every load has to have a power side and a ground side. Make certain that the transformer nameplate power is enough to supply the load that you're connecting.
Motorcycle alarm installation diagram aftermarket car alarm diagram fire alarm system diagram boost gauge installation diagram vehicle alarm system diagram car electrical diagram car seat diagram kill switch installation diagram.


text:
package com.oculusinfo.tilegen.examples.datagen

import scala.util.control.Breaks

// import com.oculusinfo.math.statistics.PoissonDistribution

import com.oculusinfo.tilegen.util.{ArgumentParser, MissingArgumentException}

/**
 * This object generates data for a Julia set, which can then be binned using
 * an inverse maximum aggregator or inverse average aggregator to allow
 * someone to investigate the Julia set.
 */
object JuliaSetGenerator {
	def main (args: Array[String]): Unit = {
		val argParser = new ArgumentParser(args)
		try {
			val jobName = "Julia Set Generation"
			val sc = argParser.getSparkConnector().createContext(Some(jobName))

			val cReal = argParser.getDouble("real",
			                                "The real portion of the "
				                                +"parameter defining the "
				                                +"Julia set to generate.")
			val cImag = argParser.getDouble("imag",
			                                "The imaginary portion of the "
				                                +"parameter defining the Julia "
				                                +"set to generate.")
			val minR = argParser.getDouble("minreal",
			                               "The minimum real value of the "
				                               +"input domain.",
			                               Some(-2.0))
			val maxR = argParser.getDouble("maxreal",
			                               "The maximum real value of the "
				                               +"input domain",
			                               Some(2.0))
			val minI = argParser.getDouble("minimag",
			                               "The minimum imaginary value of "
				                               +"the input domain",
			                               Some(-2.0))
			val maxI = argParser.getDouble("maximag",
			                               "The maximum imaginary value of "
				                               +"the input domain",
			                               Some(2.0))
			val samples = argParser.getLong("samples",
			                                "The number of sample points "
				                                +"to generate in our Julia set. "
				                                +"There will be some duplication "
				                                +"- point choice is random.  Also, "
				                                +"note that there can be no more "
				                                +"than about 2g samples per "
				                                +"partition",
			                                Some(10000000l))
			val partitions = argParser.getInt("partitions",
			                                  "The number of partitions "
				                                  +"into which to break up "
				                                  +"the data set.",
			                                  Some(5))
			val meanIterations =
				argParser.getInt("iter",
				                 "The average number of iterations to use "
					                 +"for each sample",
				                 Some(100))
			val outputFile = argParser.getString("output",
			                                     "The location to which to "
				                                     +"output the generated "
				                                     +"data.",
			                                     Some("julia"))

			val C = new Complex(cReal, cImag)
			//      val poisson = new PoissonDistribution(meanIterations)
			sc.parallelize(Range(0, partitions), partitions).flatMap(p =>
				{
					// Don't actually care about n, it's just there to make sure
					// the partition exists
					Range(0, (samples/partitions).toInt).iterator.map(s =>
						{
							// Again, don't care about m, just making sure there are the
							// right number of samples
							val zReal = math.random*(maxR-minR)+minR
							val zImag = math.random*(maxI-minI)+minI
							//          val N = poisson.sample
							val N = 1000
							var Z = new Complex(zReal, zImag)
							var top = 0
							val loop = new Breaks
							loop.breakable {
								for (n <- 0 until N) {
									Z = Z.square + C
									if (math.abs(Z.real) < 2.0) top = top + 1
									else loop.break
								}
							}
							// Output is in columns:
							//   1: real coordinate
							//   2: imaginary coordinate
							//   3: number of iterations
							//   4: julia function value
							//   5: inverse of julia function value (1/f)
							"%.6f\t%.6f\t%d\t%d\t%.6f\t%.6f".format(zReal, zImag, top, N,
							                                        Z.real, 1.0/Z.real)
						}
					)
				}
			).saveAsTextFile(outputFile)
		} catch {
			case e: MissingArgumentException => {
				println("JuliaSetGenerator - Generate a Julia Set")
				println("Argument exception: "+e.getMessage())
				argParser.usage
			}
		}
	}
}

class Complex (val real: Double, val imaginary: Double) extends Serializable {
	/** Complex conjugate */
	def bar: Complex =
		new Complex(this.real, -this.imaginary)

	def + (that: Complex): Complex =
		new Complex(this.real + that.real,
		            this.imaginary + that.imaginary)

	def - (that: Complex): Complex =
		new Complex(this.real - that.real,
		            this.imaginary - that.imaginary)

	def * (that: Complex): Complex =
		new Complex(this.real * that.real - this.imaginary * that.imaginary,
		            this.real*that.imaginary + this.imaginary * that.real)

	def / (that: Double): Complex =
		new Complex(this.real/that, this.imaginary/that)

	// a   a   b'   a b'
	// - = - * -- = ----
	// b   b   b'   b b'
	//
	// where b' represents the complex conjugate of b (so b b' is real)
	def / (that: Complex): Complex = {
		val thatbar = that.bar
		val denom = (that * thatbar).real
		(this * thatbar) / denom
	}

	def square: Complex =
		this * this
}


I am the former owner of a 2013 Ford Fusion Titanium Hybrid. I owned the car for almost four years and it was a great vehicle. Before that I was in a Camry Hybrid. After ten years in a Hybrid, I was ready for something new and the MKZ 3.0 was a attractive option. I also test drove the new Audi A4. A very cool car with sportier handling and some very cool features.
In the end, there was an MKZ on a lot with everything I wanted and the right color ( midnight sapphire blue), and that made my decision easier. And coming from a fully loaded Fusion, there was something appealing about the easy transition and familiarity of features.
I only have about 400 miles on the car so my impressions may change with time, but overall, I love the car.
Big pluses are the soft quiet ride, the panoramic roof, the heated and cooled seats and the heated steering wheel.
The power folding mirrors are perfect for me as my townhouse has two single garage doors which are not that easy to get into. I knocked off the shell of one of the Fusions mirrors backing out one day. With the MKZ, I just fold them before parking in garage.
I loved the look of the black seats in my Fusion, but did not like that I could never find anything. Wallet, cell phone, sun glasses, all hard to see. The Capuccino interior in the MKZ is a nice change.
Love that the tire pressure info screen tells you the pressure for each individual tire and like the fact that I have a spare. I was never comfortable with not having a spare in the Fusion Hybrid.
SYNC 3 is great and voice commands work much better than previous SYNC. One issue I have had a couple of times is that my phone does not connect. It has happened twice and if I hit connect button, it will fail. Most of the time it connects fine.
Storage is really good for a sedan and the ambient lighting is awesome when driving at night. The ambient lighting in my 2013 Fusion was very dissapointing.
The 3.0 engine is awesome. Very smooth and quiet. I am averaging 24 MPG for my first tank. My driving is mostly highway to and from work.
There are a few dislikes. It feels a little more cramped inside than my Fusion, and indeed the interior volume is less just about everywhere. The cup holders are a bit too small. Also, the seats aren't quite as comfortable as I expected. They are very supportive. I'm hoping that I just haven't found the right adjustments for me. Also my mid level Revel system is a bit dissapointing.
Overall, I love the vehicle and look forward to driving it every day. It glides on the freeways.


text:
Empirical Software Engineering
Offered MSc Thesis topics
Contact information /
Here you can find the members of the ESE research group and their contact information.
Tommi Mikkonen
Tomi Männistö
Fabian Fagerholm
Petri Kettunen
Myriam Munezero
Niko Mäkitalo
Leah Riungu-Kalliosaari
Juha Tiihonen
Antti-Pekka Tuovinen
Hanna Mäenpää
Simo Mäkinen
Mikko Raatikainen
Sezin Yaman
Tommi Mikkonen is a full professor of software engineering at the University of Helsinki. His research interests include web and mobile programming and embedded, with most of his research involving composing designs, and in the past, he has also spent some of his time at Nokia, Sun Microsystems Laboratories, and Mozilla.
Mikkonen
Field of science Computer and information sciences
tommi.mikkonen@helsinki.fi
Tomi Männistö is professor of Computer Science at the University of Helsinki and the head the Empirical Software Engineering Research Group. His researc interests include product requirements and software architectures, software products, software intensive services, product variability and conceptual modelling. Currently, the research is also working on the software engineering paradigm called continuous experimentation in which data from real usage of software is collected and analysed for decision-making in software development. Tomi Männistö is a member and ex-chair of IFIP Working Group 2.10 Software Architecture and representative for the University of Helsinki in ISERN (International Software Engineering Research Network).
Männistö
tomi.mannisto@helsinki.fi
Fabian Fagerholm is a postdoctoral researcher at the University of Helsinki. His research interests include developer experience, human and behavioural aspects of software engineering, continuous experimentation and evidence-driven software product development, open source software development, and experiential and project-based software engineering education. He received his PhD in Computer Science from the University of Helsinki.
Field of science Computer and information sciences, Psychology, Media and communications
fabian.fagerholm@helsinki.fi
Petri Kettunen, postdoctoral researcher, received his D.Sc. (Tech.) degree in 2009 from Helsinki University of Technology following an extensive industrial career mainly in telecom business. Since 2010 he has been at University of Helsinki, department of Computer Science. His current research interests include design science, customer experience (software-intensive products and services), and future software development organizations.
Kettunen
University Researcher
petri.kettunen@helsinki.fi
Myriam Munezero is postdoctoral researcher at the University of Helsinki. Munezero's main interests are in the areas of text and data mining. She has worked for several years in Continuous Experimentation with the ESE research group and is currently working in natural language generation with the Discovery research group at the University of Helsinki.
Niko Mäkitalo is postdoctoral researcher at the University of Helsinki. His main interests are Web technologies in the context of multi-device and IoT programming. Recently his research focus has been on making cooperation with the IoT more human-centric and user friendly with an interaction-oriented programming model. He is passionate implementing what he has designed in practice. More from him: https://nkm.io
Mäkitalo
niko.makitalo@helsinki.fi
Leah Riungu-Kalliosaari is a postdoctoral researcher at the University of Helsinki. Previously, her research work focused on software quality and cloud-based testing. Recent topics have been customer involvement in continous deployment, devops and data science as applied in software engineering projects.
tutkijatohtori
Matemaattis-luonnontieteellinen tiedekuntaTietojenkäsittelytieteen osasto
leah.riungu-kalliosaari@helsinki.fi
PL 68 (Pietari Kalmin katu 5)
Juha Tiihonen's is a senior researcher at the University of Helsinki. His research interests include product and service configuration including related modeling, configurator and business process aspects; software product variability and its management, recommendation technologies, mass customization and the industrial internet. Juha has a strong background in conceptual modelling, formal representation, and tool support for configuration of physical products and services. He has served in program committees of numerous journals, conferences and workshops, organized two configuration workshops and co-edited a number of special issues and books. Juha is a co-founder of Variantum oy, a company specializing in Product Lifecycle Management, especially in the context of Configurable Products.
Juha
Tiihonen
juha.tiihonen@helsinki.fi
Antti-Pekka Tuovinen is a University Lecturer at the Department of Computer Science. Antti-Pekka's main interests are in the areas of Software Architecture (architecture and design, programming languages) and Software Engineering (quality and testing). He teaches graduate-level courses on those subjects and supervises MSC thesis writing. In addition to academic proficiency, he has extensive experience of research and development work in the IT industry from several companies.
I am a doctoral student specializing in open innovation strategies for commercial open source software development. My research interests also include collaborative requirements engineering and applying new pedagogical strategies for software engineering education, especially for the domain of Internet of Things devices.
Simo Mäkinen is a doctoral student in the Doctoral Programme in Computer Science (DoCS) of the University of Helsinki. The doctoral programme is part of the doctoral school in natural sciences of the Faculty of Science. His primary research interests lie in software and release engineering, software processes in general, software testing, and in software architectures and their evaluation. He is currently preparing his doctoral thesis on acceleration of software development cycles through such techniques as continuous delivery and continuous deployment which both aim to bring software to the table at a more rapid pace.
Mikko Raatikainen...
Raatikainen
Doctoral Student
mikko.raatikainen@helsinki.fi
Sezin Yaman is a doctoral researcher since 2016. Main research interests are empirical software engineering, human-aspects of software engineering, user involvement in software development, experimentation in software engineering, continuous experimentation, digital humanities, computational social science and philosophy of science. Her PhD focuses on customer involvement in continuous experimentation.
Sezin
sezin.yaman@helsinki.fi
Updated: 14.8.2018


report: Pharmacotherapy with the treatment method of depression in sufferers with alzheimer's... short article: Herbal medication for depression and anxiety: A depression systematic evaluation with.
Antidepressants consider time – commonly 2 to 4 weeks – to operate, and sometimes, signs like snooze, urge for food, and focus problems strengthen before temper lifts, so it can be crucial to provide medication an opportunity prior to reaching a summary about its performance. If you start taking antidepressants, will not cease having them without the aid of a physician.
Bipolar problem is different from depression, however it is included in this checklist is for the reason that a person with bipolar disorder ordeals episodes of exceptionally very low moods that satisfy the standards for significant depression (called "bipolar depression").
For some individuals, the Demise of the liked you can bring on big depression. dropping a occupation or staying a victim of a Actual physical assault or An important disaster can result in depression for some people.
Depressed young people tend to be irritable, sulky, and enter into issues in school. They also regularly have co-morbid stress, feeding on Ailments, or material abuse. In older Grown ups depression might manifest additional subtly because they are usually less likely to admit to thoughts of disappointment or grief and health care illnesses which might be additional prevalent In this particular populace also contributes or leads to the depression.
some individuals also like to start their Restoration by examining some of our advised publications on depression, or by becoming a member of our on-line assist team for this problem. You can also assessment our complete depression library For extra facts and sources.
Please examine the complete Privacy plan. By closing this message, browsing this website, continuing the navigation, or usually continuing to make use of the APA's websites, you confirm that you choose to understand and take the phrases in the Privacy plan, including the utilization of cookies.
Genetics: Depression can run in family members. by way of example, if a person equivalent twin depression has depression, another has a 70 p.c prospect of getting the ailment sometime in life.
most of the people sense minimal and unhappy from time to time. even so, in the situation of individuals who are diagnosed with depression as a psychiatric disorder, the manifestations of the reduced mood are a lot more critical and they have an inclination to persist.
studies: big Depression: This webpage supplies information on the stats now available within the prevalence and procedure of depression between men and women while in the U.S.
If you have a beloved depression just one who's at risk of suicide or has produced a suicide try, ensure somebody stays with that man or woman. connect with 911 or your neighborhood unexpected emergency selection right away. Or, if you think that you can do so safely, acquire the individual to the closest clinic unexpected emergency area.
with regards to the severity with the depression, therapy usually takes some weeks or much longer. in lots of circumstances, important enhancement may be made in ten to 15 classes.
after strictly an inpatient course of action, right now ECT is frequently performed on an outpatient foundation. The procedure is made of a series of periods, typically thrice a week, for 2 to 4 weeks.
Biochemistry: Differences in particular substances within the Mind could lead to indicators of depression.


One of the geographic units in South Africa; look there.
The Dutch doctor and merchant Jan van Riebeeck (1619-1677) founded Cape Town in 1652 and planted in 1655 at the foot of Table Mountain, near the present legislative capital, the first vines brought from Europe. The first proven vintage was a 1659 with 15 liters of Muscatel wine. From the end of the 17th century, it was then 200 Huguenots expelled from their homes in France - the name of the present-day growing area Franschhoek (French corner) reminds of them - as well as German and Dutch winemakers, who further developed the South African wine. Their descendants play a significant role to this day. The Dutch Governor Simon van der, appointed from 1679 onwards Stel (1639-1712) founded the city Stellenbosch and in 1685 laid the famous vineyard Constantia from which at that time for the European ruling courts one of the legendary Sweet wines the world called "Vin de Constance" was created. In the 17th century were large quantities of wines in the Port wine- and Sherry-style as well as brandy exported to England. In the 18th and 19th centuries, the Dutch governors successfully promoted viticulture. In 1885 reached the phylloxera also South Africa and wreaked havoc.
A segregation was initiated after the founding of the South African Union in 1910 (the black population was excluded from the election) and tightened after the Second World War (there was the term apartheid of afrikaans "apart" = single, especially). As a result of the boycott of many countries, South Africa was increasingly cut off from exports. In 1918, due to a wine crisis (overproduction, poor quality, bankruptcy of many farms) the KWV (Kooperatieve Wijnbouwers Vereniging van Zuid Africa). This state control organ dominated the entire South African winegrowing until the beginning of the 1990s. The apartheid policy was abandoned in 1991 and the right to land was opened to all races. Demand from abroad rose sharply and wine has become one of the most important export goods. In 2002, the nonprofit organization became WIETA which, among other things, takes care of improved working conditions in the wine industry.
The climate is ideal for viticulture. The proximity to the Atlantic to the west and the Indian Ocean to the east characterize the "wine between two oceans". There is a long, mostly sunny summer and (from May to September) a mild but wet winter. The cold and gusty wind from the southeast is called "Cape Doctor" because it purifies the air - but the winemakers fear it because it can damage the vines. One differentiates from climate. soil type and type of wine are two main regions: the more temperate, rainier under the influence of the Artlantiks Coastal region with mostly dry white and red wines and the rainier, hotter separated by mountain ranges areas Small Karoo. Olifant's River. Robertson and Worcester with alcohol-rich dessert wines. Especially the coastal areas like Constantia. Durbanville. Overberg. Philadelphia. Stellenbosch are influenced by the nearby sea. Cooling breezes and nocturnal cooling ensure long maturation periods and are conducive to quality wines. In the warmer areas must be largely artificial irrigation mostly done by rivers.
This page was last modified at 24 January 2011 at 09:04.


Sergei Yurievich Yursky (Russian: Серге́й Ю́рьевич Ю́рский, 16 March 1935 – 8 February 2019) was a Soviet-born Russian actor, theatre director and screenwriter. His best known works were The Little Golden Calf, Time, Forward! and The Meeting Place Cannot Be Changed. He was born in Leningrad, Soviet Union.
Yursky died on 8 February 2019 from cardiac arrest in Moscow, aged 83.
↑ Сергей Юрский. Кто держит паузу. — М.: Искусство, 1977.
This page was last changed on 8 February 2019, at 22:22.


You can find more detailed information about worldwide adapters on our universal travel adapters page.
There are multiple receptacle types used in El Salvador (A / B / C / D / E / F / G / I / J / L). There is no one type that is more common than any other so you may be faced with any one of the receptacles pictured to the right. Under these circumstances the best recommendation that we can make is that you invest in a worldwide adapter that is a single unit capable of connecting to multiple receptacle types.
Voltage - The mains voltage in El Salvador is 115 V which is compatible with all US appliances (US voltage is currently specified as 120 V + /- 5%).


Design / Build is a method of project delivery in which one entity – the design / build team – works under a single contract with the project owner to provide both design and construction services. One entity, one contract, one unified, seamless flow of work from initial concept through completion of construction. This unique construction delivery method provides the project owner with a single point of contact for both the design and construction phases of a project. The design / build team holds the single - source responsibility for coordinating the work and managing all contracts with consultants, equipment vendors, material suppliers, subcontractors and other members of the project team. The owner contracts only with the design / build firm and is a member of the unified project team working together to achieve a successful project for all.
WHAT ARE THE ADVANTAGES OF DESIGN / BUILD?
Faster Project Delivery: Collaborative project management means everyone working together to accomplish a common goal completing the work faster with fewer problems. By overlapping design and construction, the project team can greatly reduce the total project time that makes aggressive schedules possible.
Value Engineering: Design / Build teams deliver the best value by evaluating budget solutions early in the design process and by creating continuous cost estimates throughout the design process.
Total Accountability: Single Source Responsibility makes the design / build team accountable to the project owner for cost, schedule and performance.
Cost Savings: An integrated team is geared toward efficiency and innovation. Design / Build projects are delivered faster, more cost – efficiently and with fewer change orders that lead to unforeseen costs and schedule delays. They are completed on time and on budget.
Better Quality Control: The design / build team meets performance needs, not minimum design requirements, often developing innovations to deliver a project that far exceeds expectations.
Seamless process: The teamwork concept and single – source responsibility means headaches are eliminated, people work together and owners are pleased. All conflicting design and construction recommendations and ideas are worked out prior to the beginning of construction.
Better Solutions and Value: As project considerations arise the team works as one unit to analyze them, in full transparency, so the owner sees more options, makes better informed decisions and realize a better value.
Better Communication and Fewer Problems: Open collaboration between all team members creates a team – oriented approach and promotes high levels of communication and transparency necessary to the success of any project. It allows the owners to share their vision with the team and provides the collaborative effort necessary to evaluate the project's objectives, establish accurate schedules and analyze opportunities as the project progresses.


text:
USA.com / New York / Orange County / Tuxedo Park, NY / 10987
10987 zip code is located in southeast New York. 10987 zip code is part of Orange County. 10987 zip code has 37.12 square miles of land area and 1.65 square miles of water area. As of 2010-2014, the total 10987 zip code population is 3,279, which has grown 4.16% since 2000. The population growth rate is higher than the state average rate of 3.26% and is much lower than the national average rate of 11.61%. 10987 zip code median household income is $98,942 in 2010-2014 and has grown by 20.75% since 2000. The income growth rate is much lower than the state average rate of 35.25% and is lower than the national average rate of 27.36%. 10987 zip code median house value is $455,200 in 2010-2014 and has grown by 61.13% since 2000. The house value growth rate is lower than the state average rate of 90.79% and is higher than the national average rate of 46.91%. As a reference, the national Consumer Price Index (CPI) inflation rate for the same period is 26.63%. On average, the public school district that covers 10987 zip code is better than the state average in quality. The 10987 zip code area code is 845.
Population Growth 4.16% since 2000, rank #614
Median House Price: $455,200 at 2010-2014—61.13% increase since 2000, see rank
Area: Poughkeepsie-Newburgh-Middletown, NY
City: Tuxedo Park
School District: , rank #804
Tuxedo Park, NY
Poughkeepsie, Newburgh, Middletown Area


Questions related to the usage of Commons IO should be posted to the User List.
The Developer List is for questions and discussion related to the development of Commons IO.
Please prefix the subject line of any messages for Commons IO with [io] - thanks!
Questions on using Commons IO.
Discussion of development of Commons IO.
Only for e-mails automatically generated by the source control system.


text:
Q: How to downgrade phpMyAdmin version in MAMP PRO I'm currently using PHP 5.3.29 for my application and I can't currently upgrade it. I'm working on getting access to phpMyAdmin. I'm running MAMP PRO 4.2.1 which has phpMyAdmin version 4.7.3 which only allows PHP versions 5.5+ to access. I was thinking similar logic to http://blog-en.mamp.info/2013/08/how-to-upgrade-phpmyadmin-in-mamp-mamp.html would apply for how to downgrade the version. I downloaded phpMyAdmin 4.0.10.20 and added the current config.inc.php file to the new phpMyAdmin folder I just downloaded. I then replaced the file in Applications/MAMP/bin as well as /Library/Application Support/appsolute/MAMP PRO/. When I tried running localhost/phpmyadmin I wasn't able to connect. When I went to localhost/mamp I noticed under tools it still said I needed PHP 5.5+ to access phpMyAdmin. I then switched to CGI mode in MAMP Pro and changed localhost to 5.5.38 and when I went to localhost/phpmyadmin it was now working, but it still said I was using phpMyAdmin v4.7.3. So my question is how do I actually change the phpMyAdmin version used with MAMP Pro? I was under the impression that downloading old version and replacing in those two places mentioned should have taken care of it. I also made sure to restart server anytime I made a change to MAMP files so that's not the problem

A: I was doing everything necessary according to MAMP support in terms of changes, but they believe there was something in the code preventing me from viewing phpMyAdmin in a lower version. I ended up just using Sequel Pro to do what I needed and that was quite simple.

redpajama_set_name: RedPajamaStackExchange


The Battle of Narva, a battle between Charles XII of Sweden and Peter the Great of Russia (Episodes 34 and 35) and was a major disaster for the Russians. While the Russian's lost tens of thousands of men, Peter learned a valuable lesson. He knew that the Russian military needed to be modernized because it would continue to suffer defeats like this to his European enemies. One of the early battles of the Great Northern War, Narva was fought on November 30, 1700. Charles XII sent his small army to relive the troops stationed in Narva against a vastly larger Russian Army.
Peter the Great wanted to expand his empire to the north. He had put together an alliance with Denmark-Norway and August the Strong of Poland-Lithuania. Charles, with the help of the British Royal Navy and the Dutch Navy landed near Copenhagen to force the Danes and Norway out of the alliance in August of 1700. From there the Swedish army with backing of Estonian and Finnish troops headed to Estonia.
By early November, the Russian army, numbering about 35,000 men, surrounded Narva, which while in Estonia, was a part of the Swedish Kingdom. Charles XII decided to take his army of 10,000 to save his embattled comrades. Charles led the attack with his 8,000 troops (2,500 were inside the city) aided by General Carl Gustav Rehnskiold. Peter, for his part, had left Narva a few days before the Swedes arrived. Many in Europe at the time viewed this as an act of cowardice.
On the day of the battle, the weather was horrific with a blizzard blowing in the faces of the Swedish army. At midday, the winds switched and blew directly into the face of the Russians which caused Charles to take advantage and attack. The actual battle itself was a rout with Charles blowing through the undisciplined Russian army. While retreating the bridge over the Narova river collapsed with over 6,000 Russian soldiers falling into the frozen river and drowning.
Almost all Russian artillery pieces were lost during the battle leaving Russia indefensible. Had Charles decided to carry the war into Russia, there would have been no way for them to fight back. Shockingly, Charles decided against pressing the attack and turned southward to attack August the Strong of Poland-Lithuania to teach him a lesson. This delay was all Peter needed to regroup and learn from the terrible lesson taught to him be the loss at the Battle of Narva.
Four years later, Peter returned with 45,000 men, far better trained and equipped than before and took the town. The Swedish army was destroyed with most of the inhabitants killed. Russian losses were severe with over 10,000 killed or wounded.
On this day in 1830, Polish cadets, tired of being under the thumb of Russia after being partitioned post-Napoleonic wars, decided to revolt to free Poland from tyranny. While initially successful locally, they were eventually crushed by the better equipped and numerically superior Russia army.
Poland had been partitioned between Prussia, Russia and the Hapsburg Empire in 1795 and completely enveloped by Austria, Russia and Prussia in 1815 due to its aid to Napoleon. Poland was supposedly a autonomous country with a constitution but was allied to Russia through the Tsar as King of Poland. Increasingly, over the years, the Tsar's, Alexander I (Episode 53) then Nicholas I (Episode 56) disregarded the constitution entirely. Instead they made Poland their fiefdom and did as they pleased. This stewed a growing animosity among the entire population and in particular, the nobility and military.
In 1815, Alexander I appointed Grand Duke Constantine Pavlovich, his brother, as viceroy of Poland. Constantine was considered a tyrant by the Polish people who despised him. On November 29th, things began to boil over. A group of young cadets, led by Piotr Wysocki attacked the Belwedere Palace where the Grand Duke lived, trying to capture him. They were unsuccessful as Constantine escaped wearing women's clothing.
Prince Adam Jerzy Czartoryski tried to negotiate a peaceful resolution with the Grand Duke who initially agreed to be lenient with the cadets but radical members of the Polish military and government rejected the offer. All but two of the General's of the Polish army went over to the rebels. A provisional government was formed with General Jozef Chłopicki being named Dictator of the Uprising.
Chlopicki did not favor a war with Russia as he felt there was no way it would be successful but he bowed to the pressure of the people. He tried to quell the uprising by appealing to Tsar Nicholas I by sending Count Drucki-Lubecki to St. Petersburg. The mission was futile. The Tsar demanded full capitulation or face military intervention.
The Sejm, the governing body of the Polish government declared that the union between Poland and Russia was null and void on January 25, 1831. They proclaimed that "the Polish nation is an independent people and has a right to offer the Polish crown to him whom it may consider worthy, from whom it might with certainty expect faith to his oath and wholehearted respect to the sworn guarantees of civic freedom." It was, for all intents and purposes a declaration of war.
Without going into details, the war did not go well for Poland. By October 5th, 1831, the last of the rebellious troops crossed the border to Prussia and laid down their arms. Over 40,000 Poles were either killed or wounded. The Russians suffered around 23,000 killed or wounded with an additional 5-12,000 dying of disease. While many historians believe that Poland could have won the war had they been more unified but the fact remains that the resources of Russia were far too great for a successful Polish outcome.
On this day in 1949, world renowned ballet star Alexander Godunov was born in Sakhalin, Russia, then part of the USSR. Godunov started dancing in Riga, Latvia at the age of 9 where he met and became friends with future ballet star Mikhail Baryshnikov. Over the years Godunov continued to move upwards in the ballet world eventually ending up in 1971 with the Bolshoi Ballet, the oldest ballet troupe in the world. He was named "premier danseur" shortly after joining.
Because of his dashing good looks, he became a Soviet film star acting in movies by acting in The Thirty-first of June by J. B. Priestley and as Vronsky in Anna Karenina. But he was disillusioned with Soviet life despite living a coddled life. At the height of Cold War tensions in 1979 while on tour with the Bolshoi in New York City he defected which caused a major international diplomatic row.
As soon as the KGB learned of his defection they took Godunov's wife, Lyudmila Vlasova into custody and put her on a plane heading to Moscow. The flight was blocked form leaving as U.S. diplomats demanded that they be allowed to ask Vlasova if she was leaving under her own free will. Leonid Brezhnev and U.S. President Jimmy Carter then got involved in the incident. The State Department had prepared a U.S. passport for Vlasova but she declined the offer and she left for home three days after getting on the plane. She divorced Godunov in 1982.
Godunov joined the American Ballet Theater under old friend Mikhail Baryshnikov as the principle dancer. He and Baryshnikov has a falling-out in 1982 and he was fired. From here Godunov traveled the world as a guest dancer until he decided to try his hand again at acting in Hollywood.
His roles were varied, from the Amish farmer in Witness to the evil German Karl in Die Hard to a narcissist piano maestro in The Money Pit. He met Jacqueline Bisset whom he stayed with until 1988. Godunov became a naturalized U.S. citizen in 1987.
Tragically, Alexander Godunov died in 1995 at the age of 45 supposedly of complications of alcohol abuse and hepatitis.
General Alexander Suvarov, one of the few generals in military history to have never been defeated in battle was born on this day in 1729. He is credited with being responsible for the foundation of the Russian school of military art. Because of his numerous successes, his titles include Prince, Field Marshall, Count and Generalissimo.
A sickly child, Suvarov, decided to work through his physical weaknesses and go into military training despite his father's objections. He was also a very studious boy, learning multiple languages and studying the works of Plutarch, Julius Caesar, Quintus Curtius, Charles XII, and Cornelius Nepos. When he was twelve, General Abraham Gannibal (someone who will get a podcast about his life one day) told Alexander's father that the boy should be allowed to go into military service because of his great intellect.
When he turned 18 he entered into military service and saw his first combat during the Seven Year's War (1756-1763). By 1763 his brilliance was already noted and he was elevated to regimental commander. Quickly he moved up the ranks to Brigadier then Major General. From 1768-1772 he helped to defeat the Polish Confederation of the Bar, capturing Krakow. which led to the first partition of Poland.
Suvarov was a key general during the First (1768-1774) and Second (1787-1792) Turkish Wars, winning battle after battle. He was a favorite of Catherine the Great which eventually led him to fall into disfavor when Emperor Paul took over the Russian Empire.
Suvarov's legacy was as great as he was as a military leader. His book, the Art of Victory written in 1795-6 was a masterpiece. He told his students that to win battles three things were necessary, "speed, assessment, and attack" with speed being most important. As he put it, "One minute decides the outcome of battle, one hour the success of a campaign, one day the fate of empires… I operate bot by hours but by minutes." Suvarov also believed that flexibility was also one of the most important features of a great military leader. Unfortunately, this was lost on subsequent generations of Russian generals.
I have plans to put together a whole podcast episode on General Suvarov in the future as he was one of the most compelling figures throughout Russian history.
Movements of both the Soviet Red Army and German Army Group South are followed here.
On November 19, 1942, Operation Uranus began under the generalship of Georgy Zhukov during the Battle of Stalingrad (Episode 83). It marked the turning point in the Great Patriotic War (World War II) where the Nazi's began their torturous retreat back to Germany at the cost of millions of lives.
The Battle of Stalingrad was a fierce battle that began on August 23, 1942 and ended on February 2, 1943 with the destruction and surrender of the Wehrmacht Army Group Southled by Fredrick Paulus. The battle was one of the costliest in terms of life in human history with an estimated 750,000 German and allied troops being killed, wounded or captured and 1.1 million Soviet soldiers and citizens being killed or wounded.
The Soviet strategy once the Germans entered the city of Stalingrad was to "hug" their enemies by staying in as close of a proximity to them as was possible. This negated the superior German firepower, especially their air support and artillery. Despite these tactics, the Luftwaffe conducted thousands and thousands of sorties which caused massive destruction to the city and a great loss of life on both sides.
Three months into the fighting the Germans had occupied 90% of Stalingrad but could go no further. The rallying cry of the Soviet Red Army was "Not a Step Back!" and "There is No Land Behind the Volga!" Stalin had already sent out orders that anyone who retreated would be shot along with their entire family back home. The incentive to fight to the death was great on both sides.
Slowly but surely, the Red Army began to encircle the embattled German forces in the city which slowed then stopped supplies from reaching the now desperate men. With fall, then winter approaching, the Soviet military command knew that it was only a matter of time before they would emerge victorious. It was then on November 19th, that Operation Uranus began with flanking maneuvers and a over 18 battalions and numerous tank and motorized brigades began the attack.
The Battle of Krasnoi, while not well known, was a smashing victory for the Russian Army against the retreating Grand Armee of Napoleon Bonaparte. Having been smashed in the Battle of Moscow, Napoleon believed he could first head to his supplies in Smolensk, then try to head to Minsk where another storage site was available. Unfortunately for Napoleon, the Russian winter came early and hard. His men were being battered by the sub-zero temperatures, snow and constant attacks by Cossack horsemen.
Napoleon had arrived at Krasnoi on November 9th and decided to wait there for the armies of Marshall's Davout and Ney. He also believed that there was no way for the Russian's to be close as they must have also suffered greatly due to the cold and snow. How wrong he would prove to be. General Kutuzov and General Miloradovich were travelling on a parallel road to the south of the French. Scouts for the Russians believed that there were only a small number of French troops in Krasnoi so they decided to swing northward and smash them.
By the time all the French troops reached Krasnoi on November 15th, so did the Russian army. Instead of just attacking with a full assault, Kutuzov decided, after realizing that the whole of Napoleon's army was there, that they should launch smaller attacks to harass the disorganized French. Having vastly larger number of soldiers and artillery, Kutuzov's decision has baffled historians for years.
Day after day, the Russian's and French fought valiantly but Napoleon's men were by now starving, frustrated and tired. They had to get to one of their supply depots in the town of Orsha, some 25 miles away. Napoleon feigned a major attack which scared Kutuzov and Miloradovich into backing off. Instead, they decided to lob artillery fire into the French lines.
Finally, by November 18th, Marshall Ney, with 11,000 troop decided to attack Miloradovich and his 12,000 strong me. At first, Ney's men broke through two lines of the Russian infantry before being repulsed by the third line. The French refused to surrender, with the remaining 2,000 soldiers heading into the forest. When Ney reunited with Napoleon at Orsha, he made it there with only 800 men.
What has puzzled historians and angered Tsar Alexander I was that Kutuzov refused to press his advantage and destroy Napoleon who was terribly weakened. While the Russians could claim a major victory, having captured 20,000 French soldiers, and killing between 6-13,000, it was a hollow victory as they should have crushed the French completely.
Kutuzov was smart not to have pressed his advantage as his men were exhausted and he was a general who was deeply concerned with the health and morale of his men. Because of that he was greatly loved by the Russian people which caused Alexander I to make him the Prince of Smolensk.
Russian Author Dostoyevsky Condemned to Death!!!
Portrait of Dostoyevsky painted by Vasily Perov in 1872.
On November 16, 1849, the famous Russian author Feodor Mikhailovich Dostoyevsky (also spelled Dostoevsky) was condemned to death for his association with the Petrashevsky Circle, a group of liberal intellectuals and commoners who discussed the need for change in Russia. Reactionary Tsar Nicholas I was so frightened of the group that he had them arrested and condemned to death. The sentences were commuted but many had to face years imprisonment for their actions. There were approximately 25 people in the Circle, most of whom were in their 20's.
A mock execution took place to 'teach them a lesson.' Dostoyevsky served four of the eight year sentence doing hard labor in Siberia. Upon his release he was briefly forced to serve in the military but was released from that due to poor health.
Considered by some to be the greatest Russian literary figure some of Dostoyevsky's works include: Crime and Punishment, The Idiot and The Brothers Karamazov. His novels were considered to have influenced many great writers such as James Joyce, Ann Rand, Anton Checkov, Ernest Hemingway and Jean-Paul Satre.
After his release from prison, he published a number of magazines and traveled through Europe. He face two major hurdles in his life, one was that he suffered from epilepsy and the other was that he was a pathologic gambler. He was often broke and was forced to beg for money.
Feodor Dostoyevsky died on January 26, 1881 of a stroke one day after having his home searched by the Tsarist secret police looking members of the Narodnaya Volya (People's Will) who were involved in the assasination of Tsar Alexander II. His tombstone has the following epitath:Verily, verily, I say unto you, Except a corn of wheat fall into the ground and die, it abideth alone: but if it die, it bringeth forth much fruit (John 12:24).


Our pure white doves are elegant, healthy and well trained, undergoing months of training to ensure they are able to navigate home after release. They can home from distances of 160 miles and at speeds of between 35-75mph.
The doves are trained in all weathers and have the capability and strength to cope with most conditions after their release.
The welfare of our doves is paramount – in adverse weather conditions it may not be possible to release them. In those circumstances we will offer you an alternative date or a full refund.


text:
Panuku delivers modern housing village for Haumaru
Construction of a new warm, dry, modern, accessible village for older people in Henderson is now complete, with a blessing held by mana whenua to ready the space before tenants start to move in.
Wilsher Village is a new four-storey building and is the first Panuku Development Auckland, on behalf of Auckland Council, has built for Haumaru Housing.
It is its first project to get more people into high-quality housing in the area to help revitalise Henderson town centre.
"It's an incredibly meaningful moment, moving through the rooms and being invited to put our mauri, our spiritual essence, into the building. It's a wonderful tradition that we are very grateful to be able to continue here," says Panuku Chair Adrienne Young-Cooper.
"Everyone who worked on this understands the importance of this building, that it is being built for people whose needs are changing yet can still live independently. You can't buy the care that's gone into this building.
"Henderson is an incredible place with so much history and such a bright future. The new tenants will come with all their stories and we are delighted to help make one more memory for them and for Haumaru too."
Haumaru Housing CEO Gabby Clezy is delighted that this development is now complete.
"This new village enables Haumaru Housing to offer affordable rental homes to yet more seniors in need of safe, secure and permanent housing within their local community."
"We're looking forward to welcoming our tenants and creating a vibrant community here, one that connects with the wider Henderson community and makes the most of what Henderson has to offer."
Mana whenua from Ngāti Whātua Kaipara, Ngā Maunga Whakahī o Kaipara, Ngāti Whātua Ōrākei, Te Ākitai Waiohua, Ngāti Tamaoho, Ngaati Whanaunga and Te Kawerau ā Maki participated in the blessing.
Panuku Board Chair Adrienne Young-Cooper and Haumaru Housing Board Chair Kay Hawk
Mana whenua representative Martin Te Moni (Ngaati Whanaunga) says "the land was blessed by mana whenua prior to construction and now that the building has been completed, a karakia (blessing) has been carried out to allow new tenants to move into this beautiful retirement village".
Waitākere Ward councillors Linda Cooper and Shane Henderson are both pleased with the completion of this project.
"This is a fantastic project which really highlights how the council can make a tangible difference in the community," says Councillor Cooper.
Councillor Henderson agrees. "It is wonderful to see this development that really sets the bar in terms of quality design and, most importantly, quality of life for older people."