text:
package zap

import (
	"bufio"
	"bytes"
	"encoding/binary"
	"fmt"
	"math"
	"os"
	"sort"

	"github.com/RoaringBitmap/roaring"
	seg "github.com/blevesearch/bleve/index/scorch/segment"
	"github.com/couchbase/vellum"
	"github.com/golang/snappy"
)

var DefaultFileMergerBufferSize = 1024 * 1024

const docDropped = math.MaxUint64 // sentinel docNum to represent a deleted doc

// Merge takes a slice of segments and bit masks describing which
// documents may be dropped, and creates a new segment containing the
// remaining data.  This new segment is built at the specified path.
func (*ZapPlugin) Merge(segments []seg.Segment, drops []*roaring.Bitmap, path string,
	closeCh chan struct{}, s seg.StatsReporter) (
	[][]uint64, uint64, error) {

	segmentBases := make([]*SegmentBase, len(segments))
	for segmenti, segment := range segments {
		switch segmentx := segment.(type) {
		case *Segment:
			segmentBases[segmenti] = &segmentx.SegmentBase
		case *SegmentBase:
			segmentBases[segmenti] = segmentx
		default:
			panic(fmt.Sprintf("oops, unexpected segment type: %T", segment))
		}
	}
	return mergeSegmentBases(segmentBases, drops, path, DefaultChunkMode, closeCh, s)
}

func mergeSegmentBases(segmentBases []*SegmentBase, drops []*roaring.Bitmap, path string,
	chunkMode uint32, closeCh chan struct{}, s seg.StatsReporter) (
	[][]uint64, uint64, error) {
	flag := os.O_RDWR | os.O_CREATE

	f, err := os.OpenFile(path, flag, 0600)
	if err != nil {
		return nil, 0, err
	}

	cleanup := func() {
		_ = f.Close()
		_ = os.Remove(path)
	}

	// buffer the output
	br := bufio.NewWriterSize(f, DefaultFileMergerBufferSize)

	// wrap it for counting (tracking offsets)
	cr := NewCountHashWriterWithStatsReporter(br, s)

	newDocNums, numDocs, storedIndexOffset, fieldsIndexOffset, docValueOffset, _, _, _, err :=
		MergeToWriter(segmentBases, drops, chunkMode, cr, closeCh)
	if err != nil {
		cleanup()
		return nil, 0, err
	}

	err = persistFooter(numDocs, storedIndexOffset, fieldsIndexOffset,
		docValueOffset, chunkMode, cr.Sum32(), cr)
	if err != nil {
		cleanup()
		return nil, 0, err
	}

	err = br.Flush()
	if err != nil {
		cleanup()
		return nil, 0, err
	}

	err = f.Sync()
	if err != nil {
		cleanup()
		return nil, 0, err
	}

	err = f.Close()
	if err != nil {
		cleanup()
		return nil, 0, err
	}

	return newDocNums, uint64(cr.Count()), nil
}

func MergeToWriter(segments []*SegmentBase, drops []*roaring.Bitmap,
	chunkMode uint32, cr *CountHashWriter, closeCh chan struct{}) (
	newDocNums [][]uint64,
	numDocs, storedIndexOffset, fieldsIndexOffset, docValueOffset uint64,
	dictLocs []uint64, fieldsInv []string, fieldsMap map[string]uint16,
	err error) {
	docValueOffset = uint64(fieldNotUninverted)

	var fieldsSame bool
	fieldsSame, fieldsInv = mergeFields(segments)
	fieldsMap = mapFields(fieldsInv)

	numDocs = computeNewDocCount(segments, drops)

	if isClosed(closeCh) {
		return nil, 0, 0, 0, 0, nil, nil, nil, seg.ErrClosed
	}

	if numDocs > 0 {
		storedIndexOffset, newDocNums, err = mergeStoredAndRemap(segments, drops,
			fieldsMap, fieldsInv, fieldsSame, numDocs, cr, closeCh)
		if err != nil {
			return nil, 0, 0, 0, 0, nil, nil, nil, err
		}

		dictLocs, docValueOffset, err = persistMergedRest(segments, drops,
			fieldsInv, fieldsMap, fieldsSame,
			newDocNums, numDocs, chunkMode, cr, closeCh)
		if err != nil {
			return nil, 0, 0, 0, 0, nil, nil, nil, err
		}
	} else {
		dictLocs = make([]uint64, len(fieldsInv))
	}

	fieldsIndexOffset, err = persistFields(fieldsInv, cr, dictLocs)
	if err != nil {
		return nil, 0, 0, 0, 0, nil, nil, nil, err
	}

	return newDocNums, numDocs, storedIndexOffset, fieldsIndexOffset, docValueOffset, dictLocs, fieldsInv, fieldsMap, nil
}

// mapFields takes the fieldsInv list and returns a map of fieldName
// to fieldID+1
func mapFields(fields []string) map[string]uint16 {
	rv := make(map[string]uint16, len(fields))
	for i, fieldName := range fields {
		rv[fieldName] = uint16(i) + 1
	}
	return rv
}

// computeNewDocCount determines how many documents will be in the newly
// merged segment when obsoleted docs are dropped
func computeNewDocCount(segments []*SegmentBase, drops []*roaring.Bitmap) uint64 {
	var newDocCount uint64
	for segI, segment := range segments {
		newDocCount += segment.numDocs
		if drops[segI] != nil {
			newDocCount -= drops[segI].GetCardinality()
		}
	}
	return newDocCount
}

func persistMergedRest(segments []*SegmentBase, dropsIn []*roaring.Bitmap,
	fieldsInv []string, fieldsMap map[string]uint16, fieldsSame bool,
	newDocNumsIn [][]uint64, newSegDocCount uint64, chunkMode uint32,
	w *CountHashWriter, closeCh chan struct{}) ([]uint64, uint64, error) {

	var bufMaxVarintLen64 []byte = make([]byte, binary.MaxVarintLen64)
	var bufLoc []uint64

	var postings *PostingsList
	var postItr *PostingsIterator

	rv := make([]uint64, len(fieldsInv))
	fieldDvLocsStart := make([]uint64, len(fieldsInv))
	fieldDvLocsEnd := make([]uint64, len(fieldsInv))

	// these int coders are initialized with chunk size 1024
	// however this will be reset to the correct chunk size
	// while processing each individual field-term section
	tfEncoder := newChunkedIntCoder(1024, newSegDocCount-1)
	locEncoder := newChunkedIntCoder(1024, newSegDocCount-1)

	var vellumBuf bytes.Buffer
	newVellum, err := vellum.New(&vellumBuf, nil)
	if err != nil {
		return nil, 0, err
	}

	newRoaring := roaring.NewBitmap()

	// for each field
	for fieldID, fieldName := range fieldsInv {

		// collect FST iterators from all active segments for this field
		var newDocNums [][]uint64
		var drops []*roaring.Bitmap
		var dicts []*Dictionary
		var itrs []vellum.Iterator

		var segmentsInFocus []*SegmentBase

		for segmentI, segment := range segments {

			// check for the closure in meantime
			if isClosed(closeCh) {
				return nil, 0, seg.ErrClosed
			}

			dict, err2 := segment.dictionary(fieldName)
			if err2 != nil {
				return nil, 0, err2
			}
			if dict != nil && dict.fst != nil {
				itr, err2 := dict.fst.Iterator(nil, nil)
				if err2 != nil && err2 != vellum.ErrIteratorDone {
					return nil, 0, err2
				}
				if itr != nil {
					newDocNums = append(newDocNums, newDocNumsIn[segmentI])
					if dropsIn[segmentI] != nil && !dropsIn[segmentI].IsEmpty() {
						drops = append(drops, dropsIn[segmentI])
					} else {
						drops = append(drops, nil)
					}
					dicts = append(dicts, dict)
					itrs = append(itrs, itr)
					segmentsInFocus = append(segmentsInFocus, segment)
				}
			}
		}

		var prevTerm []byte

		newRoaring.Clear()

		var lastDocNum, lastFreq, lastNorm uint64

		// determines whether to use "1-hit" encoding optimization
		// when a term appears in only 1 doc, with no loc info,
		// has freq of 1, and the docNum fits into 31-bits
		use1HitEncoding := func(termCardinality uint64) (bool, uint64, uint64) {
			if termCardinality == uint64(1) && locEncoder.FinalSize() <= 0 {
				docNum := uint64(newRoaring.Minimum())
				if under32Bits(docNum) && docNum == lastDocNum && lastFreq == 1 {
					return true, docNum, lastNorm
				}
			}
			return false, 0, 0
		}

		finishTerm := func(term []byte) error {
			tfEncoder.Close()
			locEncoder.Close()

			postingsOffset, err := writePostings(newRoaring,
				tfEncoder, locEncoder, use1HitEncoding, w, bufMaxVarintLen64)
			if err != nil {
				return err
			}

			if postingsOffset > 0 {
				err = newVellum.Insert(term, postingsOffset)
				if err != nil {
					return err
				}
			}

			newRoaring.Clear()

			tfEncoder.Reset()
			locEncoder.Reset()

			lastDocNum = 0
			lastFreq = 0
			lastNorm = 0

			return nil
		}

		enumerator, err := newEnumerator(itrs)

		for err == nil {
			term, itrI, postingsOffset := enumerator.Current()

			if !bytes.Equal(prevTerm, term) {
				// check for the closure in meantime
				if isClosed(closeCh) {
					return nil, 0, seg.ErrClosed
				}

				// if the term changed, write out the info collected
				// for the previous term
				err = finishTerm(prevTerm)
				if err != nil {
					return nil, 0, err
				}
			}
			if !bytes.Equal(prevTerm, term) || prevTerm == nil {
				// compute cardinality of field-term in new seg
				var newCard uint64
				lowItrIdxs, lowItrVals := enumerator.GetLowIdxsAndValues()
				for i, idx := range lowItrIdxs {
					pl, err := dicts[idx].postingsListFromOffset(lowItrVals[i], drops[idx], nil)
					if err != nil {
						return nil, 0, err
					}
					newCard += pl.Count()
				}
				// compute correct chunk size with this
				chunkSize, err := getChunkSize(chunkMode, newCard, newSegDocCount)
				if err != nil {
					return nil, 0, err
				}
				// update encoders chunk
				tfEncoder.SetChunkSize(chunkSize, newSegDocCount-1)
				locEncoder.SetChunkSize(chunkSize, newSegDocCount-1)
			}

			postings, err = dicts[itrI].postingsListFromOffset(
				postingsOffset, drops[itrI], postings)
			if err != nil {
				return nil, 0, err
			}

			postItr = postings.iterator(true, true, true, postItr)

			// can no longer optimize by copying, since chunk factor could have changed
			lastDocNum, lastFreq, lastNorm, bufLoc, err = mergeTermFreqNormLocs(
				fieldsMap, term, postItr, newDocNums[itrI], newRoaring,
				tfEncoder, locEncoder, bufLoc)

			if err != nil {
				return nil, 0, err
			}

			prevTerm = prevTerm[:0] // copy to prevTerm in case Next() reuses term mem
			prevTerm = append(prevTerm, term...)

			err = enumerator.Next()
		}
		if err != vellum.ErrIteratorDone {
			return nil, 0, err
		}

		err = finishTerm(prevTerm)
		if err != nil {
			return nil, 0, err
		}

		dictOffset := uint64(w.Count())

		err = newVellum.Close()
		if err != nil {
			return nil, 0, err
		}
		vellumData := vellumBuf.Bytes()

		// write out the length of the vellum data
		n := binary.PutUvarint(bufMaxVarintLen64, uint64(len(vellumData)))
		_, err = w.Write(bufMaxVarintLen64[:n])
		if err != nil {
			return nil, 0, err
		}

		// write this vellum to disk
		_, err = w.Write(vellumData)
		if err != nil {
			return nil, 0, err
		}

		rv[fieldID] = dictOffset

		// get the field doc value offset (start)
		fieldDvLocsStart[fieldID] = uint64(w.Count())

		// update the field doc values
		// NOTE: doc values continue to use legacy chunk mode
		chunkSize, err := getChunkSize(LegacyChunkMode, 0, 0)
		if err != nil {
			return nil, 0, err
		}
		fdvEncoder := newChunkedContentCoder(chunkSize, newSegDocCount-1, w, true)

		fdvReadersAvailable := false
		var dvIterClone *docValueReader
		for segmentI, segment := range segmentsInFocus {
			// check for the closure in meantime
			if isClosed(closeCh) {
				return nil, 0, seg.ErrClosed
			}

			fieldIDPlus1 := uint16(segment.fieldsMap[fieldName])
			if dvIter, exists := segment.fieldDvReaders[fieldIDPlus1-1]; exists &&
				dvIter != nil {
				fdvReadersAvailable = true
				dvIterClone = dvIter.cloneInto(dvIterClone)
				err = dvIterClone.iterateAllDocValues(segment, func(docNum uint64, terms []byte) error {
					if newDocNums[segmentI][docNum] == docDropped {
						return nil
					}
					err := fdvEncoder.Add(newDocNums[segmentI][docNum], terms)
					if err != nil {
						return err
					}
					return nil
				})
				if err != nil {
					return nil, 0, err
				}
			}
		}

		if fdvReadersAvailable {
			err = fdvEncoder.Close()
			if err != nil {
				return nil, 0, err
			}

			// persist the doc value details for this field
			_, err = fdvEncoder.Write()
			if err != nil {
				return nil, 0, err
			}

			// get the field doc value offset (end)
			fieldDvLocsEnd[fieldID] = uint64(w.Count())
		} else {
			fieldDvLocsStart[fieldID] = fieldNotUninverted
			fieldDvLocsEnd[fieldID] = fieldNotUninverted
		}

		// reset vellum buffer and vellum builder
		vellumBuf.Reset()
		err = newVellum.Reset(&vellumBuf)
		if err != nil {
			return nil, 0, err
		}
	}

	fieldDvLocsOffset := uint64(w.Count())

	buf := bufMaxVarintLen64
	for i := 0; i < len(fieldDvLocsStart); i++ {
		n := binary.PutUvarint(buf, fieldDvLocsStart[i])
		_, err := w.Write(buf[:n])
		if err != nil {
			return nil, 0, err
		}
		n = binary.PutUvarint(buf, fieldDvLocsEnd[i])
		_, err = w.Write(buf[:n])
		if err != nil {
			return nil, 0, err
		}
	}

	return rv, fieldDvLocsOffset, nil
}

func mergeTermFreqNormLocs(fieldsMap map[string]uint16, term []byte, postItr *PostingsIterator,
	newDocNums []uint64, newRoaring *roaring.Bitmap,
	tfEncoder *chunkedIntCoder, locEncoder *chunkedIntCoder, bufLoc []uint64) (
	lastDocNum uint64, lastFreq uint64, lastNorm uint64, bufLocOut []uint64, err error) {
	next, err := postItr.Next()
	for next != nil && err == nil {
		hitNewDocNum := newDocNums[next.Number()]
		if hitNewDocNum == docDropped {
			return 0, 0, 0, nil, fmt.Errorf("see hit with dropped docNum")
		}

		newRoaring.Add(uint32(hitNewDocNum))

		nextFreq := next.Frequency()
		var nextNorm uint64
		if pi, ok := next.(*Posting); ok {
			nextNorm = pi.NormUint64()
		} else {
			return 0, 0, 0, nil, fmt.Errorf("unexpected posting type %T", next)
		}

		locs := next.Locations()

		err = tfEncoder.Add(hitNewDocNum,
			encodeFreqHasLocs(nextFreq, len(locs) > 0), nextNorm)
		if err != nil {
			return 0, 0, 0, nil, err
		}

		if len(locs) > 0 {
			numBytesLocs := 0
			for _, loc := range locs {
				ap := loc.ArrayPositions()
				numBytesLocs += totalUvarintBytes(uint64(fieldsMap[loc.Field()]-1),
					loc.Pos(), loc.Start(), loc.End(), uint64(len(ap)), ap)
			}

			err = locEncoder.Add(hitNewDocNum, uint64(numBytesLocs))
			if err != nil {
				return 0, 0, 0, nil, err
			}

			for _, loc := range locs {
				ap := loc.ArrayPositions()
				if cap(bufLoc) < 5+len(ap) {
					bufLoc = make([]uint64, 0, 5+len(ap))
				}
				args := bufLoc[0:5]
				args[0] = uint64(fieldsMap[loc.Field()] - 1)
				args[1] = loc.Pos()
				args[2] = loc.Start()
				args[3] = loc.End()
				args[4] = uint64(len(ap))
				args = append(args, ap...)
				err = locEncoder.Add(hitNewDocNum, args...)
				if err != nil {
					return 0, 0, 0, nil, err
				}
			}
		}

		lastDocNum = hitNewDocNum
		lastFreq = nextFreq
		lastNorm = nextNorm

		next, err = postItr.Next()
	}

	return lastDocNum, lastFreq, lastNorm, bufLoc, err
}

func writePostings(postings *roaring.Bitmap, tfEncoder, locEncoder *chunkedIntCoder,
	use1HitEncoding func(uint64) (bool, uint64, uint64),
	w *CountHashWriter, bufMaxVarintLen64 []byte) (
	offset uint64, err error) {
	termCardinality := postings.GetCardinality()
	if termCardinality <= 0 {
		return 0, nil
	}

	if use1HitEncoding != nil {
		encodeAs1Hit, docNum1Hit, normBits1Hit := use1HitEncoding(termCardinality)
		if encodeAs1Hit {
			return FSTValEncode1Hit(docNum1Hit, normBits1Hit), nil
		}
	}

	var tfOffset uint64
	tfOffset, _, err = tfEncoder.writeAt(w)
	if err != nil {
		return 0, err
	}

	var locOffset uint64
	locOffset, _, err = locEncoder.writeAt(w)
	if err != nil {
		return 0, err
	}

	postingsOffset := uint64(w.Count())

	n := binary.PutUvarint(bufMaxVarintLen64, tfOffset)
	_, err = w.Write(bufMaxVarintLen64[:n])
	if err != nil {
		return 0, err
	}

	n = binary.PutUvarint(bufMaxVarintLen64, locOffset)
	_, err = w.Write(bufMaxVarintLen64[:n])
	if err != nil {
		return 0, err
	}

	_, err = writeRoaringWithLen(postings, w, bufMaxVarintLen64)
	if err != nil {
		return 0, err
	}

	return postingsOffset, nil
}

type varintEncoder func(uint64) (int, error)

func mergeStoredAndRemap(segments []*SegmentBase, drops []*roaring.Bitmap,
	fieldsMap map[string]uint16, fieldsInv []string, fieldsSame bool, newSegDocCount uint64,
	w *CountHashWriter, closeCh chan struct{}) (uint64, [][]uint64, error) {
	var rv [][]uint64 // The remapped or newDocNums for each segment.

	var newDocNum uint64

	var curr int
	var data, compressed []byte
	var metaBuf bytes.Buffer
	varBuf := make([]byte, binary.MaxVarintLen64)
	metaEncode := func(val uint64) (int, error) {
		wb := binary.PutUvarint(varBuf, val)
		return metaBuf.Write(varBuf[:wb])
	}

	vals := make([][][]byte, len(fieldsInv))
	typs := make([][]byte, len(fieldsInv))
	poss := make([][][]uint64, len(fieldsInv))

	var posBuf []uint64

	docNumOffsets := make([]uint64, newSegDocCount)

	vdc := visitDocumentCtxPool.Get().(*visitDocumentCtx)
	defer visitDocumentCtxPool.Put(vdc)

	// for each segment
	for segI, segment := range segments {
		// check for the closure in meantime
		if isClosed(closeCh) {
			return 0, nil, seg.ErrClosed
		}

		segNewDocNums := make([]uint64, segment.numDocs)

		dropsI := drops[segI]

		// optimize when the field mapping is the same across all
		// segments and there are no deletions, via byte-copying
		// of stored docs bytes directly to the writer
		if fieldsSame && (dropsI == nil || dropsI.GetCardinality() == 0) {
			err := segment.copyStoredDocs(newDocNum, docNumOffsets, w)
			if err != nil {
				return 0, nil, err
			}

			for i := uint64(0); i < segment.numDocs; i++ {
				segNewDocNums[i] = newDocNum
				newDocNum++
			}
			rv = append(rv, segNewDocNums)

			continue
		}

		// for each doc num
		for docNum := uint64(0); docNum < segment.numDocs; docNum++ {
			// TODO: roaring's API limits docNums to 32-bits?
			if dropsI != nil && dropsI.Contains(uint32(docNum)) {
				segNewDocNums[docNum] = docDropped
				continue
			}

			segNewDocNums[docNum] = newDocNum

			curr = 0
			metaBuf.Reset()
			data = data[:0]

			posTemp := posBuf

			// collect all the data
			for i := 0; i < len(fieldsInv); i++ {
				vals[i] = vals[i][:0]
				typs[i] = typs[i][:0]
				poss[i] = poss[i][:0]
			}
			err := segment.visitDocument(vdc, docNum, func(field string, typ byte, value []byte, pos []uint64) bool {
				fieldID := int(fieldsMap[field]) - 1
				vals[fieldID] = append(vals[fieldID], value)
				typs[fieldID] = append(typs[fieldID], typ)

				// copy array positions to preserve them beyond the scope of this callback
				var curPos []uint64
				if len(pos) > 0 {
					if cap(posTemp) < len(pos) {
						posBuf = make([]uint64, len(pos)*len(fieldsInv))
						posTemp = posBuf
					}
					curPos = posTemp[0:len(pos)]
					copy(curPos, pos)
					posTemp = posTemp[len(pos):]
				}
				poss[fieldID] = append(poss[fieldID], curPos)

				return true
			})
			if err != nil {
				return 0, nil, err
			}

			// _id field special case optimizes ExternalID() lookups
			idFieldVal := vals[uint16(0)][0]
			_, err = metaEncode(uint64(len(idFieldVal)))
			if err != nil {
				return 0, nil, err
			}

			// now walk the non-"_id" fields in order
			for fieldID := 1; fieldID < len(fieldsInv); fieldID++ {
				storedFieldValues := vals[fieldID]

				stf := typs[fieldID]
				spf := poss[fieldID]

				var err2 error
				curr, data, err2 = persistStoredFieldValues(fieldID,
					storedFieldValues, stf, spf, curr, metaEncode, data)
				if err2 != nil {
					return 0, nil, err2
				}
			}

			metaBytes := metaBuf.Bytes()

			compressed = snappy.Encode(compressed[:cap(compressed)], data)

			// record where we're about to start writing
			docNumOffsets[newDocNum] = uint64(w.Count())

			// write out the meta len and compressed data len
			_, err = writeUvarints(w,
				uint64(len(metaBytes)),
				uint64(len(idFieldVal)+len(compressed)))
			if err != nil {
				return 0, nil, err
			}
			// now write the meta
			_, err = w.Write(metaBytes)
			if err != nil {
				return 0, nil, err
			}
			// now write the _id field val (counted as part of the 'compressed' data)
			_, err = w.Write(idFieldVal)
			if err != nil {
				return 0, nil, err
			}
			// now write the compressed data
			_, err = w.Write(compressed)
			if err != nil {
				return 0, nil, err
			}

			newDocNum++
		}

		rv = append(rv, segNewDocNums)
	}

	// return value is the start of the stored index
	storedIndexOffset := uint64(w.Count())

	// now write out the stored doc index
	for _, docNumOffset := range docNumOffsets {
		err := binary.Write(w, binary.BigEndian, docNumOffset)
		if err != nil {
			return 0, nil, err
		}
	}

	return storedIndexOffset, rv, nil
}

// copyStoredDocs writes out a segment's stored doc info, optimized by
// using a single Write() call for the entire set of bytes.  The
// newDocNumOffsets is filled with the new offsets for each doc.
func (s *SegmentBase) copyStoredDocs(newDocNum uint64, newDocNumOffsets []uint64,
	w *CountHashWriter) error {
	if s.numDocs <= 0 {
		return nil
	}

	indexOffset0, storedOffset0, _, _, _ :=
		s.getDocStoredOffsets(0) // the segment's first doc

	indexOffsetN, storedOffsetN, readN, metaLenN, dataLenN :=
		s.getDocStoredOffsets(s.numDocs - 1) // the segment's last doc

	storedOffset0New := uint64(w.Count())

	storedBytes := s.mem[storedOffset0 : storedOffsetN+readN+metaLenN+dataLenN]
	_, err := w.Write(storedBytes)
	if err != nil {
		return err
	}

	// remap the storedOffset's for the docs into new offsets relative
	// to storedOffset0New, filling the given docNumOffsetsOut array
	for indexOffset := indexOffset0; indexOffset <= indexOffsetN; indexOffset += 8 {
		storedOffset := binary.BigEndian.Uint64(s.mem[indexOffset : indexOffset+8])
		storedOffsetNew := storedOffset - storedOffset0 + storedOffset0New
		newDocNumOffsets[newDocNum] = storedOffsetNew
		newDocNum += 1
	}

	return nil
}

// mergeFields builds a unified list of fields used across all the
// input segments, and computes whether the fields are the same across
// segments (which depends on fields to be sorted in the same way
// across segments)
func mergeFields(segments []*SegmentBase) (bool, []string) {
	fieldsSame := true

	var segment0Fields []string
	if len(segments) > 0 {
		segment0Fields = segments[0].Fields()
	}

	fieldsExist := map[string]struct{}{}
	for _, segment := range segments {
		fields := segment.Fields()
		for fieldi, field := range fields {
			fieldsExist[field] = struct{}{}
			if len(segment0Fields) != len(fields) || segment0Fields[fieldi] != field {
				fieldsSame = false
			}
		}
	}

	rv := make([]string, 0, len(fieldsExist))
	// ensure _id stays first
	rv = append(rv, "_id")
	for k := range fieldsExist {
		if k != "_id" {
			rv = append(rv, k)
		}
	}

	sort.Strings(rv[1:]) // leave _id as first

	return fieldsSame, rv
}

func isClosed(closeCh chan struct{}) bool {
	select {
	case <-closeCh:
		return true
	default:
		return false
	}
}

redpajama_set_name: RedPajamaGithub


Enamel Rajasawari ambabari elephant statue crafted in white metal. This big size ambabari statue is fantastic looking gift piece for your guest to gifting purpose as well as home and office interior use. Dark blue color and its meenakari works will add grace to your living room.


So if you love Gilmore Girls as much as I do then you've probably watched all four of the new episodes that were released on Netflix on Friday. If you haven't then warning; THIS POST CONTAINS SPOILERS FOR 'WINTER'. Sat on the train, I got stuck into the first episode and got experienced some lovely buffering. Every time something would happen, I would get excited or get the feels so decided to give you my thoughts whilst watching Gilmore Girls: A Year in the Life . I didn't want to do this for every episode because I wanted to just enjoy it but with it pausing every so often, it was the perfect opportunity for the first.
49 Thoughts Whilst Watching Gilmore Girls.
How do Rory and Lorelai still look so young and pretty?!
Kirk has a pig… That's new.
Is that the same troubadour?! Yes!
Dat shirt and baseball hat.
Paul? Who the hell is Paul?
He is not Rory's type.
This is strange with mentions of technology.
Ooooh, they have a Mac now.
Kirk is actually more attractive in this. Minus his personality.
Michel is married! Yay LGBT rights have been slipped in.
I'm so happy he's out in this series.
New chef? Where is Suki?!
Social media mentions also really bizarre.
Lorelai's smile is the greatest.
Emily looks fabulous as per.
Oh god, it's the funeral and I'm sat on a train.
It's happening, I'm welling up. Stop.
Jason looks awful, he has not aged as well as the others.
Aw, Lorelai and Emily hugging.
Why is Kirk at Emily's?
Luke is literally the most perfect man.
I so want Luke and Lorelai to have a baby together!
Paris helps people find a surrogate for a living?!
I didn't know part of it was set in London, I wish I'd seen them filming!
I like the new Rory, she is completely sassy and I love it.
Top breeders, so cringe Paris.
Doyle and Paris have children?!
Paul is so vanilla and beige.
Emily is wearing jeans and a baseball top, that's not weird at all.
Oooh I can't wait to see Lorelai and Emily having therapy together.
I'm not sure what everyone's thoughts are on these kind of posts but I love them. I've waited for months for Gilmore Girls: A Year in the Life and it's everything I hoped it to be and more. I grew up watching it and was so gutted when it finished. It still something I watch in the evenings and I probably watch it as much, if not more, than Friends. I love the characters and find them so relatable, especially as I was only a few years younger than Rory when it was on. I love a good GIF so sorry, not sorry for them in this post. They're a fun way to break up text.
What were your thoughts whilst watching Gilmore Girls: A Year in the Life?


text:
Throughout the course of their 12-year existence, Lake Trout has consistently defied genres within the music industry. The Baltimore five-piece has displayed a unique, multi-dimensional blend of rock, creating ambient soundscapes over ferocious rhythms that channel psychedelia, industrial and modern indie rock.
Reinventing their sound from record-to-record has been the calling card of this group of diversely influenced musicians. Lake Trout's most recent album, Not Them, You, is their second record for Palm Pictures. The album, produced by Tony Doogan (Mogwai, the Delgados) and Dave Fridmann (The Flaming Lips, Mercury Rev), has garnered phenomenal reviews. Both London's Guardian and Urb gave the CD 4 out of 5 stars, and Big Cheese called the album "near flawless." The album is start-to-finish, a masterpiece of emotion and depth.
To fully grasp the ingenuity of this band you must see them live. Alchemists of mood and emotion, Lake Trout push the limits of both intensity and volume. According to The Village Voice, "the Baltimore collective are stunningly ferocious space-sculptors capable of realigning your polarities." The Tripwire says "Watching them was like chewing on an extremely tasty piece of gum whose flavor regenerates itself in spurts and waves at random intervals."
The band is absolutely confident on stage, and as the result of their widely heralded live performances, they've earned a diverse audience of loyalists. Lake Trout continues to attract a wide range of indie rockers, head bangers, math geeks and improv-junkies.
In past years, Lake Trout has toured with The Flaming Lips, Editors and the Pixies to name a few. Their influence in the music community has resonated within many genres, specifically inspiring songs like The Dismemberment Plan's "Change" and The Flaming Lips "Pompeii."
← John Fogerty Little Feat →

redpajama_set_name: RedPajamaCommonCrawl


← Remember When Mother's Day Was Considered a "Gay" Holiday? Maybe It Still Is.
There's no doubt I love my children.
But at times, when I'm completely honest with myself, I wonder what the heck I was thinking when I decided to become a mom.
It's not because I regret having children. Not for a minute.
And it's not because I think my life would be more interesting or exciting if motherhood didn't require I put their needs above mine. Being a parent puts a whole new spin on interesting or exciting.
And it's certainly not out of guilt that as a girl, teenager and even as a young woman, being a mom wasn't on my list of life goals. Having children helped me recognize what's really important in life.
It's because there are times when I think my kids could have done better with another mother – a mom who isn't as emotional or head strong or outspoken as the one they got. A mom who never purposefully ignores parenting magazines, workshops or other sources of standard parenting advice. A mom who always enjoys her children's activities instead of attending out of a sense of obligation.
And just when I've convinced myself that my kids would be better off with any mom but me, I come face to face with parents who don't understand what an incredible gift – and responsibility –being a parent is. I witness moms behaving as though they are still adolescents with all the same drama and self-absorption. I have to listen to parents who always blame someone else when their child behaves poorly, gets a bad grade or is fighting with other children. Worst of all, I know of parents who put their children's welfare and safety in jeopardy.
I may be imperfect, but those situations make me feel better about my own parenting skills. At least for a little while… until my kids do or say something embarrassing or completely inappropriate. Then I'm back to thinking that if they had a different mother, their behavior would be stellar.
Such thoughts bounce around in my brain on a daily basis… sometimes at such incredible speed that I fear an impending brain explosion.
The requirements of my profession haven't helped.
Because I have a social work license, I'm required to take continuing education. Usually, I seek work-related education. Because I recently changed jobs, I've been seeking education that is more closely aligned with parenting issues, which I usually avoid.
I'm not sure the plan has worked for me.
In a workshop on bullying, the presenter disparaged parents who tell their daughters that, when a boy teases her, he actually likes her. According to the presenter, that's putting her on the path to domestic violence. Having said those exact words to my daughter, I was convinced that, at worst, I was creating a victim. At a minimum, I was teaching her that abusive behavior is a sign of affection.
I was back to being a horrible mom.
But then, a couple of weeks later I attended a workshop on child abuse. The workshop emphasized the need for children to feel comfortable questioning and saying no to adults. Now that is something my children have NO problem doing. Could it actually be good that my children are following in their mother's footsteps by requiring more than just a command as a reason to follow orders?
My internal confusion isn't necessarily a bad thing, but it does highlight the reason I've avoided reading all those articles about parenting. Once my children started developing their unique personalities, I had to treat them uniquely. And no expert could tell me how to do that.
So while no parenting magazine will ever put me on its cover, that's not important to me.
What is important is that someday in the distance future, when I'm not the complete embarrassment or the clueless person that my children currently think I am, I will be featured in their life scrapbook .
I don't even expect to make the cover, but I do want to be featured.
I'm pretty sure I can fill that role quite well… a long as my brain doesn't explode in the meantime.
Posted on May 22, 2012, in Family, My life, Uncategorized and tagged Family, motherhood, parenting. Bookmark the permalink.	Leave a comment.


Woolacombe Bay Holiday village was great BUT....Visited the Romano spa to have a manicure and French polish, my friend had an eye brow tint. The eye brow tint was dreadful, I could not stop laughing at the two caterpillars that had appeared above my friends eyes.I left the spa with nail varnish still around edge of my nails, my cuticals not even touched. It cost me £28 and I did them myself again the next day. I would not recommend the Ramano spa. The girls working there were very nice, just out of college probably on minimium wage, with no experience just a very basic knowledge of beauty. The changing rooms smelt of wee too!!!
We stayed in the camping area of woolacombe bay and both the pitch and the staff coped very well with the dier downpoor which occured for half our holiday. The shower facilities were warm,clean and ample for the number of guests within the park. The resturant left much to be desired but the park is close to other option which are much more desirable and lower priced. The park is a short walk away from the beach and we made the most of this with a trip a day down to the wide clean beach ( if raining the path to the beach becomes very boggy so don't forget the wellies). Overall i would rate the park excellent and we too enjoyed the free swimming and entertainment. A great holiday destination.
Arrived with our touring van on 11th to be told in unfriendly terms that we had mad a mistake in booking and should have arrived on the Friday. As a result we were literally hounded off the park by the warden on Friday lunchtime, losing a night which we had paid for. Despite them subsequently apologising we received no compensation. The place is poorly organised, run and poorly cleaned and best avoided. A generally run down feel does not add to the holiday atmosphere and it isnt cheap either.


Safety standards to be applied in the Cruise Terminal Port-Marghera areas.
In order to be admitted to the port area you should have a specific permit. If, for documented reasons, you need admission to the offices of public or private Authorities, you may receive a permit of up to 4 hours from the Port Authority, authorizing transit through non-operational areas. Passengers shall show their boarding pass or "coupon" given by the Shipping Agency and accompanying people shall give their personal details.
you must not leave any waste in port areas unless inside proper boxes.
keep the railway track bed clear.
To receive authorization to operate within the Cruise Terminal Port, acquaintance with and enforcement of operating and emergency procedures is required. (The Port Authority will check actual acquaintance with and enforcement of the procedures).
You must not use alcoholic beverages, drugs and ingest medicines (barbiturates, amphetamines etc.) which may cause impairment to the capacity to act.
You must not perform any activities or enter different port areas from those described in the issued authorizations.
You must not adopt any behaviour which may cause disturbance or hazard to people.
You must directly notify the Safety Area of the Port Authority - by calling telephone number 4545 - of any injury or accident notwithstanding its severity and extent.
- trains, which have right of way in any case and whose transit occurs on unmanned and flush tracks, across the road network and/or operational areas. The flush railway tracks and the tracks of the quay cranes also present risks of slipping and falling.
Vehicles speed shall be less than 30 Km/h for cars and less than 20 Km/h for other motor-vehicles. The speed limit for any motor-vehicle is additionally reduced to 15 Km/h on quays Friuli, Cadore and Veneto (10 Km/h by night and in case of poor visibility).
You must respect speed limits, road markings and set routes for road traffic as well highway code rules.
Motor-vehicles are also admitted on the cruise terminal quays for the strictly necessary time for boarding/disembarking loading/unloading passengers and goods; you must only park in ad-hoc parking spaces outside the quays.
Coaches, taxis and cars of accompanying people shall only park in ad-hoc parking areas.
Passengers and accompanying people shall not leave, in any case, assigned walk areas and routes.
Temporary parking of motor-vehicles must never occur on the railway track bed, with a setback line of 1.5 metres.
Pay maximum attention in all operational areas - danger of accident and fall of materials from above.
Pay maximum attention in the proximity of quays - danger of falling in water.
The delimitations of fenced areas indicating port activity zones shall be respected.
never get in the way of the emergency team operations, not even to give help if not required.


Carmen Simon is a cognitive neuroscientist and founder of Memzy, a company that uses brain science to help corporations create memorable messages. She is also a bestselling author, and leading expert on using memory to influence decision-making. Her most recent book, "Impossible to Ignore: Create Memorable Content to Influence Decisions," has won the acclaim of publications such as Inc.com, Forbes, and Fast Company, and has been selected as one of the top books on persuasion. Carmen speaks frequently to corporate, academic and government audiences on neuroscience research findings related to creating memorable messages based on how the brain works. She holds doctorates in both instructional technology and cognitive psychology.


text:
Palimpsest (Believe in me), 2007
Arches cover rag, frame, graphite.
How do we value art? As collectors, societies, consumers, students, and even as the creators ourselves, how is it that we translate what value we find in works of art into exchange terms? Working in the fields of fine art exhibition, sales, and handling for many years has kept me perpetually questioning this issue.
In the fine art market, Salvador Dali is notorious for having signed editions of unprinted paper that went to contracted publishers. These individuals, along with Dali's own staff, often used these sheets in fraudulent ways. This process was aided by the distant working relationship with the artist that developed out of an over-commodification of fine art during Dali's lifetime. The range of dishonesty is dependent on what one would consider an original work or reproduction by an artist. Some experts estimate that in today's art market the vast majority of the prints attributed to and purportedly (or even actually) signed by Dali, are fakes.
Palimpsest's title invited one to work with the artists on a pre-approved collaboration. It consisted of an edition of one hundred sheets of Arches Cover rag paper; signed and numbered, but otherwise blank. Its signature and low price offered a rock-bottom investment opportunity for those who feel the artist's work had upward potential. Finally, the sheets could be seen simply as purely raw materials for artists to use, with the only hurdle being the moral issue of whether one has the right to exploit another person's artwork as the raw materials for their own creation.
The individual sheets were available on a sliding scale that attempted to act as a gauge of the public's perception of the art/artist's value. The sliding scale started at 75% of local market price and went up at the purchaser's discretion. Framed versions were available on the same basis of valuation.


Life Coaching (Cognitive Behavior Approach). Guidelines for 3-8 sessions that will help processes of behavior change and practices that seek greater well-being and that adjust to the particularities of each individual. We use tools from Life Coaching, meditation, yoga and somatic movements.


You know it's a good recipe when people ask you (multiple times!) for the recipe. This is one of those recipes. My mom has been making these meatballs since I was a child. They are a delicious hors d'oeuvres that can be made in advance – which I love!
Begin by soaking your bread slices in a little cold water until they are soft. Squeeze the bread dry and then break into small pieces in a medium size bowl.
To the bread, add the meat, egg, onion, parsley, cinnamon, salt and pepper. I find using my hands is the easiest way to make sure the mixture is well combined. Form the mixture into 1 inch balls and set aside.
In a large skillet, combine the jelly, ketchup and raisins. Slowly bring to a gentle simmer. Add the meatballs and simmer slowly for 25 minutes, turning once halfway through.
Transfer the meatballs and sauce to a serving dish and serve with toothpicks.
You can also make this a day in advance. After cooking the meatballs, transfer the balls and sauce to your serving dish or a large bowl. Cool, cover with plastic wrap and keep in the fridge until you are ready to serve. Before serving, heat the meatballs and their sauce in a skillet or in the oven until they are warmed through.


text:
Die Amundsensee () ist ein Randmeer des Südpolarmeers (bzw. des Südpazifiks nach alter Lesart) und befindet sich vor der Westküste von Antarktika in Höhe des 110° westlichen Längengrades zwischen Kap Dart auf der Siple-Insel im Westen und Kap Flying Fish auf Thurston-Insel im Osten. Östlich grenzt sie an die Bellingshausensee, unmittelbar westlich der Siple-Insel an den Wrigley Gulf und 1000 Kilometer weiter im Westen liegt das Rossmeer. Dazwischen liegt entlang der Hobbs-, Ruppert- und Saunders-Küste ein bislang unbenanntes Randmeer.

Der norwegische Kapitän Nils Larsen, der das Meer im Februar 1929 an Bord seines Schiffs Norvegia erkundete, benannte das Meer nach dem norwegischen Polarforscher Roald Amundsen (1872–1928). Da das Meer im Allgemeinen dicht mit Packeis zugefroren ist, war der genaue Küstenverlauf bis zum Februar 1940 unbekannt, bis Teilnehmer der United States Antarctic Service Expedition (1939–1941) unter der Leitung des US-amerikanischen Polarforschers Richard Evelyn Byrd Aufklärungsflüge in der Region unternahmen. 1946 versuchten zwei Eisbrecher im Rahmen von Operation Highjump (1946–1947), das Meer zu durchqueren, um möglichst nahe an den küstennahen Schildvulkan Mount Siple heranzukommen, mussten jedoch das Vorhaben wegen der Eisverhältnisse abbrechen.

In die Amundsen-See mündet der Thwaites-Gletscher. Von der Gletscherzunge brach im Jahr 2002 ein 3400 km² großer Eisberg ab.

Weblinks

  (englisch)
 Amundsen Sea auf geographic.org (englisch)

Einzelnachweise

Meer (Südlicher Ozean)

Roald Amundsen als Namensgeber

redpajama_set_name: RedPajamaWikipedia


text: Q: Does smtp in php really send messages to specified email address in localhost machine? I have written a code in php using mail function and configured php sendmail ini fills properly. And our mail function return true but I didn't get mail to our specified email address. I don't know is this message actually sent or not. I have googled and also read many blogs but didn't get the real answer. Please clear my doubt

redpajama_set_name: RedPajamaStackExchange


The Department of Medicine is a large, multifaceted academic and clinical organization built around the medical services of McGill's principal teaching hospitals: the McGill University Health Center, the Jewish General Hospital and St. Mary's Hospital. In addition to clinical and teaching services directly related to patient care, the Department includes a broad array of research programs and its effort extends to all McGill hospitals and to the McGill campus with its researchers based at the Research Institute of the MUHC, the Lady Davis Research Institute, the Genome Center, the McGill Life Sciences Complex and the Goodman Cancer Center. The Department is part of the Faculty of Medicine and is a major contributor to the undergraduate medical curriculum. It is responsible for a large number of residency training programs, in core internal medicine as well as in a large number of sub-specialties of medicine and it also serves as the the host for one of the largest graduate programs within the University, administered through the Division of Experimental Medicine. Enjoy your visit to our website.
If you are interested in a career in medicine, please visit the Faculty of Medicine's Admissions website.


Water is the essence of all living organisms. Unfortunately, we sell ourselves short of living at our optimum capacities when we don't drink enough water, or drink contaminated water. Our water is triple filtered and made alkaline not by splitting ions, but by introducing trace minerals such as calcium and magnesium to achieve a naturally high pH. In short, your body really likes this water.


Every corner of London city has a vibrant story to tell and is amusing in its own way. When visiting this iconic city, whether with friends, family, and partner or for work, staying in centrally located hotels helps you have a convenient trip and explore London to the fullest. For an ideally located accommodation in London book your stay at the amazing Montcalm Hotels or the classic London City Suites by Montcalm. These fine hotels in Shoreditch provide unmatched modern facilities and amenities. Here you are centrally located to easily access both Underground and Overground tubes and you are well connected by a number of London buses.
From here you can explore one of the liveliest places in London- the Whitechapel. Famous for the scary and mysterious stories of Jack the Ripper (a serial killer), this area has since then evolved and gentrified in a magnificent way. Trace its evolution and discover the things you can do in this area.
Here you will find the great Whitechapel Gallery. From over a decade this public gallery has displayed the works of some of the great artists like Pablo Picasso, Frida Kahlo, Jackson Pollock and more contemporary artists. For lovers of art this gallery is open all year round with beautiful galleries, events, exhibitions, historic archives, resources and more educational things to explore. Some events here are free while some can be seen with a nominal fee. The gallery is closed on Monday, but is open for visitors from Tuesday to Sunday with extended opening hours on Thursday. You must check out the gallery's website to see their events calendar for this year.
Over the years, Whitechapel has become the hub for curry and other Asian and Caribbean food cuisines. The mix of communities living here is a reason you can indulge in some delectable eateries in the area. Brick Lane being the most buzzing area here, offers cool street art, quirky shops, markets and a selection of famous pubs and cafes.
This area also offers an array of things to do and see. You will feel like a true Londoner while exploring this famous yet quirky corner of London. This place is a haven for music lovers as it offers glam, metal punk, drum 'n' bass in its cool pubs and cafes. Here you will find a lot of cheap eats as well as BYOA pubs. The Whitechapel market is also great to experience the many cultures and communities of this area. One can even explore the area by joining one of the walking tours in this area. The Petticoat Lane offers a mix of unique and cheap shopping experience. For theatre lovers there is the Brickhouse showing a number of cabaret, burlesque, comedy shows and more. For the lovers of theatre music and poetry, you can visit the Wilton's Music Hall on Graces Alley and Rich Mix on Bethnal Green Road. We can assure once you are here, you will fall in love with the diversity of this place and London.


Last week the Federal Reserve voted to raise its short-term interest rates, likely resulting in more mortgage rate increases to come. The Fed rates are not directly tied to mortgage rates but tend to follow 10 year Treasury bonds. However, mortgage rates are often influenced by the Fed rates.
The Feds increased its federal fund rate from 1.5 percent to 1.75 percent, which is the highest level since 2000. The Feds marks the first of what many economists predict will be three rate hikes this year. Some economists are predicting federal funds rate to be at 2.1 percent by the end of the year.
Mortgage rates do not move one-on-one with the Fed tightening, but clearly consumers should anticipate higher mortgage rates as time proceeds. Mortgage rate hikes have already become a near weekly occurrence in 2018. Mortgage rates have risen every week since the start of the year, with last week being the exception.
Couple this with many enacted limitations on deductions for state and local income and property taxes, as well as for mortgage interest deductions is causing some buyers and sellers to rethink their next move (especially in high tax states like California, New York, Illinois, Massachusetts and New Jersey).
The new tax law fundamentally alters the benefits of homeownership by nullifying incentives for individuals and families. Without engaging in "crystal ball talk," this should concern any middle class family looking to claim a piece of the American dream.
On the Big Bear front, 239 homes sold the first quarter of 2018, predominately in the $200,000—$400,000 price range. We have definitely seen less activity in the market this year compared to the last quarter of 2017. As interest rates continue to climb, the Big Bear market tends to slow down. However, as long as inventory remains low (331 homes currently on the market), prices should stabilize, making 2018 the perfect storm to sell at peak prices.
Until next month, see you at the top!


text:
Whether because injuries or coaches' decisions, there are multiple quarterback changes in Week 13.
Poll 100 random NBA fans and only 5-10 have probably even heard of Nwaba, but the second-year player has earned praise from coach Fred Hoiberg in the last two games for his hustle and energy. He is priced at $4,500 or less on both DraftKings and FanDuel, even after scoring over 28 DFS points in back-to-back games. The matchup against the Boston Celtics isn't ideal, but Nwaba doesn't just generate points by scoring; he gets them with rebounds, assists, steals and blocks. He's a name to remember and a tremendous value tonight.
Baltimore (6-5) also kept its playoff hopes alive, sliding back in as the No. 6 seed in the AFC. Monday's loss was a devastating blow for Houston's playoff aspirations.
After Houston jumped out to a 7-0 lead, the Ravens responded with some trickery. Punter Sam Koch completed a 22-yard pass to Chris Moore to set up Buck Allen's 10-yard touchdown run.
Shazier may never play football again. That doesn't make him any less of a Steeler. And the men who have taken so much from him over the last three-plus years decided it was time they gave him something back in return: the AFC North title he ordered them to lock down without him.
Chris Boswell made a 46-yard field goal with 42 seconds left and Pittsburgh's defense overcame a shaky night without their most dynamic player to shut down Baltimore's last-gasp drive and hold on for a 39-38 victory on Sunday night to capture their third division title in the last four years.
The Vikings have racked up wins over the Rams, Saints and Falcons this season, and this is another chance for them to build their strong NFC resume as the new team to beat for the No. 1 playoff seed. When the Panthers can't run, which teams don't do on Minnesota, everything unravels offensively around Cam Newton. They also don't force too many turnovers, and Case Keenum protects the ball. They also will have a ton of trouble covering both Stefon Diggs and Adam Thielen.
Filed Under: Minnesota Vikings | Tagged: AFC North | Leave a comment
Baker Mayfield, the Heisman front-runner, has been infuriating and iconic.
Even his opponents, who should despise him, can't help but respect and be in awe of the OU QB.
Not only was Mayfield a two-time walk-on, but he was also an undersized recruit coming out of talent-rich Texas. Even when he did get his opportunity to play at Oklahoma, he had to fight hard for the starting job. Two years after that, his character became a question.
The Buccaneers lost several players in their loss to the Falcons. Running back Doug Martin suffered a concussion; center Ali Marpet went down with a knee injury; cornerback Josh Robinson had a hamstring injury and safety T.J. Ward suffered a concussion.
Raiders receiver Amari Cooper left in the second quarter of Sunday's 21-14 win over the Broncos with a concussion and did not return.
Rams linebacker Connor Barwin was ruled out of Sunday's 26-20 win over the Saints in the third quarter with an arm injury.
Little helped lead the way for Heisman finalist Bryce Love. In Little's third career start, Love rushed for a school-record 301 yards. In his eight games, Stanford averaged 11.5 yards per carry outside left tackle, the best mark among Power 5 offenses.
Anthony Johnson, WR, Buffalo — Along the lines of Dunbar, Johnson is large, strong and has big hands, but he is not the most precise of route runners. He tends to round off his routes rather than hit his breaks hard, but he has a propensity for making something happen after the catch on bubble screens and he has been highly productive this season. He had six catches for 155 yards and two touchdowns in Buffalo's win over Ohio.
Filed Under: Minnesota Vikings | Tagged: Anthony Johnson | Leave a comment
Giancarlo Stanton said Derek Jeter wanted to subtract, not add to Marlins
Marlins owner Derek Jeter scoffed at the notion that the Yankees got a sweetheart deal when they acquired National League MVP Giancarlo Stanton for Starlin Castro and two prospects..
To put this total into perspective, it is more than 20 percentage points higher than the 50.2 percent GBR that landed New England's defense in last place in this category through Week 13.
These struggles should help the Patriots in their Week 15 matchup against the Steelers, as New England's offense ranked seventh in GBR in Weeks 7-13. It should make Rex Burkhead a strong RB2 or even possibly a RB1 and ought to give enough added value to Dion Lewis to justify him as a flex pick with RB2 upside.
Roethlisberger revels in special A.B. chemistry: The Steelers clinched the AFC North as they beat the Ravens in a 39-38 comeback win, with Ben Roethlisberger throwing for 506 yards and two touchdowns and Antonio Brown catching 11 balls for 213 yards. That combination will be extremely tough to stop in the playoffs, and Roethlisberger said of his wideout: "Our chemistry is something pretty special. Some people say I abandon my reads and go right to A.B. It's not always true. But sometimes бн who wouldn't?"
Pittsburgh players were upset with Cincinnati linebacker Vontaze Burfict for the way he celebrated after a tackle on Le'Veon Bell, who suffered a season-ending MCL tear on the play. Burfict denied celebrating the injury, but Pittsburgh's Ramon Foster took exception.
Mitchell knocked Cincinnati receiver Marvin Jones out of the game with a hard hit, then allegedly approached A.J. Green and said, "You're next." Mitchell resurfaced in the team's second game when he knocked out tight end Tyler Eifert, which resulted in a concussion. Mitchell was fined $23,000 for that hit.
Filed Under: Minnesota Vikings | Tagged: Derek Jeter | Leave a comment
Next, Bazemore stole Mack's inbounds pass from the sideline, and again raced for a dunk with 18 seconds left to put away the Magic.
Magic: Vucevic on back-to-back nights combined for 52 points and 30 rebounds after scoring 21 points and grabbing a season-high 17 rebounds in a loss to Denver. . . . In Gordon's place, 6-foot-8 guard/forward Mario Hezonja made his first start. The native of Croatia scored seven points and on 3-of-9 shooting. . . . Orlando had a season-high 39 assists.
The Blue Raiders have miss a combined 125 games due to injury. Only four players played and started every game in the regular season.
Brent Stockstill's return in the last four games coincides with Middle Tennessee going 3-1 after the Blue Raiders went 2-4 without him. He threw nine touchdown passes with only two interceptions in the last four games while throwing for 1,005 yards.
Falcons defense solid, but not championship-caliber — Atlanta's defense played well, but could not stop the Vikings when they had to. It didn't help that starting cornerback Desmond Trufant didn't play Sunday. Even with Trufant out, the Falcons limited Adam Thielen to four catches for 51 yards. But a 22-yard pass to Thielen late in the game sealed the win for the Vikings. The Falcons have the NFL's 10th-ranked defense, but it wasn't enough Sunday to beat one of the NFC's truly elite teams.
Without Wall, Washington's starting backcourt has consisted of Tim Frazier and Bradley Beal. While Frazier is not playing big minutes (averaging 21.5 in the last eight games), Beal is producing big numbers.
During Wall's absence, Beal is averaging 23.3 points on 44.4 percent shooting while playing 33.8 minutes per game. Overall, Beal is averaging a career-best 23.8 points and shooting 46.2 percent.
Filed Under: Minnesota Vikings | Tagged: Bradley Beal, Tim Frazier | Leave a comment
Colin Wilson, Erik Johnson and Mikko Rantanen also had goals for the Avalanche.
While the Mustangs struggled at times in 2017, Sutton, who will forgo his senior season next year and enter the draft, continued to piece together a resume that puts him among the best receivers in the country.
One NFL general manager, who spoke to Sporting News about a variety of topics, raved about the prospect whose frame and skills have led to Julio Jones comparisons.
The lone score of the first two quarters came after Andy Lee's 33-yard punt gave Tennessee the ball at the 50. The Titans needed nine plays, Derrick Henry sweeping right and diving at the pylon on the 6-yard touchdown play.
Mariota directed the Titans on a drive from their 26-yard line to the Arizona 40 in the final 49 seconds of the half, but Ryan Succop's 58-yard field goal try bounced off the crossbar.
The Flyers (11-11-7) still have a lot of work ahead of them if they plan to climb up the Metropolitan Division standings. The Maple Leafs, meanwhile, sit behind only the league-leading Tampa Bay Lightning with a 20-10-1 record, mostly because of their 10-2-1 record in one-goal games.
The Maple Leafs have won five of their last six and now play eight of their next nine games on the road, beginning with a trip that takes them to Philadelphia, Minnesota and Detroit.
Nathan MacKinnon and Alexander Kerfoot scored 41 seconds apart in the second period and Colorado beat the Florida Panthers 7-3 on Saturday night to snap a four-game skid.
Matt Nieto and Carl Soderberg both scored into an empty net late in the third, and Semyon Varlamov stopped 39 shots.
Filed Under: Minnesota Vikings | Tagged: Nathan MacKinnon | Leave a comment
Bobrovsky is expected to start his fifth consecutive game Tuesday.
It came on the first shot Vancouver had generated in four power-play chances. Up until that point, Calgary had done an excellent job stifling the Canucks' ninth-ranked power play.
Calgary tied it when Garnet Hathaway's alert pass found Tkachuk in the slot and the 19-year-old sent a backhander into the top corner.
Tkachuk was back after serving a one-game suspension for a spearing incident in Wednesday's game against Toronto.
Blue Jackets coach John Tortorella is putting pressure on his veterans to step up their games.
"I'm not looking to hate players," he said. "I'm looking to run a team and try to get the players to be the best they can be. Quite honestly, this is my responsibility, and I think I have failed a little bit in this part, where I have so many of our top guys not playing that well."
The Saints running back joined Gale Sayers and Charley Johnson as the only rookies in NFL history with at least 500 yards from scrimmage, at least three rushing touchdowns and at least three receiving touchdowns in a calendar month.
Kamara, a third-round pick from Tennessee in April's NFL Draft, has emerged as the front-runner for NFL Rookie of the Year. He has 546 rushing yards and 548 receiving yards on 54 receptions with nine total fumbles. Kamara is coming off his best game of the season with 188 yards from scrimmage and two scores in last week's 26-20 loss to the Rams.
The Redskins reportedly are planning to wear their all-burgundy uniforms Thursday. Washington hates its all-yellow Color Rush uniforms so much that, in the offseason, the team proposed a rule that would allow NFL teams to opt out of wearing Color Rush uniforms on "Thursday Night Football," a proposal that was later withdrawn. There is no controversy with the Cowboys' uniforms, however, as Dallas will wear its all-white Color Rush uniforms.
Filed Under: Minnesota Vikings | Tagged: John Tortorella | Leave a comment
Derek Carr threw for 300 yards and a touchdown for the Raiders
Jay Cutler, Kenyan Drake and Damien Williams provided a much-needed spark for Adam Gase's offense, but the defense is starting to crumble on every level beyond the bad secondary. That's bad news before facing the Panthers' now-more-run-heavy attack. Cam Newton will complete a few needed deep shots while Christian McCaffrey helps by shooting past Miami's linebackers. Meanwhile, Cutler is bound to go back to bad Bears mode with Luke Kuechly staring him down all night.
When Elliott's suspension for violation of the league's domestic violence policy was first announced in August (after a protracted one-year investigation by the NFL), there was significant consternation expressed by Cowboys owner Jerry Jones in light of no charges ever being filed in the courts against the running back. But as the weeks have passed and Elliott has not missed a game, that discussion has toned down.
Derek Carr threw for 300 yards and a touchdown for the Raiders, while Marshawn Lynch rushed for two scores. Jared Cook tallied 126 receiving yards in the victory. Jay Cutler passed for three touchdowns and completed his first 15 passes.
Sporting News provided live updates throughout Sunday night's game. Here's how the Raiders came away with the road win.
Chris Thompson, RB, Washington Redskins: Thompson appeared to take the worst of a massive collision involving Kirk Cousins and two Saints defenders and remained down on the field as his right leg was attended to by Redskins medical personnel. He was helped off the field and loaded onto the cart as teammates gathered around him. An air cast was placed on his right leg, and he was declared out for the remainder of the contest.
Filed Under: Minnesota Vikings | Tagged: Jay Cutler | Leave a comment
The IR moves end a disappointing season for Pryor and a breakthrough year for Thompson.
The Titans and Jaguars are in a dead heat with a lot left to play before their second matchup. According to odds from Bovada, both the Titans and Jaguars are 11/10 to win the division.
The Titans have won four consecutive games after getting ripped by Deshaun Watson and going in the tank with Matt Cassel. But those opponents all were sub-.500 teams in Indianapolis, Cleveland, Baltimore and Cincinnati.
Five other Redskins sat out Tuesday, and eight were listed as limited.
Signed as a free agent after the team let DeSean Jackson and Pierre Garcon depart, Pryor caught just 20 passes for 240 yards and one touchdown. Gruden said Pryor battled the ankle injury since Week 2.
In the Jacksonville Jaguars' 19-7 victory over the Cleveland Browns, Ngakoue registered 2.5 sacks and two forced fumbles as he pressured Browns quarterback DeShone Kizer all game.
This was the fourth multi sack game for the second year sackmaster, as he took his total up to 9 sacks and 5 forced fumbles on the season with six games to spare.
The Jaguars defensive ends, including Ngakoue, have been destroying opposing QB's all season (in combination with the Jags secondary), but with the addition of defensive tackle Marcell Dareus after a trade with the Buffalo Bills in week 8, the Jaguars have become even stouter defensively.
The Lions were stopped on third-and-14 after Stafford's pass to Golden Tate was incomplete, but Packers defensive lineman Mike Daniels headbutted Lions center Travis Swanson.
Filed Under: Minnesota Vikings | Tagged: Deshaun Watson | Leave a comment
The Braves said in a statement they "understand and accept the decision regarding the penalties that have been handed down.
The Braves lost 13 prospects and former general manager John Coppolella was banned for life by Major League Baseball on Tuesday for circumventing international signing rules from 2015 to 2017.
Former Atlanta special assistant Gordon Blakeley, who was the team's international scouting chief, was suspended from baseball for one year by commissioner Rob Manfred.
"As we expressed last week, our organization has not lived up to the standard our fans expect from us and that we expect from ourselves. For that, we apologize. We are instituting the changes necessary to prevent this from ever happening again and remain excited about the future of Braves baseball."
It was the 100th career goal for Schwartz, who had three points.
"Good to hit it but obviously I want to get a lot more," Schwartz said. "It's exciting. I never imagined doing that as a young kid."
A goal by Schenn from the slot made it 4-0 with 19 seconds left in the period. Schwartz fed Schenn with a pass and he one-timed the puck by Brossoit.
Edmonton cut it to 4-1 when Milan Lucic scored at 6:09 of the third. St. Louis got the goal back when Scottie Upshall scored from just outside the crease on a pass from Chris Thorburn at 7:39.
The Packers did attempt four deep passes and Hundley was unable to connect each time. The longest gain of the night came on a short pass to Randall Cobb, who sprinted upfield for a 46-yard gain that included 34 yards after the catch. Cobb had five catches for 58 yards and his run-and-catch led to a Packers touchdown, but after the game was out of reach.
Filed Under: Minnesota Vikings | Tagged: Chris Thorburn, Gordon Blakeley | Leave a comment
I know Peyton Manning complained about not getting a possession in OT that one year the Colts lost to the Chargers in the playoffs
President Trump has spent the last month waging a loud, continuous, messy fight with the NFL over player protests during the national anthem. And while Trump has whipped up plenty of rage and support from his base over the protests, a new poll indicates that a majority of Americans believe he went too far in calling for the firing of players who protest.
More than two of every three Americans, 68 percent, believe the President was in error when he criticized NFL players and demanded their firing in a September Alabama rally, according to a new poll conducted by Marist on behalf of HBO. Only 28 percent said his response was appropriate. Poll respondents were more generous to Vice President Pence, with responses split at 47 percent apiece on whether Pence was correct to walk out of a Colts game following a protest during the anthem.
"If they want a pass rusher, they should bring in a pass rusher extraordinaire who was one of the dominant pass rushers of any era," Rice told Laine. "What is it going to cost? You don't have one."
Rice also tweeted at Laine that "I can get them to the playoffs." The Buccaneers are dead last in the NFL with seven sacks. No other team has fewer than 10. Tampa Bay has suffered a lot of defensive line injuries. On Wednesday they put end Noah Spence on injured reserve.
So there's a need. Rice has 122 career sacks and wants to play. It seems like Rice wouldn't have much to offer, since he looked finished his last NFL season with the Denver Broncos and Indianapolis Colts, and that was 10 years ago. It's never going to happen. But it sure would be entertaining if the Bucs took him up on his offer.
I know Peyton Manning Jersey complained about not getting a possession in OT that one year the Colts lost to the Chargers in the playoffs (which actually seemed like every year), but he was probably going to throw a crippling interception anyway. However, I would have liked to see what Tweez could have done with one more chance. He's clearly a name to remember in the future.
Filed Under: Baltimore Ravens | Tagged: Peyton Manning | Leave a comment


Published: October 25th 2011 by Amazon Digital Services, Inc.
She finally meets the man of her dreams. Problem is, he's already dead. Paige is an average woman with an average life in New York City.
Her apartment, her job, and her love life are all consistently mundane, and she yearns for something extraordinary. She wonders if she will ever find her perfect man, a man just like John Rockford, the esteemed and benevolent son of New York's prominent unofficial royal family. But Paige's dream is shattered when she learns of John Rockford's sudden death. Then the extraordinary begins. No sooner resigned to her familiar reality, she encounters a stranger claiming to be the rest spirit of none other than John Rockford himself, trapped between the world of the living and the realm of the dead.
Skeptical, yet intrigued, Paige soon finds herself questioning the scope of possibilities, and growing increasingly sympathetic toward the lost soul who jumps from body to body on a quest to return to his own. Drawn to the mysterious entity and the thrill of adventure, Paige sheds her autopilot skin and embarks on a precarious mission to help uncover the truth behind John Rockford's alleged death, recover his body, and resurrect the one man who brings her very own soul to life.
PRAISE FOR ANONYMOUS REALM: "Just read it! Wow! What an amazing story! Touched me on so many levels." "5 Stars!" "Awesome!" ABOUT THE AUTHOR: Anonymous Realm is the debut novella by Linda Picinich. Since an early age, she has had a passion for the written word and has been inspired by great storytelling of all kinds, from classic literary tales to contemporary independent works. Linda's introductory story intertwines elements of intrigue, romance, the supernatural, and cozy mystery in a quick and quirky haunting quest that twists genres.


The film opens with a family being hung up like scarecrows in a corn field with sacks over their heads and burned alive. It is revealed to be the nightmare of nine-year-old Dylan Collins, who is staying in a rural farmhouse with his twin brother Zach, and their mother Courtney (Shannyn Sossamon).
The film opens with Super 8 footage depicting a family of four standing beneath a tree with sacks over their heads and nooses around their necks. An unseen figure saws through a branch acting as a counterweight, causing their deaths by hanging.
Andrew Norris is a newly hired music teacher at a troubled inner city school, where students have to pass through a metal detector due to problems with gangs, drugs, and violence.
The film begins in Hollywood Los Angeles, when two friends, Jenny Tate and Becky Morton, are at a pier and decide to get their fortune told by Zela, asking about a boy. Zela foretells that they will suffer a horrible fate, but they don't believe her and walk away laughing. A little while later, Becky realizes Jenny has disappeared and can't find her on the pier.
Alone in her home, the religion-obsessed Margaret White (Julianne Moore) gives birth to a baby girl. She at first intends to kill the infant, but changes her mind. As a teenager, her daughter Carrie (Chloë Grace Moretz), is a shy and isolated student at Ewen High School in Maine.


text:
Margaret (McInerney) Rascona
April 8, 1924 June 20, 2015
There are condolences waiting approval on Margaret's Tribute wall
Plant a tree in memory of Margaret
Celebrating the life of Margaret (McInerney) Rascona
Be the first to share your favorite memory, photo or story of Margaret. This memorial page is dedicated for family, friends and future generations to celebrate the life of their loved one.
Obituary for Margaret (McInerney) Rascona
Margaret Rascona, 91, of Mansfield Center, CT, beloved wife of Alexander "Charlie" Rascona, died June 20, 2015 in Windham Hospital. She was born April 8, 1924 in Kilrush, County Clare, Ireland the daughter of Martin and Hannah (Considine) McInerney. Margaret was a communicant of St. Joseph Church in Willimantic. In addition to her husband "Charlie", her survivors include two daughters: Anne Newman and her husband Doug of California and Barbara Rascona and her husband Bruce Sheridan of Scotland; also four grandchildren: Jeffrey, Brian, Daniel, and Tyler, whom she loved dearly. Her surviving siblings are: Phyllis, Della, Anna and her husband Jackie, and her brother Pat, and a very special friend, Sammy who was like a sister to her. She was predeceased by her sister Mary and brother John. Her Family will receive relatives and friends Thursday, 6/25/2015, from 6 to 8 p.m. at the Bacon Funeral Home, 71 Prospect St. Willimantic. Margaret's Funeral Mass will be celebrated Friday at 10:00 a.m. in St. Joseph Church, Jackson St. Willimantic followed by burial in St. Joseph Cemetery, Club Rd. Windham, CT. Please omit flowers. Memorial donations may be made to either the American Cancer Society, the Alzheimer's Association or WAIM.
To plant a tree in memory of Margaret (McInerney) Rascona, visit the Tribute Store.
Welcome to Margaret's Memorial Wall
Share Margaret (McInerney) Rascona's life celebration
"Email Address" would like to share the life celebration of Margaret (McInerney) Rascona. Click on the "link" to go to share a favorite memory or leave a condolence message for the family.


Garden lovers seem to be the newest enemy of the state in the City of Johannesburg.
Despite the summer rains that filled up Gauteng dams' Nico de Jager' MMC for the Environment and Infrastructure Services Department' said on Tuesday that the city would only partially lift water restrictions in an effort to promote a culture of water conservation.
The Department of Water and Sanitation has lifted water supply restrictions in Gauteng municipalities.
"However' South Africa remains a water scarce country and the City of Joburg remains a net importer of water. We urge all water users to maintain vigilance in conserving this scarce resource'" the City said in a statement.
The risk of demand outstripping supply in the intervening period between now and the commissioning of Phase II of the Lesotho Highlands Project (2025) remains a real threat' it said.
"According to the 2009 Phase II feasibility report' the full yield is expected to be utilised by approximately 2030." The City said as a result' it would only partially lift Level-2 water restrictions.
- All consumers are prohibited from using a hose-pipe to clean paved areas and driveways with municipal water.
So far metro police have issued a total of 665 fines to consumers since restrictions were imposed due to the previous drought and the city intends to maintain enforcement into the future.
The current water footprint for the City of Joburg is 309 liters per capita per day' compared to the national and world averages of 274 liters and 175 liters respectively' said De Jager. At the height of the restrictions' the demand reduced to 289 liters per capita per day.
"Water saving must become part of our lifestyle.
"The water conservation measures implemented as a result of the restrictions must become the norm. Residents are urged to keep on using grey water for watering gardens and flushing toilets; to report leaks and bursts and install water saving devices."


to listen to (or to call in to listen to).
(voice, email, and/or fax) 'unified' into a single repository.
4. a combination of any or all of the previous three methods.
are not on the Google Directory listing.
Do the following services meet your needs?
Angel is much higher priced and does way more than I'm after.
Maybe those are the only services?
call forwarding, call waiting etc etc and cost?? just $50/month.
Note: This is not a cell phone... you need internet to make this work.


text:
import types from 'config/types';
import escapeRegExp from 'utils/escapeRegExp';

export default getPartial;

var startPattern = /^<!--\s*/,
    namePattern = /s*>\s*([a-zA-Z_$][-a-zA-Z_$0-9]*)\s*/,
    finishPattern = /\s*-->/;

function getPartial( parser ) {
	let template = parser.remaining(),
	    firstPos = parser.pos,
	    startMatch = parser.matchPattern( startPattern ),
	    open = parser.options.delimiters[0],
	    close = parser.options.delimiters[1];

	if ( startMatch && parser.matchString( open ) ) {
		let name = parser.matchPattern( namePattern );

		// make sure the rest of the comment is in the correct place
		if ( !parser.matchString( close ) || !parser.matchPattern( finishPattern ) ) {
			parser.pos = firstPos;
			return null;
		}

		// look for the closing partial for name
		let end = new RegExp('<!--\\s*' + escapeRegExp( open ) + '\\s*\\/\\s*' + name + '\\s*' + escapeRegExp( close ) + '\\s*-->');
		template = parser.remaining();
		let endMatch = end.exec( template );

		if ( !endMatch ) {
			throw new Error( 'Inline partials must have a closing delimiter, and cannot be nested. Expected closing for "' + name +
				'", but ' + ( endMatch ? 'instead found "' + endMatch[1] + '"' : ' no closing found' ) );
		}

		let partial = {
			t: types.INLINE_PARTIAL,
			f: new parser.StandardParser( template.substr( 0, endMatch.index ), parser.options ).result,
			n: name
		};

		parser.pos += endMatch.index + endMatch[0].length;

		return partial;
	}

	parser.pos = firstPos;
	return null;
}


text:
U.S. military weighs role in battered Haiti
By Associated Press Feb 27, 2010, 12:00am MST
Share All sharing options for: U.S. military weighs role in battered Haiti
A child carries a pail as she walks inside a camp for homeless earthquake survivors in Port-au-Prince on Friday.
Esteban Felix, Associated Press
PORT-AU-PRINCE — U.S. military officials are deliberating how long American troops should stay in Haiti to tend to its earthquake-battered population, knowing that work remains but reluctant to take on much of the rebuilding that could commit the force to the region for years.
The timing of troop withdrawals is a difficult decision that strikes at the heart of how the U.S. military is viewed around the world: a powerful force with deep pockets that can accomplish a lot in a short period of time.
But senior officials have made clear that the military won't stay forever, simply because it can.
"We're very deliberate about this," said Adm. Mike Mullen, chairman of the Joint Chiefs of Staff, in his first visit to Haiti since the 7.0-magnitude earthquake struck on Jan. 12.
The primary goal of U.S. forces is to provide security, he told reporters after inspecting the city's port, which a team of Navy and Army divers are close to salvaging so that ships can begin to move cargo ashore without relying on highly specialized military equipment.
Mullen noted those improvements, along with a drop off in the number of urgent medical cases.
Going forward, "we will have enough troops here to meet the security requirement," Mullen said.
Perhaps the best example of how the military mission has changed in the six weeks since the quake struck is the patient load aboard the USNS Comfort, the giant Navy hospital ship floating offshore Port-au-Prince.
At its peak in late January, the ship had some 540 patients and nearly 1,400 staff. That number began to drop rapidly as field hospitals on shore ramped up capacity and the most acute cases were treated and those patients released.
After discharging 75 more patients about a week ago, there are now only seven patients still aboard the USNS Comfort. The ship still maintains about 970 personnel.
Mullen toured the ship and praised the staff for their work. When he asked what they do all day, the staff responded: "Cleaning, sir."
Throughout Haiti, the U.S. military mission still draws some 11,000 troops — 6,000 on the ground and 5,000 floating offshore. But their mission has fundamentally changed.
Marines, among the first to arrive with food and water, are now helping to coordinate among the myriad relief agencies and nongovernmental organizations from around the world. Infantry soldiers from the 82nd Airborne Division deployed to ensure riots didn't break out have now cleared some 40 blocks of rubble from downtown and are helping engineers move in to rebuild.
Officials say the situation in the impoverished Caribbean nation remains dire, and the population needs medical treatment, shelter, food and water. They also say that conditions could dramatically worsen as the rainy season sets in and if aftershocks from the earthquake occur.
But for the military, already stretched thin by two wars, the goal is to hand off much of the responsibility to civilian aid agencies now operating in Haiti.
"When I say 'we,' I really mean the government of Haiti and the international community," Mullen said.
6 malaria cases reported for U.S. soldiers in Haiti
PORT-AU-PRINCE (AP) — A U.S. military spokesman in Haiti says six American soldiers involved in the aid mission have come down with malaria.
U.S. Army Col. Billy J. Buckner says one of the soldiers was evacuated for treatment. Buckner says, "At last update, the soldier was improving."
The spokesman says the other five soldiers are recovering and all are scheduled to return to their duties.


text:
Tung Chung East () is a proposed MTR station on the  to be constructed to the east of Tung Chung, Lantau Island, New Territories, Hong Kong. This station will be at ground level, similar to , so as to not affect the existing railway network.

It was proposed in the Tung Chung New Town Extension Study, to serve a proposed new  of reclaimed land, along with a new Tung Chung West station.

References

 Tung Chung
 Proposed railway stations in Hong Kong
 MTR stations in the New Territories


text:
New Abu Ghraib investigation into Youtube vid [VIDEO] /
New Abu Ghraib investigation into Youtube vid [VIDEO]
Evan Derkacz
The video to the right, which contains a disturbing message from a man who claims to have been a guard at Abu Ghraib prison in Iraq, was removed from Youtube recently for violating the terms of agreement. It's easy to see why.
According to IraqSlogger, an investigation into the validity of the obscured man's claims of torture, rape and abuse has begun. Though the Army's investigative affairs division isn't providing details they do say they're taking it "seriously," according to Christina Davidson's report, which goes on to point out that there have been a number of false claims of both soldier and insurgent atrocities.
Here's one of the most disturbing passages:
What was the most fun things?
The most fun thing, umm....definitely the women.
Yeah? They had chick insurgents, man?
No, they didn't have chick insurgents.
Something goes down, they just grab everyone around, you know, fuck em. I mean, you gonna have 35 trials? No, you know. People are like, "Oh they're innocent." You know what, I don't give a fuck. As far as I'm concerned, they're all guilty. You know what? They should have kicked Saddam out themselves. Instead, we're there doing the fucking job. We're losing guys.....
Were those people in the World Trade Center guilty? No. Fuck them. They fucked us, so now we're fucking them. Fuck them, dude, anyone with a fucking rag on their head is fair game.
....girl, she was probably like 15 years old. Yeah, she was hot dude. The body on that girl, yeah, really tight. You know, hadn't been touched yet. She was fucking prime. So....
One of the guys started pimping her out for 50 bucks a shot. I think at the end of the day, you know, he'd made like 500 bucks before she hung herself.
They have the full transcript here.


The examples and questions of this book are paced to help students understand concepts, recognise common steps, see through typical trick questions and apply mathematical knowledge taught and learned. While the progressive practices ensure familiarity and exposure to a wide variety of question types, there opportunities to exercise higher order thinking through the challenging questions provided in every topic. Detailed solutions are included to guide and help students through critical thinking processes.


text:
The Yamal Peninsula. Photo: Gazprom.ru
Gazprom moves on with another grand project on Yamal tundra
More natural gas from the Yamal Peninsula will be pipelined towards European buyers as Gazprom starts the development of Kharasavey, one of the company's biggest Arctic fields.
The decision to start development of the field was taken during Gazprom CEO Aleksey Miller's visit to the Yamal-Nenets region this week.
According to the company, construction works at Kharasavey will start in 2019 and be completed in 2023. That includes the laying of a 100 km long pipeline to Bovanenkovo, the nearby field and infrastructure hub.
The Kharasavey holds 2 trillion cubic meters of natural gas, and production will amount to 32 billion cubic meters per year. Parts of the field are located offshore in the Kara Sea.
The orange line marks the pipeline connecting the Bovanenkovo and Kharasavey fields. Map by Gazprom
Preparations are underway and housing quarters for the project workers are already on site in Bovanenkovo, Gazprom informs. A total of 1,5 million tons of construction materials will be shipped to site, in summertime through a sea port facility on the Kara Sea coast. In winter time, the goods will be transported with the railway connection to Bovanenkovo, and from there with trucks.
The development of the Kharasavey comes as Gazprom launches its third production train at the nearby Bovanenko. When both fields are in operation after 2023, Gazprom's accumulated natural gas production in the Yamal Peninsula will reach almost 150 billion cubic meters per year. Everything will be sent out through the company's westbound Bovanenkovo-Ukhta pipeline, and most of it subsequently exported through the trans-Baltic Nord Stream pipeline.
«The increase of the Bovanenkovo to full production capacity, the development of the Kharasavey and other Yamal fields, as well as the expansion of the northern gas transportation corridor, is a critically important part of the company's operations,» Gazprom CEO Aleksey Miller underlined during his visit to the region.
Kharasavey has long been planned to be next in line of Gazprom's projects in Yamal. But development has repeatedly been postponed. Back in 2012, company representative Vitaly Markelov announced that production would start in 2019.
The Yamal Peninsula is Russia's biggest development area for natural gas and both Gazprom and Novatek are investing big sums in new infrastructure and fields. The peninsula is flat as a pancake and is surrounding by the shallow waters of the Kara Sea and the Gulf of Ob.
It is all tundra land and the installations built are resting on permafrost. According to Gazprom, measures are taken in order to prevent possible damage from permafrost melting. That includes equipment which lets the company know if the surrounding ground is getting unstable.
Oil companies sum up a year in the Arctic
Methane explodes under Yamal tundra, creates another sinkhole
Gazprom prepares for Arctic drilling in new Yamal projects
Oil industry fears new Yamal sinkholes
Gazprom puts Yamal expansion on hold
Gazprom expands Arctic production


Phasor diagrams can be used to represent voltages and currents in A.C. circuits. They show not only the magnitude (size) of the voltage or current, but also the phase angle of it.
See the diagrams below for some examples. Diagrams for components in series are drawn using the current as the reference phasor (since it is the same for all the components in series), those for parallel circuits use the voltage as the reference phasor.
The length of the line for each component represents the magnitude of the voltage or current, and the angle between it and the reference phasor is the phase angle.
Note that often phasor diagrams are only sketched, rather than drawn to scale!


Central England Co-operative is supporting the forthcoming Lichfield Community Games with a £3,000 grant to encourage people of all ages to try a wide variety of different sports and activities to help promote a healthy lifestyle.
The games will take place in Beacon Park from noon to 5pm on 29 and 30 September and will include over 40 sports and activities for all ages to try, with everything from badminton and basketball to dancing and weightlifting.
The event is one of many planned across the region to bring communities together for a celebration of sports and other activities in the run up to the Commonwealth Games, which are taking place in Birmingham in 2020.
In a bid to get all ages fired up about becoming more active, visitors are invited to take part in a range of taster activities. Participants will receive a sticker for each activity they try, and those who complete eight activities or more will receive a medal to mark their achievement.
Central England Co-operative will be offering activities to promote healthy levels of exercise and inform visitors about healthy eating with a game to create a giant eat well plate. Visitors will also have the opportunity to make free, healthy fruit kebabs.


Are you a committed and creative teacher who is passionate about promoting good progress and outcomes? Do you consider yourself to have excellent behaviour management skills and high expectations for all children and staff? Are you looking for your next challenge?
Randstad Education is currently assisting a Primary School in the Dewsbury area in their search for a qualified, experienced and passionate KS2 Teacher to join them on a cover basis until July 2019 (initially). If you are an enthusiastic and creative individual who is constantly searching for ways to engage and motivate learners to provide a fun and enjoyable learning experience, then you are exactly what we're looking for!
Click 'apply now' for the opportunity to start a new challenge in this fantastic school! Alternatively, submit an up to date CV to leeds@randstadeducation.co.uk or call one of our primary consultants today on 0113 246 2500.
If you feel that this role is not quite suitable for you, you can still submit your CV to Randstad to leeds@randstadeducation.co.uk or if you know someone who would be a good fit then refer a friend today!


text:
OpinionCatholicism
Vatican dogma v Margaret Farley's Just Love
The Church's misguided attack on Farley's theology is not only authoritarian, but out of touch with American Catholic opinion
The latest instance of the Vatican's censure of American nuns shows how far Rome is from the modern US Catholic mainstream. Photograph: Max Rossi/Reuters
Mon 18 Jun 2012 11.52 EDT
On 5 June, the Vatican's Congregation for the Doctrine of the Faith (CDF), charged with monitoring doctrine, issued a "notification" against the work of an American sister of mercy, Margaret Farley. Farley's 2006 book, Just Love: A Framework for Christian Sexual Ethics, takes positions justifying divorce and remarriage, homosexuality, and, yes, masturbation, that are out of step with official Catholic teaching. The content of the Vatican reprisal can be fairly summed up as a series of declarations that Farley's proposals on these topics "are in direct contradiction with Catholic teaching".
Surely, this fact will surprise no one.
What may be news to some, however, is the extent to which US Catholic opinion supports Farley. While Catholics divorce at a rate much lower than the near 50% of the rest of the country, fewer than 10% of Catholics say divorce is never justified. A majority of Catholics (64%) favor legal recognition of gay unions, which is more than other Christian denominations and more than Americans overall.
Masturbation is also of concern to the Vatican's Congregation for the Doctrine of the Faith. Farley's book spends only one paragraph on it, and it has not been deemed significant enough by pollsters to provide me with any recent data on Catholic attitudes. Contraception, which Farley does not mention, is still vehemently condemned by the official Church. But 98% of Catholic women are using or have used artificial birth control. Opposition to contraception is the reason United States bishops are currently pulling out all the stops to oppose the Department of Health and Human Services mandate that insurers include contraception as part of preventive care under the new healthcare reform act.
Margaret Farley: the CDF attack on her work has turned her book into a bestseller. Photograph: Yale Divinity School
Just Love, formerly number 142,982 in Amazon's sales rankings, zoomed within a week up to 16 (No 1 in religious studies), and sold out in three days. What were Farley's reasons for writing the book? She believes that many Catholics and other Christians are suffering from stigma and exclusion due to teaching that may be observed in the breach, but is still part of the official self-definition of their faith traditions. Fear of nonacceptance by people in second marriages or gay relationships should decline quickly, if recent statistics tell the truth.
Bigger problems for the millennials (born between 1980 and 2000) are the pervasive "hook-up" culture of ad hoc casual sex between mere acquaintances, and the specter of likely marital break-up. Also worthy of concern are continuing gender inequities, and the commercialization of sex to market products from lingerie to automobiles, to popular music and sports. These realities call for a firm moral response grounded in objective values.
Such an approach would be similar to what the Catholic tradition has called "natural law", an approach the CDF says Farley has betrayed in favor of mere "experience". In fact, Farley invokes experience not to replace objective moral standards, but to bring their application up-to-date and make them more persuasive. Just Love and an earlier work, Personal Commitments, maintain (as does Catholic tradition) that any truly loving relationship will meet the test of justice, understood as respect for oneself and other persons, and as responsibility for the good of others, as well as one's own desires and interests.
The method of critique adopted by the authors of the notification does not effectively promote either the specific contents of Catholic sexual teaching or the basic idea of objective morality based on the natural law. The notification simply asserts that Farley's views are not official Catholic teaching, then reiterates official positions without engaging any of the substantive arguments for or against them. This strategy creates the unfortunate impression that engaging Farley's arguments is superfluous because the condemnation of her book was predetermined and the investigation a mere formality. It raises the suspicion there are, in fact, no reasonable arguments to back the positions asserted by the notification, and even that the CDF itself has abandoned the grounding of moral theology in objective reasoning – relying, instead, on the sole authority of past conclusions.
It should be added that the Vatican's selection of moral issues to criticize does not reflect the priorities of Just Love. A huge concern of the book is gender-based violence and sexual oppression of women worldwide. These issues have actually received significant attention in recent papal teaching. They receive nary a mention in the notification, which seems to find masturbation more important.
A final point is the nature and role of theology – which is not the same as official doctrinal teaching. Medieval thinkers defined theology as fides quarens intellectum – "faith seeking understanding". Theology is rooted in faith and practical concerns. But the main purpose of theology, unlike pastoral teaching or the definition of doctrines, is the understanding of God and of humans in relation to God. Understanding involves intellectual justification and cogency.
Finally, theology is a process of seeking, inquiry and exploration in a dynamic and critical relation to other theological positions. Theologians do not see or present their work as "official Catholic teaching" and few of the faithful are confused about this fact. Readers of Just Love will feel free to question, disagree and improve the points of the author – as is, no doubt, her intention.