text:
namespace net {

namespace {

const char kHello[] = "Hello, world!";
const uint64 kHelloLength = arraysize(kHello) - 1;
const char kHelloFrame[] = "\x81\x0DHello, world!";
const uint64 kHelloFrameLength = arraysize(kHelloFrame) - 1;
const char kMaskedHelloFrame[] =
    "\x81\x8D\xDE\xAD\xBE\xEF"
    "\x96\xC8\xD2\x83\xB1\x81\x9E\x98\xB1\xDF\xD2\x8B\xFF";
const uint64 kMaskedHelloFrameLength = arraysize(kMaskedHelloFrame) - 1;

struct FrameHeaderTestCase {
  const char* frame_header;
  size_t frame_header_length;
  uint64 frame_length;
  WebSocketError error_code;
};

const FrameHeaderTestCase kFrameHeaderTests[] = {
  { "\x81\x00", 2, GG_UINT64_C(0), kWebSocketNormalClosure },
  { "\x81\x7D", 2, GG_UINT64_C(125), kWebSocketNormalClosure },
  { "\x81\x7E\x00\x7E", 4, GG_UINT64_C(126), kWebSocketNormalClosure },
  { "\x81\x7E\xFF\xFF", 4, GG_UINT64_C(0xFFFF), kWebSocketNormalClosure },
  { "\x81\x7F\x00\x00\x00\x00\x00\x01\x00\x00", 10, GG_UINT64_C(0x10000),
    kWebSocketNormalClosure },
  { "\x81\x7F\x00\x00\x00\x00\x7F\xFF\xFF\xFF", 10, GG_UINT64_C(0x7FFFFFFF),
    kWebSocketNormalClosure },
  { "\x81\x7F\x00\x00\x00\x00\x80\x00\x00\x00", 10, GG_UINT64_C(0x80000000),
    kWebSocketErrorMessageTooBig },
  { "\x81\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF", 10,
    GG_UINT64_C(0x7FFFFFFFFFFFFFFF), kWebSocketErrorMessageTooBig }
};
const int kNumFrameHeaderTests = arraysize(kFrameHeaderTests);

TEST(WebSocketFrameParserTest, DecodeNormalFrame) {
  WebSocketFrameParser parser;

  ScopedVector<WebSocketFrameChunk> frames;
  EXPECT_TRUE(parser.Decode(kHelloFrame, kHelloFrameLength, &frames));
  EXPECT_EQ(kWebSocketNormalClosure, parser.websocket_error());
  ASSERT_EQ(1u, frames.size());
  WebSocketFrameChunk* frame = frames[0];
  ASSERT_TRUE(frame != NULL);
  const WebSocketFrameHeader* header = frame->header.get();
  EXPECT_TRUE(header != NULL);
  if (header) {
    EXPECT_TRUE(header->final);
    EXPECT_FALSE(header->reserved1);
    EXPECT_FALSE(header->reserved2);
    EXPECT_FALSE(header->reserved3);
    EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header->opcode);
    EXPECT_FALSE(header->masked);
    EXPECT_EQ(kHelloLength, header->payload_length);
  }
  EXPECT_TRUE(frame->final_chunk);

  ASSERT_EQ(static_cast<int>(kHelloLength), frame->data->size());
  EXPECT_TRUE(std::equal(kHello, kHello + kHelloLength, frame->data->data()));
}

TEST(WebSocketFrameParserTest, DecodeMaskedFrame) {
  WebSocketFrameParser parser;

  ScopedVector<WebSocketFrameChunk> frames;
  EXPECT_TRUE(
      parser.Decode(kMaskedHelloFrame, kMaskedHelloFrameLength, &frames));
  EXPECT_EQ(kWebSocketNormalClosure, parser.websocket_error());
  ASSERT_EQ(1u, frames.size());
  WebSocketFrameChunk* frame = frames[0];
  ASSERT_TRUE(frame != NULL);
  const WebSocketFrameHeader* header = frame->header.get();
  EXPECT_TRUE(header != NULL);
  if (header) {
    EXPECT_TRUE(header->final);
    EXPECT_FALSE(header->reserved1);
    EXPECT_FALSE(header->reserved2);
    EXPECT_FALSE(header->reserved3);
    EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header->opcode);
    EXPECT_TRUE(header->masked);
    EXPECT_EQ(kHelloLength, header->payload_length);
  }
  EXPECT_TRUE(frame->final_chunk);

  ASSERT_EQ(static_cast<int>(kHelloLength), frame->data->size());
  EXPECT_TRUE(std::equal(kHello, kHello + kHelloLength, frame->data->data()));
}

TEST(WebSocketFrameParserTest, DecodeManyFrames) {
  struct Input {
    const char* frame;
    size_t frame_length;
    const char* expected_payload;
    size_t expected_payload_length;
  };
  static const Input kInputs[] = {
    // Each |frame| data is split into two string literals because C++ lexers
    // consume unlimited number of hex characters in a hex character escape
    // (e.g. "\x05F" is not treated as { '\x5', 'F', '\0' } but as
    // { '\x5F', '\0' }).
    { "\x81\x05" "First", 7, "First", 5 },
    { "\x81\x06" "Second", 8, "Second", 6 },
    { "\x81\x05" "Third", 7, "Third", 5 },
    { "\x81\x06" "Fourth", 8, "Fourth", 6 },
    { "\x81\x05" "Fifth", 7, "Fifth", 5 },
    { "\x81\x05" "Sixth", 7, "Sixth", 5 },
    { "\x81\x07" "Seventh", 9, "Seventh", 7 },
    { "\x81\x06" "Eighth", 8, "Eighth", 6 },
    { "\x81\x05" "Ninth", 7, "Ninth", 5 },
    { "\x81\x05" "Tenth", 7, "Tenth", 5 }
  };
  static const int kNumInputs = arraysize(kInputs);

  std::vector<char> input;
  // Concatenate all frames.
  for (int i = 0; i < kNumInputs; ++i) {
    input.insert(input.end(),
                 kInputs[i].frame,
                 kInputs[i].frame + kInputs[i].frame_length);
  }

  WebSocketFrameParser parser;

  ScopedVector<WebSocketFrameChunk> frames;
  EXPECT_TRUE(parser.Decode(&input.front(), input.size(), &frames));
  EXPECT_EQ(kWebSocketNormalClosure, parser.websocket_error());
  ASSERT_EQ(static_cast<size_t>(kNumInputs), frames.size());

  for (int i = 0; i < kNumInputs; ++i) {
    WebSocketFrameChunk* frame = frames[i];
    EXPECT_TRUE(frame != NULL);
    if (!frame)
      continue;
    EXPECT_TRUE(frame->final_chunk);
    ASSERT_EQ(kInputs[i].expected_payload_length,
              static_cast<uint64>(frame->data->size()));
    EXPECT_TRUE(std::equal(
        kInputs[i].expected_payload,
        kInputs[i].expected_payload + kInputs[i].expected_payload_length,
        frame->data->data()));

    const WebSocketFrameHeader* header = frame->header.get();
    EXPECT_TRUE(header != NULL);
    if (!header)
      continue;
    EXPECT_TRUE(header->final);
    EXPECT_FALSE(header->reserved1);
    EXPECT_FALSE(header->reserved2);
    EXPECT_FALSE(header->reserved3);
    EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header->opcode);
    EXPECT_FALSE(header->masked);
    EXPECT_EQ(kInputs[i].expected_payload_length, header->payload_length);
  }
}

TEST(WebSocketFrameParserTest, DecodePartialFrame) {
  static const size_t kFrameHeaderSize = 2;

  for (size_t cutting_pos = 0; cutting_pos < kHelloLength; ++cutting_pos) {
    std::vector<char> input1(kHelloFrame,
                             kHelloFrame + kFrameHeaderSize + cutting_pos);
    std::vector<char> input2(kHelloFrame + input1.size(),
                             kHelloFrame + kHelloFrameLength);

    std::vector<char> expected1(kHello, kHello + cutting_pos);
    std::vector<char> expected2(kHello + cutting_pos, kHello + kHelloLength);

    WebSocketFrameParser parser;

    ScopedVector<WebSocketFrameChunk> frames1;
    EXPECT_TRUE(parser.Decode(&input1.front(), input1.size(), &frames1));
    EXPECT_EQ(kWebSocketNormalClosure, parser.websocket_error());
    EXPECT_EQ(1u, frames1.size());
    if (frames1.size() != 1u)
      continue;
    WebSocketFrameChunk* frame1 = frames1[0];
    EXPECT_TRUE(frame1 != NULL);
    if (!frame1)
      continue;
    EXPECT_FALSE(frame1->final_chunk);
    if (expected1.size() == 0) {
      EXPECT_EQ(NULL, frame1->data.get());
    } else {
      ASSERT_EQ(cutting_pos, static_cast<size_t>(frame1->data->size()));
      EXPECT_TRUE(
          std::equal(expected1.begin(), expected1.end(), frame1->data->data()));
    }
    const WebSocketFrameHeader* header1 = frame1->header.get();
    EXPECT_TRUE(header1 != NULL);
    if (!header1)
      continue;
    EXPECT_TRUE(header1->final);
    EXPECT_FALSE(header1->reserved1);
    EXPECT_FALSE(header1->reserved2);
    EXPECT_FALSE(header1->reserved3);
    EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header1->opcode);
    EXPECT_FALSE(header1->masked);
    EXPECT_EQ(kHelloLength, header1->payload_length);

    ScopedVector<WebSocketFrameChunk> frames2;
    EXPECT_TRUE(parser.Decode(&input2.front(), input2.size(), &frames2));
    EXPECT_EQ(kWebSocketNormalClosure, parser.websocket_error());
    EXPECT_EQ(1u, frames2.size());
    if (frames2.size() != 1u)
      continue;
    WebSocketFrameChunk* frame2 = frames2[0];
    EXPECT_TRUE(frame2 != NULL);
    if (!frame2)
      continue;
    EXPECT_TRUE(frame2->final_chunk);
    if (expected2.size() == 0) {
      EXPECT_EQ(NULL, frame2->data.get());
    } else {
      ASSERT_EQ(expected2.size(), static_cast<uint64>(frame2->data->size()));
      EXPECT_TRUE(
          std::equal(expected2.begin(), expected2.end(), frame2->data->data()));
    }
    const WebSocketFrameHeader* header2 = frame2->header.get();
    EXPECT_TRUE(header2 == NULL);
  }
}

TEST(WebSocketFrameParserTest, DecodePartialMaskedFrame) {
  static const size_t kFrameHeaderSize = 6;

  for (size_t cutting_pos = 0; cutting_pos < kHelloLength; ++cutting_pos) {
    std::vector<char> input1(
        kMaskedHelloFrame, kMaskedHelloFrame + kFrameHeaderSize + cutting_pos);
    std::vector<char> input2(kMaskedHelloFrame + input1.size(),
                             kMaskedHelloFrame + kMaskedHelloFrameLength);

    std::vector<char> expected1(kHello, kHello + cutting_pos);
    std::vector<char> expected2(kHello + cutting_pos, kHello + kHelloLength);

    WebSocketFrameParser parser;

    ScopedVector<WebSocketFrameChunk> frames1;
    EXPECT_TRUE(parser.Decode(&input1.front(), input1.size(), &frames1));
    EXPECT_EQ(kWebSocketNormalClosure, parser.websocket_error());
    EXPECT_EQ(1u, frames1.size());
    if (frames1.size() != 1u)
      continue;
    WebSocketFrameChunk* frame1 = frames1[0];
    EXPECT_TRUE(frame1 != NULL);
    if (!frame1)
      continue;
    EXPECT_FALSE(frame1->final_chunk);
    if (expected1.size() == 0) {
      EXPECT_EQ(NULL, frame1->data.get());
    } else {
      ASSERT_EQ(expected1.size(), static_cast<uint64>(frame1->data->size()));
      EXPECT_TRUE(
          std::equal(expected1.begin(), expected1.end(), frame1->data->data()));
    }
    const WebSocketFrameHeader* header1 = frame1->header.get();
    EXPECT_TRUE(header1 != NULL);
    if (!header1)
      continue;
    EXPECT_TRUE(header1->final);
    EXPECT_FALSE(header1->reserved1);
    EXPECT_FALSE(header1->reserved2);
    EXPECT_FALSE(header1->reserved3);
    EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header1->opcode);
    EXPECT_TRUE(header1->masked);
    EXPECT_EQ(kHelloLength, header1->payload_length);

    ScopedVector<WebSocketFrameChunk> frames2;
    EXPECT_TRUE(parser.Decode(&input2.front(), input2.size(), &frames2));
    EXPECT_EQ(kWebSocketNormalClosure, parser.websocket_error());
    EXPECT_EQ(1u, frames2.size());
    if (frames2.size() != 1u)
      continue;
    WebSocketFrameChunk* frame2 = frames2[0];
    EXPECT_TRUE(frame2 != NULL);
    if (!frame2)
      continue;
    EXPECT_TRUE(frame2->final_chunk);
    if (expected2.size() == 0) {
      EXPECT_EQ(NULL, frame2->data.get());
    } else {
      ASSERT_EQ(expected2.size(), static_cast<uint64>(frame2->data->size()));
      EXPECT_TRUE(
          std::equal(expected2.begin(), expected2.end(), frame2->data->data()));
    }
    const WebSocketFrameHeader* header2 = frame2->header.get();
    EXPECT_TRUE(header2 == NULL);
  }
}

TEST(WebSocketFrameParserTest, DecodeFramesOfVariousLengths) {
  for (int i = 0; i < kNumFrameHeaderTests; ++i) {
    const char* frame_header = kFrameHeaderTests[i].frame_header;
    size_t frame_header_length = kFrameHeaderTests[i].frame_header_length;
    uint64 frame_length = kFrameHeaderTests[i].frame_length;

    std::vector<char> input(frame_header, frame_header + frame_header_length);
    // Limit the payload size not to flood the console on failure.
    static const uint64 kMaxPayloadSize = 200;
    uint64 input_payload_size = std::min(frame_length, kMaxPayloadSize);
    input.insert(input.end(), input_payload_size, 'a');

    WebSocketFrameParser parser;

    ScopedVector<WebSocketFrameChunk> frames;
    EXPECT_EQ(kFrameHeaderTests[i].error_code == kWebSocketNormalClosure,
              parser.Decode(&input.front(), input.size(), &frames));
    EXPECT_EQ(kFrameHeaderTests[i].error_code, parser.websocket_error());
    if (kFrameHeaderTests[i].error_code != kWebSocketNormalClosure) {
      EXPECT_EQ(0u, frames.size());
    } else {
      EXPECT_EQ(1u, frames.size());
    }
    if (frames.size() != 1u)
      continue;
    WebSocketFrameChunk* frame = frames[0];
    EXPECT_TRUE(frame != NULL);
    if (!frame)
      continue;
    if (frame_length == input_payload_size) {
      EXPECT_TRUE(frame->final_chunk);
    } else {
      EXPECT_FALSE(frame->final_chunk);
    }
    std::vector<char> expected_payload(input_payload_size, 'a');
    if (expected_payload.size() == 0) {
      EXPECT_EQ(NULL, frame->data.get());
    } else {
      ASSERT_EQ(expected_payload.size(),
                static_cast<uint64>(frame->data->size()));
      EXPECT_TRUE(std::equal(expected_payload.begin(),
                             expected_payload.end(),
                             frame->data->data()));
    }
    const WebSocketFrameHeader* header = frame->header.get();
    EXPECT_TRUE(header != NULL);
    if (!header)
      continue;
    EXPECT_TRUE(header->final);
    EXPECT_FALSE(header->reserved1);
    EXPECT_FALSE(header->reserved2);
    EXPECT_FALSE(header->reserved3);
    EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header->opcode);
    EXPECT_FALSE(header->masked);
    EXPECT_EQ(frame_length, header->payload_length);
  }
}

TEST(WebSocketFrameParserTest, DecodePartialHeader) {
  for (int i = 0; i < kNumFrameHeaderTests; ++i) {
    const char* frame_header = kFrameHeaderTests[i].frame_header;
    size_t frame_header_length = kFrameHeaderTests[i].frame_header_length;
    uint64 frame_length = kFrameHeaderTests[i].frame_length;

    WebSocketFrameParser parser;

    ScopedVector<WebSocketFrameChunk> frames;
    // Feed each byte to the parser to see if the parser behaves correctly
    // when it receives partial frame header.
    size_t last_byte_offset = frame_header_length - 1;
    for (size_t j = 0; j < frame_header_length; ++j) {
      bool failed =
          kFrameHeaderTests[i].error_code != kWebSocketNormalClosure &&
          j == last_byte_offset;
      EXPECT_EQ(!failed, parser.Decode(frame_header + j, 1, &frames));
      if (failed) {
        EXPECT_EQ(kFrameHeaderTests[i].error_code, parser.websocket_error());
      } else {
        EXPECT_EQ(kWebSocketNormalClosure, parser.websocket_error());
      }
      if (kFrameHeaderTests[i].error_code == kWebSocketNormalClosure &&
          j == last_byte_offset) {
        EXPECT_EQ(1u, frames.size());
      } else {
        EXPECT_EQ(0u, frames.size());
      }
    }
    if (frames.size() != 1u)
      continue;
    WebSocketFrameChunk* frame = frames[0];
    EXPECT_TRUE(frame != NULL);
    if (!frame)
      continue;
    if (frame_length == 0u) {
      EXPECT_TRUE(frame->final_chunk);
    } else {
      EXPECT_FALSE(frame->final_chunk);
    }
    EXPECT_EQ(NULL, frame->data.get());
    const WebSocketFrameHeader* header = frame->header.get();
    EXPECT_TRUE(header != NULL);
    if (!header)
      continue;
    EXPECT_TRUE(header->final);
    EXPECT_FALSE(header->reserved1);
    EXPECT_FALSE(header->reserved2);
    EXPECT_FALSE(header->reserved3);
    EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header->opcode);
    EXPECT_FALSE(header->masked);
    EXPECT_EQ(frame_length, header->payload_length);
  }
}

TEST(WebSocketFrameParserTest, InvalidLengthEncoding) {
  struct TestCase {
    const char* frame_header;
    size_t frame_header_length;
  };
  static const TestCase kTests[] = {
    // For frames with two-byte extended length field, the payload length
    // should be 126 (0x7E) bytes or more.
    { "\x81\x7E\x00\x00", 4 },
    { "\x81\x7E\x00\x7D", 4 },
    // For frames with eight-byte extended length field, the payload length
    // should be 0x10000 bytes or more.
    { "\x81\x7F\x00\x00\x00\x00\x00\x00\x00\x00", 10 },
    { "\x81\x7E\x00\x00\x00\x00\x00\x00\xFF\xFF", 10 },
  };
  static const int kNumTests = arraysize(kTests);

  for (int i = 0; i < kNumTests; ++i) {
    const char* frame_header = kTests[i].frame_header;
    size_t frame_header_length = kTests[i].frame_header_length;

    WebSocketFrameParser parser;

    ScopedVector<WebSocketFrameChunk> frames;
    EXPECT_EQ(kWebSocketNormalClosure, parser.websocket_error());
    EXPECT_FALSE(parser.Decode(frame_header, frame_header_length, &frames));
    EXPECT_EQ(kWebSocketErrorProtocolError, parser.websocket_error());
    EXPECT_EQ(0u, frames.size());

    // Once the parser has failed, it no longer accepts any input (even if
    // the input is empty).
    EXPECT_FALSE(parser.Decode("", 0, &frames));
    EXPECT_EQ(kWebSocketErrorProtocolError, parser.websocket_error());
    EXPECT_EQ(0u, frames.size());
  }
}

TEST(WebSocketFrameParserTest, FrameTypes) {
  struct TestCase {
    const char* frame_header;
    size_t frame_header_length;
    WebSocketFrameHeader::OpCode opcode;
  };
  static const TestCase kTests[] = {
    { "\x80\x00", 2, WebSocketFrameHeader::kOpCodeContinuation },
    { "\x81\x00", 2, WebSocketFrameHeader::kOpCodeText },
    { "\x82\x00", 2, WebSocketFrameHeader::kOpCodeBinary },
    { "\x88\x00", 2, WebSocketFrameHeader::kOpCodeClose },
    { "\x89\x00", 2, WebSocketFrameHeader::kOpCodePing },
    { "\x8A\x00", 2, WebSocketFrameHeader::kOpCodePong },
    // These are undefined opcodes, but the parser needs to be able to parse
    // them anyway.
    { "\x83\x00", 2, 0x3 },
    { "\x84\x00", 2, 0x4 },
    { "\x85\x00", 2, 0x5 },
    { "\x86\x00", 2, 0x6 },
    { "\x87\x00", 2, 0x7 },
    { "\x8B\x00", 2, 0xB },
    { "\x8C\x00", 2, 0xC },
    { "\x8D\x00", 2, 0xD },
    { "\x8E\x00", 2, 0xE },
    { "\x8F\x00", 2, 0xF }
  };
  static const int kNumTests = arraysize(kTests);

  for (int i = 0; i < kNumTests; ++i) {
    const char* frame_header = kTests[i].frame_header;
    size_t frame_header_length = kTests[i].frame_header_length;
    WebSocketFrameHeader::OpCode opcode = kTests[i].opcode;

    WebSocketFrameParser parser;

    ScopedVector<WebSocketFrameChunk> frames;
    EXPECT_TRUE(parser.Decode(frame_header, frame_header_length, &frames));
    EXPECT_EQ(kWebSocketNormalClosure, parser.websocket_error());
    EXPECT_EQ(1u, frames.size());
    if (frames.size() != 1u)
      continue;
    WebSocketFrameChunk* frame = frames[0];
    EXPECT_TRUE(frame != NULL);
    if (!frame)
      continue;
    EXPECT_TRUE(frame->final_chunk);
    EXPECT_EQ(NULL, frame->data.get());
    const WebSocketFrameHeader* header = frame->header.get();
    EXPECT_TRUE(header != NULL);
    if (!header)
      continue;
    EXPECT_TRUE(header->final);
    EXPECT_FALSE(header->reserved1);
    EXPECT_FALSE(header->reserved2);
    EXPECT_FALSE(header->reserved3);
    EXPECT_EQ(opcode, header->opcode);
    EXPECT_FALSE(header->masked);
    EXPECT_EQ(0u, header->payload_length);
  }
}

TEST(WebSocketFrameParserTest, FinalBitAndReservedBits) {
  struct TestCase {
    const char* frame_header;
    size_t frame_header_length;
    bool final;
    bool reserved1;
    bool reserved2;
    bool reserved3;
  };
  static const TestCase kTests[] = {
    { "\x81\x00", 2, true, false, false, false },
    { "\x01\x00", 2, false, false, false, false },
    { "\xC1\x00", 2, true, true, false, false },
    { "\xA1\x00", 2, true, false, true, false },
    { "\x91\x00", 2, true, false, false, true },
    { "\x71\x00", 2, false, true, true, true },
    { "\xF1\x00", 2, true, true, true, true }
  };
  static const int kNumTests = arraysize(kTests);

  for (int i = 0; i < kNumTests; ++i) {
    const char* frame_header = kTests[i].frame_header;
    size_t frame_header_length = kTests[i].frame_header_length;
    bool final = kTests[i].final;
    bool reserved1 = kTests[i].reserved1;
    bool reserved2 = kTests[i].reserved2;
    bool reserved3 = kTests[i].reserved3;

    WebSocketFrameParser parser;

    ScopedVector<WebSocketFrameChunk> frames;
    EXPECT_TRUE(parser.Decode(frame_header, frame_header_length, &frames));
    EXPECT_EQ(kWebSocketNormalClosure, parser.websocket_error());
    EXPECT_EQ(1u, frames.size());
    if (frames.size() != 1u)
      continue;
    WebSocketFrameChunk* frame = frames[0];
    EXPECT_TRUE(frame != NULL);
    if (!frame)
      continue;
    EXPECT_TRUE(frame->final_chunk);
    EXPECT_EQ(NULL, frame->data.get());
    const WebSocketFrameHeader* header = frame->header.get();
    EXPECT_TRUE(header != NULL);
    if (!header)
      continue;
    EXPECT_EQ(final, header->final);
    EXPECT_EQ(reserved1, header->reserved1);
    EXPECT_EQ(reserved2, header->reserved2);
    EXPECT_EQ(reserved3, header->reserved3);
    EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header->opcode);
    EXPECT_FALSE(header->masked);
    EXPECT_EQ(0u, header->payload_length);
  }
}

}  // Unnamed namespace

}  // namespace net


text:
in: Coronation Street characters, Past characters, Characters first seen in 1998.,
Characters last seen in 2001.
Sykes family
Baldwins.
2000 Marriages
1990s characters
Coronation Street bad girls.
Villains.
Divorced (presumably remarried)
Dublin (2002-)
Ray Sykes
Evelyn Elliott
Sibling(s)
Jimmy Sykes
Ryan Sykes
1 other brother
Mike Baldwin (2000-2001)
Portrayed by
Jacqueline Chadwick
Linda Baldwin (Nee Sykes) was a character in Coronation Street from 1998 to 2001. She married much older Mike Baldwin, probably due to his wealth. Linda was played by Jacqueline Pirie.
1.1 Backstory
1.2 1998-2001
1.3 Following her departure
3 Memorable info
Linda Sykes was born on 23rd June 1975 to Ryan and Evelyn. She also had four brothers, with one of them being the crooked Dean Sykes.
1998-2001[]
Linda began working as a machinist at Underworld on Coronation Street in October 1998. When co-worker Hayley Patterson revealed to the shocked workforce that she was a transsexual, Hayley found herself bullied by the workforce. Linda especially took delight in tormenting Hayley, and tried to prevent her from using the female toilets before being ordered to stand down by her boss Mike Baldwin. Eventually the rest of the girls softened towards Hayley and accepted who she was, although Linda still held her in contempt.
When Mike split from his wife Alma, Linda moved in on him and they began a secret affair. She eventually fell for Mike for good, and they later made their relationship public, which was met with amusement due to the age gap, although Alma was disgusted. The pair got engaged, although Linda began an affair with Mike's son Mark Redman. She still went ahead with the wedding to Mike in 2000, although Mark exposed the affair. This resulted in Mike disowning his son, although he forgave Linda and they remained together. In October 2000, Linda's brother Dean was shot dead when he held the Frescho's supermarket, with two of the hostages being Mike and Alma. Despite Dean's actions, Linda was devastated about her brother's death, and held contempt towards police officer Emma Taylor who fired the shot.
In 2001 Linda grew jealous towards Mike's closeness to Alma, especially after the latter was diagnosed with cancer. Mike chose to remain with his ex-wife in her final days of life before she passed away in June 2001, much to Linda's anger. In revenge, she had an affair with one of his clients. Mike realised that Alma was his true love, and in the wake of her death he made up with his son Mark. She asked Mike for a divorce and tried to reconcile her affair with Mark. When Mike found out in September 2001, he angrily bundled her into his car and ordered her to never return in his life again. Linda then drove off, leaving behind Weatherfield for good.
Following her departure[]
Linda dumped Mike's car in a river and moved to Dublin. She met a rich man there and shacked up with him. Due to her disappearance and not being heard of, some people suspected that Mike had killed her, but in 2002 her father Ryan revealed Linda's whereabouts and that she was engaged. It is unknown if the wedding went ahead as Linda wasn't heard from ever again.
Jacqueline Chadwick joined the series as Linda in 1998. She had previously appeared in the other ITV drama Emmerdale from 1994 to 1996.
In March 2001 it was announced Chadwick was pregnant with her second child. She left the show in September 2001 due to complications with the pregnancy, and took six weeks off sick. She made her final appearance as the character on 3rd September 2001, and didn't film any exit scenes so Linda made an appearance from a distance and played by a double on 5th September 2001, when she was seen being forced into a car by Mike. Chadwick later confirmed that she wouldn't be returning to the series, and Coronation Street marked her final television appearance as she later quit acting and started a career as an acting teacher and then a crime writer.
Born: 23rd June 1975
Full Name: Linda Baldwin (Nee Sykes)
Siblings:
Spouse: Mike Baldwin (2000-2001), Unnamed second husband (c.2002-)
Characters first seen in 1998.

redpajama_set_name: RedPajamaCommonCrawl


text:
Barking couple jailed for 15 years each for nearly killing toddler
Anna Dubuis
Published: 4:53 PM March 6, 2013 Updated: 6:59 AM October 14, 2020
- Credit: Archant
A couple from Barking have been jailed for 15 years each today for causing a baby girl such horrific injuries that a paramedic thought she was a corpse.
Raphael Belinga, 45, and Teodora Predescu, 34, from Barking, were found guilty of GBH with intent at Snaresbrook Crown Court on February 26 after subjecting the youngster to eight months of abuse.
Sentencing them at the same court this afternoon, Judge Martyn Zeidman QC said: "How is it possible to be so cruel, to torture an innocent child?
"It was not a one-off act of temper but a sustained and continuing attack over many days. When the medics arrived they thought [the baby] was a corpse.
"Paramedics must see some awful cases but this witness observed that in his 17 years of doing the job he has never seen a worse case. Apart from the smashed or non existent lips, the horrifying extensive bruising and the marks from bites and burning, this baby had also been starved."
Speaking directly to Predescu he said: "At the scene, the medics said you showed no emotion and had to be encouraged to hug or touch the dying baby. When arrested you lied and tried to convince the police that this had all happened by her falling down the stairs."
Both Belinga and Predescu were sentenced to a total of 15 years in prison.
Officers called at the house in Barking on August 25 after concerns were raised about the child's welfare.
The one-year-old was found motionless on a bed with extensive bruising to her head, face and body, two black eyes, a split upper lip, a cauliflower ear and abrasions to her body.
She was suffering such severe malnutrition that she was immediately airlifted to the Royal London Hospital.
The prosecution said that the child was recovering well.


text:
The Wenner-Gren Blog
NYAS @ WGF 3/26: Is Extreme Inequality Inevitable?: What Archaeology Can Tell Us about the 99 Percent.
March 19, 2018 MarkRNew York Academy of Sciences
Join us at the Wenner-Gren Foundation on March 26th at 5:45 PM for another great installment of the New York Academy of Sciences lecture series. Rosemary Joyce, Professor, Department of Anthropology, University of California, Berkeley, will be presenting "Is Extreme Inequality Inevitable?: What Archaeology Can Tell Us about the 99 Percent". Robert Preucel, Director, Haffenreffer Museum and James Manning Professor of Anthropology at Brown University, will act as discussant.
Please note: the lecture begins at 6:30 PM, and while the event is free to attend pre-registration is required for entry into the building.
Event Registration: If you will be registering for an event for the first time, the New York Academy of Sciences will ask you first to set up a user account with them. Registration is free and does not require divulging personal or financial information.
You can also register by phone, 212-298-8640 or 212-298-8600. Early Registration is strongly recommended since seating is limited.
In many people's minds archaeology is about the search for kings and queens, for treasure and luxuries. It seems as if archaeologists are on the side of rulers, at the expense of the everyday farmer and laborer. And so archaeological theories about social complexity are interpreted to say that human societies are on an implacable universal road toward exaggerated inequality: extreme inequality is inevitable. But is this true? Or can archaeologists illuminate places and times when society did not spiral into ever-widening inequality?
In this talk, I critically examine the need for archaeology to contest the representation of a global rise in inequality as inevitable, arguing that we have let the allure of certain things enchant us, leading to an over-emphasis on the wealthy and powerful. I draw on my decades-long research on prehispanic Honduras, where for centuries people in towns and villages sustained a lower level of inequality than archaeologists see in the city-states of their Classic Maya neighbors.
Using this case study as a beginning point, I address how archaeology can be and is being used to illuminate the long term persistence and social contributions of a far more varied range of actors than the few leaders who have often received the greatest attention in our analyses. I sketch out an alternative place for archaeology in the world today, as an ally of new visions of social life that we can say are viable because they have worked already.
About the Speakers:
Rosemary Joyce is Professor, Department of Anthropology, University of California, Berkeley. Professor Joyce is a major figure in contemporary archaeology, whose fieldwork focuses on Honduras and Mexico. Professor Joyce works on the archaeology of inequality, gender, and materiality. Her research in Honduras explored social histories "in which economic inequality was never as extreme as among neighboring Maya societies, leading me to consider how archaeologists might combat the common assumption that ever-increasing inequality is somehow inevitable." As a museum anthropologist, Joyce has engaged in collections management and exhibition work at Harvard's Peabody Museum, the Wellesley College Museum and Cultural Center, the Heritage Plantation at Sandwich, Massachusetts, the Museo de Antropología e Historia in San Pedro Sula, Honduras, and the National Museum of the American Indian, Smithsonian Institution. Her published work includes Ancient Bodies, Ancient Lives (2008),The Languages of Archaeology: Dialogue, Narrative, and Writing (2002), and Gender and Power in Prehispanic Mesoamerica (2001).
Robert Preucel is Director, Haffenreffer Museum and James Manning Professor of Anthropology at Brown University. Professor Preucel received his doctorate from UCLA in 1988. He was a member of Jim Hill's Pajarito Archaeological Research Project and wrote his dissertation on seasonal agricultural circulation. He was the 6th Annual CAI Visiting Scholar at SIU Carbondale in 1989 and organized a conference on the Processual/Postprocessual debate. In 1990, he took an Assistant Professor position at Harvard University. In 1995, he left Harvard for an Associate Professor position at the University of Pennsylvania. He was made Sally and Alvin V. Shoemaker Professor of Anthropology in 2009 and served as Chair of the Department (2009-2012) and Gregory Annenberg Weingarten Curator-in-charge of the American Section at University of Pennsylvania Museum of Anthropology and Archaeology (2010-2012).
Buffet Dinner at 5:45 pm ($20 contribution for dinner guests / free for students).
Lecture begins at 6:30 pm and are free and open to the public.
Pre-registration is required for entry into the building.
All talks in this series take place at the Wenner-Gren Foundation Building, 470 Park Avenue South, 8th Floor, New York (at 32nd Street).
Fejos Postdoctoral Fellowship: Natasha Fijn
March 8, 2018 MarkRFejos Postdoctoral Fellowship
Once again we are proud to present a trailer and blog post from one of our Fejos Postdoctoral Fellows, Dr. Natasha Fijn. In 2016 Dr. Fijn received a Fejos Postdoctoral Fellowship to aid filmmaking on Two Seasons: Multispecies Medicine in Mongolia.
Two Seasons Trailer from Natasha Fijn on Vimeo.
Two Seasons: Multispecies Medicine in Mongolia
Fejos Postdoctoral Fellowship
We bumped along a rough dirt track across rolling Mongolian grassland. Ganbaa, the driver, was heading for a spring encampment of an elder, who is often called upon to carry out bloodletting on horses. I was in the field to focus on filming cross-species medicinal practices amongst herders for a Fejos Postdoctoral Fellowship. Part of my interest was in how medicinal knowledge is still passed on within herding families in the form of practical mentorship.
As we passed a free-roaming horse herd beside the rutted road, I exclaimed 'Zogsooroi!' (Please stop!). Tiny hooves were protruding from a mare as she lay heaving on the ground. We tumbled out of the vehicle but our approach on foot caused the mare to painfully rise and walk a few steps away. The rest of the herd surrounded her as a means of protection from the strangers. I began filming while Ganbaa retrieved some milk from his vehicle and began whispering an incantation, sprinkling the milk three times to the heavens (Tengger). Both he and I were concerned for the foal, as although the head had emerged there didn't seem to be any movement. We drove up the hillside to a nearby encampment and were immediately welcomed by a young herding couple. When the herder looked through his very old monocular he commented nonchalantly that the foal had just been born. We leapt up from small stools and hurried down the hill to where the mare was still standing.
Unlike earlier, the mare allowed the familiar herder to approach and inspect the placenta. He was clearly someone she trusted and, like her newborn foal, was perhaps one of the first humans she saw in the world. The herder picked up a brown, rubbery object near the placenta, in Mongolia called the 'foal's bite' (or in English the 'foal's bread'). He gave it as a gift to Ganbaa, even though he could have sold it as medicine. Ganbaa was excited by the experience, as it was a sign of good fortune for our travels, witnessing a foal born during daylight, while the herder added that it was the first born for that year within the herd, another auspicious sign. Later, as we set off down the road again, Ganbaa sang songs featuring foals, still elated from our lucky encounter. As I looked out at the expansive rolling landscape from the back seat, I felt elated too, as I could clearly see that what we had just witnessed would make a poignant scene for the start of the documentary.
Such events are the best aspects of observational filmmaking, as without structuring according to a script, or the re-creation of scenes, spur-of-the-moment happenings become important elements. The birth of the foal and the herder's family would not have occurred as a result of a list of shots, or a pre-planned script. The scene encompassed many aspects that I wanted to convey within the film in relation to multispecies medicine in Mongolia, such as: the significance of other beings, not just humans; how ritual and psychology are connected with medicinal health; the importance of timing and the seasons; the nurturing and welfare of mothers and their newborns and that multispecies medicine includes products that are derived from both domestic and wild animals and plants.
I lived in Mongolia for a year in 2005 and again in the spring of 2007. During my PhD fieldwork I found that an almost daily task was the treatment of extended family members, including herd animals by knowledgeable practitioners. One chapter of my book, Living with Herds: human-animal coexistence in Mongolia (2011), describes a multispecies form of Mongolian medicine, yet I wanted to return to the countryside to delve into the topic further through filmmaking. In between, my academic research and filmmaking was focused on Aboriginal Australia, until I returned to Ulaanbaatar in the autumn of 2016 for the coordination of a workshop on 'One Health'. I knew that the most active times of year are spring, with many births and extreme fluctuations in weather conditions. The other key season is autumn, when herders collect medicinal herbs, while preparing hay for the long and hard winter months.
For the purposes of filming this multispecies medicine film, I re-visited two extended families after not having seen them and the beautiful river valleys for ten years. Many of the children were now all grown up and even getting married, yet daily life and routines with the herd animals were still much the same. With their wonderful generosity and cooperation they re-connected me with the local herding community. I discovered the benefits of a longitudinal perspective of researching in the field and noted many subtle changes over time, particularly in the availability of modern medicine.
Ganbaa became not just a driver of the vehicle to carry me into the field from the capital of Ulaanbaatar, he became a collaborator while in the field. He offered to take me to his homeland where he grew up and where his extended family and friends still reside. Through his familial connections in the area, we were warmly welcomed in the homes we visited. He insisted on gifts of a bottle of vodka and his latest book of poetry, spontaneously reciting poetry in every home we visited. Ganbaa is a great orator and managed to loosen even the most reticent herders' tongues. I gave him background information on what I wanted to learn from the herders we visited. During informal interviews and conversations, I let Ganbaa ask questions, in order to allow the discussion to flow smoothly. I wanted to avoid external interruptions and it meant I could concentrate on responding to the conversation with the video camera. If I needed to change a shooting position, or film some different shots of the surroundings, it was only then that I would interject and ask a question to occasionally redirect the conversation for further insights.
The two other homelands within the film were where I had lived in 2005 and the spring of 2007. Nara, as matriarch of a large extended family encampment, is Buddhist and adheres to ritual and ceremony to keep her family and the herds healthy. The film includes other characters within Nara's homeland, however, such as her son. I filmed Nara's son with his own young son observing, while he nurtured a newborn foal in freezing temperatures. Mongolian medicine involves many different forms of treatment, including preventative strategies, moxibustion, bone-setting, antibiotics and vaccinations. I chose to focus primarily on medicinal herbs and bloodletting, which meant that I could draw upon the differing knowledge of herding men and women. It is often the women who collect the medicinal plants, prepare and dry them, and ultimately administer them to the family, or young animals. Bloodletting, on the other hand, is passed down along male patrilines and is usually practiced by men.
The third field location where I filmed was in Bor and Bömbög's homeland. I had lived in the same valley previously within Bömbög's mother's encampment, which meant I had established strong bonds with the extended family. Herders are often reticent to admit that they have any ill animals at all, as a successful practitioner and herder pride themselves in preventing illness in the first place. Some individual casualties, however, are inevitable in such harsh environmental conditions. Bor has been a leader of the local herding community and is well respected for his herding knowledge. Because both he and his wife have confidence in their abilities, they were willing to reveal that they had individual herd animals that were injured and allowed me to film the treatment of them. Bor drove me to the nearest township to visit the local doctor, who also practices traditional medicine, and was comfortable with me filming the doctor diagnosing his ailments.
The concept of a homeland (nutag) and a strong sense of place are important to semi-nomadic herders. I felt the unique environmental conditions should be an important aspect within a film focusing on Mongolian medicine. While editing the footage together, in terms of structure, I chose to focus on the three different areas I filmed in spring and then again in autumn, hence the title 'Two Seasons'. Layering the two seasons with the three locations meant the film is divided into six separate parts: Ganbaa visiting his homeland in spring; Nara's homeland in spring; Bor and Bömbög's homeland in spring, then again all three homelands in autumn. Although the inter-titles focus on just four main protagonists, the different homelands encompass many other knowledgeable individuals from different inter-connected herding families that I filmed within the project.
Filming within a multispecies context in a remote cross-cultural field location requires a form of both observational and participatory filmmaking. Participant observation requires time, embedded in context on location, but it also means that the filmmaker is there and attuned to situations when they happen to occur. Having already spent over a year in the Khangai Mountains ten years previously, it meant I could quickly reintegrate with families and an inherent trust, while new relationships could be formed through collaboration with Mongolians with an ongoing connection to their homeland.
Engaged Anthropology Grant: Devaka Premawardhana
March 8, 2018 MarkREngaged Anthropology Grant
Devaka returning to the district of his fieldwork, this time with Baraka
In 2010 while a doctoral student at Harvard University Devaka Premawardhana received a Dissertation Fieldwork Grant to aid research on "Sacrificial Exchanges: Pentecostal Conversions and Urban Migrations in Northern Mozambique," supervised by Dr. Michael D. Jackson. In 2015 Dr. Premawardhana received an Engaged Anthropology Grant to aid engaged activities on "Displacement: A Seminar Series on Makhuwa Mobility".
"Papá Baraka!"
I didn't respond and kept on my walk.
"Oi! Papá Baraka!"
This time I turned around and saw the daughter of a good friend waving. I walked back toward her, apologizing for not knowing it was me she was calling. We exchanged greetings, asked after each other's family, and then separated with promises for a later, longer visit.
I'm not the same person anymore, I thought to myself as I went back on my way. And I would need to get used to that.
In my year of fieldwork among a Makhuwa-speaking people of Mozambique, I was Devaka. Formally, at least. Those who knew me well called me Namanriya, the Makhuwa word for chameleon. "Vakhani vakhani ntoko namanriya," say the Makhuwa ("slowly, slowly, like the chameleon"), an expression of admiration for the chameleon's unique ability—not so much to change color as to walk slowly, deliberately, and at that pace to take in the margins with its laterally positioned eyes.
Baraka getting a taste of the joyous welcome his parents received
That year, I got around the district on a 50cc Lifo. It was my first time riding a motorbike, and I was riding on sandy, unpaved roads. So I never went fast. Hence, the nickname Namanriya: the chameleon who rides slowly, slowly—enough to receive greetings from those on the roadside and to reciprocate with a wave or a beep.
I was also slow in another respect. During that year of fieldwork, four years into our marriage, my wife and I were still without children. Our friends pitied us. Though we had access to more financial resources than all the village households put together, we were the poor ones. Prayers went up in the mosque and the church, and offerings were laid for ancestors—all for us to receive the blessing of fertility we had clearly been denied.
Two years later, back in the US, we received that blessing, and named him as such—Baraka. Less than a year after that, we returned to Mozambique, to bring Baraka to our friends, to present them the fruit of their ritual labor.
In so doing, my identity changed, and with it my name. No longer Devaka, and only rarely now Namanriya, I had become Papá Baraka. In this part of the world, the measure of a person, certainly the measure of one's worth, is the quantity and quality of one's relationships. And just as relationships change—due to births and deaths, comings and goings—so too does oneself change.
Devaka discussing research findings with Makhuwa intellectuals and collaborators
This principle of relationality is, in part, why it was so important to return to my field site with my newborn child, but also with a Wenner-Gren Engaged Anthropology grant and its mandate to share the results of my initial field research with the communities that made it possible.
Over a five-week period in the summer of 2016, I was able to do just that, meeting with leading scholars in the nation's preeminent university, with research collaborators in the district where I worked, and with interlocutors in the village where I lived.
At each site, the response was immediately of appreciation and respect. Because knowledge, like identity, is grounded in relationships, people were less impressed with my ability to display an understanding of "the Makhuwa" than with my willingness to return and resume the conversations begun many years earlier.
From each of the groups, I learned something new about my research, or something in need of correcting. With each of the groups, I began thinking about how to approach my second planned project. And to each of the groups, I reflected insights I learned into Makhuwa ways of knowing and being.
Specifically, I shared my analysis of Makhuwa mobility—a propensity for movements both physical and imaginative, a predilection for making fresh starts in new places, an ease and comfort with novelty and change. One aim of the Engaged Anthropology grant is to disseminate research results in a way that offers some benefit to those among whom research was conducted. It's my hope that, by hearing an outsider articulate the tacit, practical knowledge with which the Makhuwa by and large live, those with whom I met will be even more equipped to cope with the significant constraints on physical movement they face in the context of neoliberal land confiscations and NGO-led development efforts.
This tacit, practical knowledge—the subject of my forthcoming book—is best described as a Makhuwa disposition toward mobility and change. It's what makes those I lived with eager to partake in resettlement schemes—whether of the developmental state or of religious institutions—but reluctant to remain settled in them. For the Makhuwa, changing is a means of enduring, becoming is a mode of being, and converting is a way of life.
By returning to my field site as the parent of a child, I learned that what's special about the Makhuwa is not only their capacity for regular transformations, but also their readiness to mark transformations in others, even in people like me prone to seeing themselves as consistent over time, as settled rather than shifting.
No longer Namanriya, my new name was Papá Baraka. My name had changed. I had changed. Maybe, after all, it was not just my slowness that warranted the nickname of chameleon. Maybe it was my capacity—a capacity I didn't think I had until the Makhuwa made me see it—to change and to adapt, and thereby truly to live.
NYAS Lecture 1/27: On the Infectious Affinities of Viruses, Plants, and Dying Human Bodies: Species' Shifting Boundaries and Uncertain Futures
Engaged Anthropology Grant: Julie Velasquez Runk
Engaged Anthropology Grant: Chelsie Yount-Andre
Wenner-Gren at AAA 2019: Schedule of Events
Symposium #160 Cultures of Fermentation
AAA Blog
Anthropomics
Committee on the Anthropology of Science, Technology, and Computing (CASTAC)
Cosmos & Culture (NPR)
Dig Deeper (Leakey Foundation)
John Hawks Weblog
Living Anthropologically
Neuroanthropology (PLoS)
Application Season
Current Anthropology
Engaged Anthropology Grant
How to Write a Grant Proposal
New York Academy of Sciences
Wadsworth Fellowships
Pro-Tactile American Sign Language – Welcome to the Oonaverse on Interview with Terra Edwards
Scott Koppel on Interview with Benjamin Jewell and "Filling the Vacuum with Gardens"
Devasish on Interview: Uddhav Rai of Tribhuvan University
brenden smith on November 1 Grant Deadline Extended to November 5
Daniel on Reality and Myth: A Symposium on Axel Wenner-Gren
Wenner-Gren Foundation for Anthropological Research, Inc.


Successful Search Engine Optimisation attempts to achieve the highest possible ranking position in the natural or organic listings of the search engine results pages (SERPS) for a range of targeted keywords or keyphrases entered into a search engine, such as Google or Bing by a search engine user.
Did you know that about 65% of searches are organic and 6% paid advertising (PPC)? Voodoo Agency believes being committed to your organic search engine optimisation strategy is still incredibly important. Google remains dominant, 70% of global searches are made using Google, so how effective are you at getting your website ranked on page one of the search engine for your targeted keywords?
At Voodoo Agency we understand that Click Through Rates (CTR) are higher the further you are up page one and you are three times more likely to get clicked on if your are in position one rather than position three.
As well as getting unique users to your site we concern ourselves with getting those leads to sales. We call this Conversion Rate Optimisation (CRO). CRO involves the customer journey from the visitor arriving on the site all the way through to the contact or sale. The aim is to identify the most efficient path to gain the greatest conversions for the least work.
Search engines use constantly changing rules to rank websites in terms of quality and relevance to the users search terms. By keeping up to date with research we try to stay on top of the technological and algorithm changes made by the dominant search engines. In doing so we hope to position your site on page one, ahead of your competitors.
So there you have it. At Voodoo Agency we know SEO like the back of our hand, we've been ranking clients sites successfully for over fifteen years. We understand the digital marketing steps to get results, from keyword research, competitor analysis, content writing, link building through to conversion tracking in Google Analytics. Most importantly we are committed to helping our clients get a Return On Investment (ROI) from SEO.


text:
Biden wins US elections: 'Dark chapter is over'
Democratic Party candidate and next US president Joe Biden on the campaign trail (Photo: Gage Skidmore)
By Andrew Rettman
Brussels, 7. Nov 2020, 18:12
Joe Biden has won US elections after taking the state of Pennsylvania, ending what some EU politicians have called the "nightmare" years of outgoing president Donald Trump.
The news broke shortly before 6PM Brussels time on Saturday (7 November) after four tense days of vote-counting.
Donald Trump supporter in his hallmark red cap (Photo: Jeff Cirillo)
Biden's triumph, in his home state on the east coast, meant he had 284 votes in the so-called Electoral College in which he needed 270 to secure victory.
He is also winning the popular vote, with 73 million ballots so far in his favour - the most-ever in US history in an election with the highest-ever turnout in 120 years.
The Democratic Party candidate is to become the 46th US president when his inauguration takes place, due on 20 January.
And his incoming vice-president, Kamala Harris, is to become the first-ever woman of colour to win such high office.
Biden has already pledged to reverse Trump's exit from the EU-backed Paris Agreement on climate change.
He is also expected to reconfirm the US commitment to Nato, which Trump put in doubt, and to be friendlier toward Europe on trade, as well as to restore America's allegiance to the liberal values espoused in the EU treaties.
"A very dark chapter in American history is over. Rejoice!", Michael McFaul, the former US ambassador to Russia, said in one of the first reactions.
"Whether you're on the left or right: moderation, integrity, seriousness and the mainstream are back," Britain's former finance minister, George Osborne, also said.
But doubt remains whether Trump will go gracefully, or whether he will try to challenge the result via law suits and recounts, or even by calling on his fans to cause civil unrest.
"I WON THIS ELECTION, BY A LOT!", Trump tweeted, moments before the Pennsylvania news broke.
He also claimed, earlier on Thursday, that Biden was guilty of fraud, without giving any evidence, in a speech widely condemned, including by his own Republican Party, as well as by leading EU politicians.
"Anyone who continues to pour oil on the fire in a situation like this is acting irresponsibly," German foreign minister Heiko Maas said on Friday.
Meanwhile, even if Trump concedes, Biden will inherit a deeply divided American polity and society, after Trump also won over 70 million votes overall - the second highest number in US records - meaning that Biden might be more busy trying to maintain internal stability than rebuilding the transatlantic partnership that his predecessor all-but destroyed.
"With the campaign over, it's time to put the anger and the harsh rhetoric behind us and come together as a nation," Biden said in a statement on Saturday.
"It's time for America to unite. And to heal," he added.
Biden on edge of victory, as EU fears post-election 'chaos'
Trump doing well in US election nail-biter
EU immediately endorses Biden, in 'unusual' move
Biden presidency no quick fix, just chance for EU to fix itself
Last chance for the West
The pro-European candidate, Joe Biden, is on the cusp of victory in US elections, with Germany leading attacks on Donald Trump's "awful" claims of voting fraud.
The anti-European president Donald Trump won Florida, a historical predictor of the overall outcome, but many swing states still too close to call on Wednesday morning.
EU leaders and officials have congratulated Joe Biden on his victory in US elections, in what looked like a coordinated effort to stop Trump challenging the result.
The scary thing about this election is, if Trump had even a minimum of political professionalism, if he had even tried to live up to the promises to the people who voted him into office, he might well have won.
In the coming weeks and months we will find out to what extent president-elect Joe Biden is willing to consider the transatlantic relationship as a vital US interest again, and put it at the heart of US policy.
EU should stop sheltering Syrian war criminals, MEPs say
15. Mar 2021, 07:12
The European Parliament has urged EU states to go after alleged Syrian war criminals in Europe, 10 years after the start of the bloodiest war in its neighbourhood.
Why Russia politics threaten European security
Russia could expand hostile operations, such as poisonings, including beyond its borders, if it feels an "existential" threat and there is no European pushback.
Ten years on from Tahrir: EU's massive missed opportunity
Investing in the Arab world, in a smart way, is also investing in the European Union's future itself. Let's hope that the disasters of the last decade help to shape the neighbourhood policy of the next 10 years.


Do you think Apple would fix a small crack im the screen i don't care what it cost?
Apple will fix it for $200 (4GB) or $250 (8GB). Plus $30 for a loaner, if you need one.
They simply charge their cost for a new phone, for any out of warranty repairs.
That way, they can either just give you a replacement, or pocket the extra money if it costs less.
Gotta love their businesss model.
my crack is not that big I think I could live with it for now. Not sure if that's a good idea.
if it is small don't worry about it imo (unless $250 is not a lot for you) This won't be the last and now you can give your self permission not to baby it.


text:
Here, comparing the Conservative Party's leadership race based on fear and division to the NDP's which looks set to bring a progressive coalition together.
For further reading...
- Bob Hepburn also notes that fear and hatred are the main themes emerging from the Cons' candidates so far. And while it's fair enough for Andrew Coyne to point out that there's room for the race to go in other directions, there's little evidence to suggest that will happen.
- Meanwhile, Ryan Maloney outlines the NDP's developing leadership contest in the wake of Peter Julian's announcement that he's stepping down as House leader to explore a campaign, while CBC's Pollcast discusses what's to come. Mohamed Omar points out Charlie Angus' work critiquing the Libs' failure to live up to their promises to First Nations. The NDP highlights Niki Ashton's national campaign to give precarious workers a voice here. Guy Caron's Huffington Post series on tax evasion can be found here. And Martin Regg Cohn discusses the prospective campaign of Jagmeet Singh.
Labels: andrew coyne, bob hepburn, charlie angus, columns, cons, guy caron, jagmeet singh, leadership 2017, ndp, niki ashton, peter julian
#yqrvotes - Election Day Resources


text:
Q: Find all parameters for for which the series is convergent - checking I'm not sure if my reasoning is good. Find all parameters $a$ for for which the series is convergent $\displaystyle \sum_{n=1}^{\infty}a^{w_n}$ where $\displaystyle  w_n=(\sqrt[n]{2}-1)^{(-1)}$
My try: First I show that $\displaystyle n< w_n$ it's equivalent to $n(\sqrt[n]{2}-1)<1$ but as $n$ goes to infinity we have $\displaystyle \lim_{n \to \infty}n(\sqrt[n]{2}-1)=\ln{2}<1$ so for sufficient large $n$ the inequality holds (here I'm not sure if it's legal to show this ineq)
next taking $|a| < 1$ and from our inequality we have $\displaystyle \sum_{n=1}^{\infty}a^{w_n} \le \sum_{n=1}^{\infty}a^n$ since $\displaystyle \sum_{n=1}^{\infty}a^n$ is here geometric series so it converge hence $\displaystyle \sum_{n=1}^{\infty}a^{w_n}$ must converge too. For $|a|\ge 1$ we show analogically that $\displaystyle \sum_{n=1}^{\infty}a^{w_n}$ diverge.
Is it proper thinkng?

A: Checking your reasoning for $a > 0$, it is correct that $\displaystyle \lim_{n \to \infty}n(\sqrt[n]{2}-1)=\ln{2}<1.$
Hence, for sufficiently large $n$,
$$(\sqrt[n]{2}-1)<n^{-1} \implies n < (\sqrt[n]{2}-1)^{-1}.$$
If $0 < a < 1$, we have $\ln a < 0$, and
$$n \ln a > (\sqrt[n]{2}-1)^{-1} \ln a \implies a^{(\sqrt[n]{2}-1)^{-1}} < a^n,$$
and the series converges, by comparison with the convergent geometric series.
On the other hand, if $a \geqslant 1$, then $\displaystyle a^{(\sqrt[n]{2}-1)^{-1}} > a^n,$ and the series diverges.
If $a < 0$, then $\displaystyle a^{w_n}$ is a complex number with modulus $\displaystyle |a^{w_n}| = |a|^{w_n},$ and the above argument caries through to show absolute convergence when $-1 < a < 0$. If $a < -1$ the ratio test shows that the series does not converge.
(You also can apply the ratio test in all cases.)

redpajama_set_name: RedPajamaStackExchange


Not a vast amount of news, since I've been buried in The Iron Jackal, but let me magic something up.
Am on, er, chapter 39 of about 46 now. Bombing through it. It'll probably be about the same length as The Black Lung Captain when I'm done – I may yet go back and cut out a chapter or two, which I'll save for the next book. That means we're all still looking good for an August release, as per Amazon. Speaking of Amazon, ignore the blurb they've put up. It's so far beyond wrong it's… well, I can't think of an accurate comparison, but it's pretty wrong. None of that stuff happens in the book.
After that I'll be back on Vendetta, which is the current working title for the movie-that-used-to-be-called All Fall Down.
Cover for The Iron Jackal and the revamped Braided Path coming very soon. The design dept is just tweaking font size and stuff like that. I'll post 'em up as soon as they're finished.
Cassandra Diaz is busy doing her artwork sorcery for Pandemonium – I probably won't get to see it till it's all done now, so it'll be a while. No movement on the Malice movie.
Also, it'll soon be Eastercon time again! It takes up the Easter weekend, and this year it's in Birmingham. I'll be there all day Friday and Saturday, I should think, and I may well be appearing on a panel or two – I'll know when the organisers get the schedule together. News when I have it, as ever.


First, I just want to thank you for the wonderful comments you've been sharing here, I love it! Each one makes me smile and I think, "wow, these are great people!"
Do you ever have so much going on or so many ideas in your head that you can't get them out fast enough? And maybe when they do come out they're jumbled?
I love having ideas, because let's face it, when they're not there, it feels really frustrating. Right now I'm working on how to process and execute these ideas and for some reason revisiting my AUGUST POLAROID PROJECT is helping me think.
I have new & ongoing projects running concurrently, balancing new work for the shop and galleries. Sometimes it seems like alot. And right now I'm happy to be busy, I'm not complaining. Every time I walk into my studio I think to myself "God, thank you for this place that I can come to and make things."
Thank you for letting me share my run-on process thinking here this morning. Is there anything you'd like to process/vent/figure out today?
ps. oh, sunprint paintings from yesterday's image are going in the shop.


text:
Q: Not getting the text from the success message div I have a div used for the success message. I want to get the text from that div. If i use element.gettext(); i am getting [] value, If I user element.getAttribute("value"); then I am getting [null] value. How to get the text?
here is the success message div

        Capability updated successfully.
        <button class="close" type="button" ngclick="RemoveSuccessMessage()">
        </button>

If i submit the form then i will get this message . My code to get the data is
String Actual= driver.findElement(By.xpath("//[@id='successMessageGrid']/div")).getAttribute("value");

OR
String Actual= driver.findElement(By.xpath("//[@id='successMessageGrid']/div")).getText();

A: You could try the below code:
String Actual= driver.findElement(By.xpath("//[@id='successMessageGrid']/div")).getAttribute("innerHTML");

A: /div[@id='successMessageGrid']//div

You can always use a site like this http://www.xpathtester.com/xpath to test your xpath expression first.

function getElementByXpath(path) { return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; }

console.log( getElementByXpath("//div[@id='successMessageGrid']//div").innerText );

        Capability updated successfully.
        <button class="close" type="button" ngclick="RemoveSuccessMessage()">
        </button>


Chiropractor Dr. Joseph Piasecki provides family chiropractic care and DOT physicals. Get a full evaluation of your health and let us determine what we can do for you with natural health care. Visit our website today to find out more!
The Spinal Rehabilitation Center of Lake Geneva offers multi-disciplinary care to help patients find the relief they need. Chiropractic, exercise rehab, and spinal decompression lead to powerful results. Pediatric care helps children get a healthy start in life. Free consultations. Insurance accepted. Saturday and emergency hours available. Call today!


text:
package net.automatalib.modelcheckers.ltsmin;

import org.testng.Assert;
import org.testng.annotations.Test;

/**
 * Test cases for the {@link LTSminVersion} class.
 *
 * @author frohme
 */
public class LTSminVersionTest {

    @Test
    public void testParse() {

        final String v300 = "v3.0.0";
        final String v300beta = "v3.0.0-beta1";
        final String v300broken = "v3.0broken.0";
        final String noV = "3.0.0";
        final String prefixV = "prefixv3.0.0";

        Assert.assertEquals(LTSminVersion.parse(v300), LTSminVersion.of(3, 0, 0));
        Assert.assertEquals(LTSminVersion.parse(v300beta), LTSminVersion.of(3, 0, 0));
        Assert.assertEquals(LTSminVersion.parse(v300broken), LTSminVersion.of(0, 0, 0));
        Assert.assertEquals(LTSminVersion.parse(noV), LTSminVersion.of(0, 0, 0));
        Assert.assertEquals(LTSminVersion.parse(prefixV), LTSminVersion.of(0, 0, 0));
    }

    @Test
    public void testSupports() {
        // major version
        Assert.assertTrue(LTSminVersion.of(3, 0, 0).supports(LTSminVersion.of(3, 0, 0)));
        Assert.assertTrue(LTSminVersion.of(4, 0, 0).supports(LTSminVersion.of(3, 0, 0)));
        Assert.assertFalse(LTSminVersion.of(2, 0, 0).supports(LTSminVersion.of(3, 0, 0)));

        // minor version
        Assert.assertTrue(LTSminVersion.of(3, 1, 0).supports(LTSminVersion.of(3, 1, 0)));
        Assert.assertTrue(LTSminVersion.of(3, 2, 0).supports(LTSminVersion.of(3, 1, 0)));
        Assert.assertFalse(LTSminVersion.of(3, 1, 0).supports(LTSminVersion.of(3, 2, 0)));

        // patch version
        Assert.assertTrue(LTSminVersion.of(3, 1, 0).supports(LTSminVersion.of(3, 1, 0)));
        Assert.assertTrue(LTSminVersion.of(3, 1, 1).supports(LTSminVersion.of(3, 1, 0)));
        Assert.assertFalse(LTSminVersion.of(3, 1, 0).supports(LTSminVersion.of(3, 1, 1)));
    }
}

redpajama_set_name: RedPajamaGithub


Social Media Marketing Course in Chandigarh: Today social media is playing a vital role in information transformation across numerous digital online social platforms. Accordingly, Solutions 1313 has initiated social media marketing training course for the candidates looking to expel their skills in the respective area.
Highly experienced and qualified faculty. They are forming a team of creative and innovative personalities to give you the best results in your social media marketing course.
Further, you will enjoy 100% practical work. It will nurture and embrace your potential skills along with your course commencement.
Free three days demo classes to give you a chance to probe the question why choose us.
Fully advanced and up to date study material and syllabus. It is specially designed as per the modern market needs.
Moreover, fee charges will be under your pocket reach. There are special discount offers too for the weaker students.
Fully AC and high-tech computer labs to give you the perfect learning experience in the institute.
An ISO certification on successful completion on the social media marketing course.
Similarly, we assure you with 100% job and career possibility.
From the business perspective, social media is proving to be a boon in marketing efforts. It has become the cheapest source to reach a diverse audience across the globe. Accordingly, we have designed our social media marketing course in Chandigarh under the excellent guidance of social media marketing experts and policymakers. They have indulged into the business for years having a brilliant stint for solutions 1313.
Moreover, as a top digital marketing institute in Chandigarh, we are working beyond the premises to deliver our trainees modern challenge-matching concepts and techniques. Further, our course program will render our candidates with full-fledged practical work starting from the basics to the advanced levels.
Similarly, our personalized team of social media marketing experts is the devotee of their profession. They have done an undeniable work for us. Further, they will exhort the candidates to flourish their talents in the digital marketing industry and mold a bright future in the industry. Never wait anymore, visit us today and join our advanced and job-oriented social media marketing course in Chandigarh.
In the modern age of the technical environment, internet users are increasing gradually with the passage of time. Today, almost every single person is having a Smartphone. They are using different kinds of social media platforms via either web browsers or mobile apps. Some of the most frequently used social media sites are Facebook, Twitter, Instagram, Whatsapp, Tumblr, Reddit, Snapchat, YouTube, LinkedIn, Pinterest and more. Correspondingly, our social media marketing course in Chandigarh will strongly focus on all these platforms.
These sites are facing thousands of sign-ups daily and people are sharing information on these platforms in the form of text, images, videos, documents, audios, presentations and others. Now ultimately it has given an opportunity to the business marketing policymakers to make a direct reach to their potential customers via these kinds of social media sites. They create social media accounts, publishing relevant alluring and pre-defined posts over different types of platforms as per their guidelines.
Now it will have been clear to you that how social media marketing can contribute to heighten up the business sales. Accordingly, solutions 1313 have designed a nice and well-prepared social media marketing course module. It incorporates the latest marketing techniques and study chapters that will give you the all-around skill development opportunities.


text:
Knicks Hire Frank Layden
February 3, 2000 / 6:53 PM / CBS/AP
Frank Layden, the father of New York general manager Scott Layden, was hired Thursday as a consultant for the Knicks.
Frank Layden, who won the NBA coach of the year and executive of the year awards before retiring from the Utah Jazz last year, will be involved in pre-draft scouting and will be an adviser to his son.
"I could not be happier about this announcement," Scott Layden said. "Adding Frank to a staff that already includes people such as Dick McGuire is invaluable to the Knicks organization."
Frank Layden was born in Brooklyn, N.Y., and was inducted into the New York City Basketball Hall of Fame in 1998.
First published on February 3, 2000 / 6:53 PM


This classic 2015 Golf For Sale In Calgary has a striking blue paint job. The interior is in exceptional condition, and looks new. DriveNation® has completed a 92 point inspection and the current mileage is approx 120,000 KMs.
Leap into this Golf and never want to get out, with leather seats you will be most comfortable. It's very nicely equipped with a backup camera and heated seats. Paired SiriusXM, and bluetooth.
Our Golf is dark blue in color and the paint is near perfect! The body has a sleek appearance, with an aggressive front end styling.
With it's 1.8L 4cyl paired with an 6 speed automatic transmission you will be able to hit all your point of interests without breaking the bank. Come and take it for a spin.?


text:
The Young & Rising
Advice & guidance for young professionals, by young professionals.
Advice and guidance from older family members, mentors, and otherwise is always good—especially for young professionals. But sometimes the advice and guidance of a peer is even more valuable. These people are growing up in the same generation, experiencing culture and the changes within it during the same time period, and often undergoing similar challenges at similar stages of life. Because of this, the advice and guidance of a peer is often more specific, easy to understand, applicable, and just all-around more helpful than that of someone older. Unfortunately, most articles at places like Forbes, Money Magazine, and the New York Times are by older professionals. Of course, there's nothing wrong with this. But it does make finding published content that's by and for young professionals a more difficult task. That's where The Young & Rising comes in.
The Young & Rising is a platform featuring advice and guidance for young and rising professionals, by young and rising professionals. We strive to be the meeting ground for lesser known voices and those who can benefit from the content these people provide.
"Advice and guidance from older family members, mentors, and otherwise is always good, especially for young professionals. But sometimes the advice and guidance of a peer is even more valuable."
Behind the idea
J.P. Pressley
J.P. Pressley had the idea for The Young & Rising during the late spring of 2019, after realizing there wasn't a website dedicated to showcasing the content of his fellow young professionals. As was indicated by the small yet informative blogs run by some of his friends and others, there was no lack of this content on the internet. But there was no place that featured this content exclusively. No one site people could visit to read specific peoples' work and discover that of others. Nor was there a platform for the numerous producers of this content to be featured and thus discovered regularly outside of their own websites. Hoping to help both producer and consumer, Pressley started creating The Young & Rising.
After a successful beta run in 2020, The Young & Rising is currently preparing for a 2023 expanded rollout. And we're beyond excited to looking forward to continue growing and benefiting young professionals from all walks of life.
To stay abreast of our articles and other news, subscribe to our newsletter! Interested in providing content for other young professionals? Reach out to us here!
Have a blessed day. 🙂
Don't worry, we'll only reach out when it's important. 🙂
Say It Like You Mean It!
The importance of knowing a little about everything
Do More Nothing
By Kristen Day / December 12, 2020
By Genesis Obando / September 17, 2020
By Kristen Day / August 1, 2020
Remember to Bring Yourself to the Interview
By Abigail Akyiaw / July 29, 2020
5 Life Lessons from the 2008 Scripps National Spelling Bee
By Kristen Day / June 22, 2020
What Happens to a Dream Deferred?
By J.P. Pressley / June 19, 2020
Copyright © The Young & Rising, 2021 All rights reserved. | Theme: Elegant Magazine by AF themes.


text:
February start for riverfront
By Olivia Duffey
The Deniliquin Riverfront Upgrade project is expected to start next month.
The project is intended to create a more accessible and inviting environment while raising the profile of the Edward River to tourists and locals alike.
Works will include upgrading the physical and visual connection between the river and the town centre.
The works will be completed by Deniliquin company B Green Constructions.
Edward River Council Mayor Norm Brennan said the timing has been coordinated to limit disruption to retail activity, parking and recreational activity on the river during the holiday period. He said the project may take up to five months to complete.
''The Edward River is a wonderful natural asset and already provides so much value for locals and visitors.
''As a council we want to build on these existing strengths and ensure that the river is as accessible and well presented as possible.
''The aim of the project is to improve the connection between the riverfront and the CBD, create additional reasons for tourists and people travelling through to stop and enjoy our town and to provide additional access points to the river.''
Highlights of the project include the upgrade of car parking and river access with a focus on the area behind Central IGA and the car park at the 'Ute on the Pole'.
A floating pontoon will be added on the river behind this area, and improved seating and resting areas will be installed between the Crossing Café and river.
There will also be a new ramp for pedestrians from the top of the bank down to the Beach to Beach Walk, sealing of the pathway along the top of the levee, an additional pathway connecting the levee pathway to George St, general landscaping and tree planting.
England quick Archer nears Test return
England paceman Jofra Archer could return for the final Test with South Africa with the bowler showing a "good rhythm" in training.
AAP Newswire
Handscomb denies Stars' complacency in BBL
With the BBL's top spot already locked away, the Stars have hit the staggers but it has nothing to do with dead-rubber complacency, says Peter Handscomb.
Mathews puts Sri Lanka in control in Test
Angelo Mathews has smashed an unbeaten 200 from 468 balls to put Sri Lanka firmly in command in the first Test with Zimbabwe in Harare.
Junior stars to be celebrated
Two young women who represent a bright future for the Murray River Council and wider region will be honoured at Australia Day ceremonies next week.
Olivia Duffey
$3.16 mil sale is a good sign
Friday's Store Sheep Sale in Deniliquin closed with total sales of more than $3.16 million. There were 18,000 head expected to be offered at the annual sale, with 17,122 sold by its end. Deniliquin Elders Rural Services livestock agent Jason...
Backyard birthday bash for Mitch's 21st
Mitch Jefferies marked his 21st birthday with a party at his parents' home in Deniliquin earlier this month. A total of 140 guests attended the night with some travelling from as far as Seymour, Melbourne, Geelong, Bendigo, Swan Hill, Cummins...
Deniliquin Pastoral Times


text:
Q: The number of abolute value on $\mathbb{Q}(\sqrt{2})$ Let $|.|$ be the usual absolute value on $\mathbb{Q}$.
The number of absolute value on $Q(\sqrt{2})$ extending |.| is 2
since $x^2-2=(x-\sqrt{2})(x+\sqrt{2})$ in $\mathbb{R}[x]$.
Let $\hat{Q(\sqrt{2})}_i , i=1,2$, be the corresponding completion of $Q(\sqrt{2})$ with extended absolute value $|.|_i$.
$(x-\sqrt{2})$ and $(x+\sqrt{2})$ are of degree 1 and then we have $\hat{Q(\sqrt{2})}_i=\mathbb{R}$,$i=1,2$.
Then $|.|_i=|.|$, $i=1,2,$ on $\mathbb{R}$. This implies the restricted absolute value of $|.|_i=|.|,i=1,2$ on $Q(\sqrt{2})$ are the same?! Why I obtain a contradiction? Which step I did wrong?

A: Mariano's comments say it all, but maybe it is helpful to see things more explicitly. Instead of $\mathbb{Q}(\sqrt 2)$, one should really write $K = \mathbb{Q}[x]/(x^2-2)$, and look at its elements as
$$a+bx$$
with $a,b \in \mathbb{Q}$ and the relation $x^2=2$ (which means $(a+bx)(c+dx) = (ac+2bd) + (ad+bc)x$.)
Now there are two injections $i_1, i_2: K \hookrightarrow \mathbb{R}$:
$$i_1(a+bx) = a+b\sqrt2$$
$$i_2(a+bx) = a-b\sqrt2.$$
$i_1$ induces the absolute value $$|a+bx|_1 = |a+b\sqrt2|,$$
 whereas $i_2$ induces the absolute value $$|a+bx|_2 = |a-b\sqrt2|.$$
Both completions $\hat{(K, |\cdot|_1)}$ and $\hat{(K, |\cdot|_2)}$ are indeed isomorphic to $\mathbb{R}$. More precisely, $i_1$ and $i_2$ extend to two different isomorphisms
$$f_1: \hat{(K, |\cdot|_1)} \simeq (\mathbb{R}, |\cdot|)$$
$$f_2: \hat{(K, |\cdot|_2)} \simeq (\mathbb{R}, |\cdot|);$$
the difference between them still basically being that
$$f_1(x) = \sqrt2$$
$$f_2(x) = -\sqrt2.$$
So in a way, it is true that each $f_i$ identifies its respective absolute value $|\cdot|_i$  with the usual absolute value on $\mathbb{R}$; but $f_1$ sends $x$ to $\sqrt2$, and $f_2$ sends it to $-\sqrt 2$.
In yet other words: It is true that the restriction of the absolute value on $\mathbb{R}$ to the subset $i_1(K) = i_2(K) \subset \mathbb{R}$ is the same; but $|\cdot|_1$, which is the pullback  of that restriction via $i_1$ to the abstract field $K$, is different from $|\cdot|_2$, the pullback of that restriction to $K$ via $i_2$.


POST YOUR FAV. PIC OF YOUR CAR!
Have you seen the homepage recently?
Obesity and skinny jeans/yoga pants/daisy dukes at work in a manufacturing environment, what are your thoughts?
Bought a new old car. Only 6 cylinders this time!
NICO T-Shirts: Inventory Updated 9/4/16!
Sealed the deal on a home!!!
New winter beater/rainy day car!
Nissan Chairman Carlos Ghosn Arrested & Fired!
Nissan stealerships switching to 0W-20 oil?
Dumb Q...How do I discern which motor my 95 Hardbody has?
Cheap or knockoff turbochargers - Discuss!


text:
Home » OP Headlines » OP Headlines: UCOP blood drive is a success
OP Headlines: UCOP blood drive is a success
February 19, 2010 • OP Headlines • 1 Comment
In the last ten years, the staff at UCOP's Franklin Street building have donated enough blood to save more than 6,000 lives. That's a pretty astounding figure – one that continues to grow. At a Feb. 25 blood drive sponsored by the American Red Cross, UCOP staff gave another 49 pints.
Link spoke with organizer Jan Kehoe, the Assistant Director of Operations in the Office of the Treasurer, about how she got involved in organizing the blood drives, and why it's so important to donate.
How did you start coordinating the drives?
My co-workers and I used to donate at the Kaiser Center, but when we moved to the Franklin Building, we learned there wasn't a blood drive taking place here. We knew plenty of people in Franklin would be interested in donating, so I contacted the Red Cross and UCOP's HR department, and got the OK to have our first Franklin Street blood drive. The first drive had 43 donors and 29 pints of blood were collected. Since then, we've held a drive five times a year.
Do you get any help?
I do all the contact work with the Red Cross and with EBMUD — we need approval to use their street curb —but other people help publicize the blood drives, including Karen Vecchi, Jesus Loo and Nina Costales.
Why is this work important to you?
I've embraced it because it's something so easy to do that can make such a difference for somebody. It doesn't cost anything to donate, except about an hour of your time. I once read something written by a young lady whose brother had a bad accident and needed a lot of blood during surgery. She was impressed that all the bags of blood were labeled: VOLUNTEER DONOR. Those donations helped to save his life.
How important are the donations?
Blood can't be manufactured – it can only come from generous donors. Thirty-eight percent of the population is eligible to donate but only eight percent of eligible donors do; and in the Bay Area that number is below five percent. According to the Red Cross, someone in the U.S. needs blood every two seconds, and more than 38,000 blood donations are needed every day. The Red Cross website is an excellent source of information on the need for blood.
How much blood have UCOP employees donated over the years?
UCOP employees have donated about 2,070 pints since 2000. The Red Cross says that each donation saves 3 lives, which means UCOP has helped save about 6,200 lives. That's an incredible number!
How long does it take to give blood?
I usually tell people to block off about an hour for the whole process. Sometimes it takes a little less time, sometimes a little longer. There's a health history that has to be done each time. And there's a mini-physical—they take your temperature, blood pressure, pulse, and test a little blood from your finger for iron content. It's actually a good thing for donors — you get your blood pressure taken on a regular basis!
The actual time it takes to fill the bag ranges from donor to donor— anywhere from five minutes to 20 minutes. After you give blood, you have to stay about 10 minutes to make sure you're OK before you leave. And of course, you get to eat cookies and drink juice while you're waiting.
Should staff sign up to give blood, or can they just show up at the bloodmobile? Appointments help the process flow better and help get donors in and out in an hour. We take two appointments every 15 minutes from 8:15 a.m. to 3:00 p.m. We're pretty successful at that, so we can't usually take walk-ins.
Do you have to work at UCOP to donate?
No. If staff have friends or family that work in the area, they are welcome to sign up also.
Does it hurt to donate blood?
It's true that it may sting a little, but if you compare it to the pain that the recipient goes through, the sting is bearable. Don't be afraid to donate: Knowing that you helped save lives will make up for the small needle prick.
Anything else you'd like to share?
We are always looking for new donors and the Red Cross is especially in need of more minority donors.
If you would like to donate, please contact me at Jan.Kehoe@UCOP.edu or 987-9692.
Upcoming Blood Drives:
Comment ( 1 )
Have Something To Say ?
Chris Orr March 3, 2010 Reply
What Jan Kehoe modestly neglects to mention when she says donors get to "eat cookies" is that she hand bakes dozens of cookies of all kinds for the donors and staff of the blood mobile to enjoy. Jan Kehoe is not only an excellent organizer of these successful blood drives, but she is an awesome baker. Lemon bars, chocolate chip, oatmeal-nut-raisin, snickerdoodles, fudge cookies, oh my!


How rich is Anders Poulsen? For this question we spent 11 hours on research (Wikipedia, Youtube, we read books in libraries, etc) to review the post.
:How tall is Anders Poulsen – 1,60m.
Anders H. Poulsen (born January 18, 1991) is a Danish ice hockey player. He is currently playing with the Herning Blue Fox of the Metal Ligaen.


text:
Liverpool stuck in worst scoring streak at Anfield in over 36 years
By admin	 On Feb 4, 2021
In November, Liverpool celebrated breaking the club's all-time unbeaten record in the league at Anfield.
The Reds comfortably beat top-flight Leicester 3-0 to make them 64 home games in the Premier League unbeaten, surpassing a record that had lasted almost 40 years.
Liverpool broke the club's unbeaten home league record in November | Pool / Getty Images
However, move forward just over two months and Jurgen Klopp's side are now in the middle of their worst home scoring streak since 1984.
It's an Orwellian nightmare… sort of.
After watching their unbeaten home run end in a 1-0 defeat to Burnley a fortnight ago, Liverpool lost to Brighton by the same score on Wednesday night.
The Reds' first Premier League home game of 2021 had been a stalemate against Manchester United, meaning they have now gone 384 minutes without a scoring at Anfield and failed to find the net in three straight games home Championship for the first time since October 1984 (via Opta).
1984 – Liverpool have failed to score in three consecutive home league games for the first time since October 1984, with the Reds' scoreless run at Anfield currently standing at 348 minutes. Private. pic.twitter.com/10UTHWSqfa
– OptaJoe (@OptaJoe) February 3, 2021
Liverpool would finish in second place in the top flight and the European Cup in the 1984/85 season.
Successive defeats to Brighton and Burnley mean the Reds have lost back-to-back Premier League games at home for the first time since May 2012, when Kenny Dalglish's side also suffered successive 1-0 defeats – this time to Les mighty West Brom and Fulham.
Jordan Henderson was the only player to feature in Liverpool's losses to Brighton in 2021 and Fulham in 2012.
Nine years ago he was joined in the Reds midfielder by Jay Spearing and Jonjo Shelvey, as Liverpool fielded a marginal XI ahead of the FA Cup final four days later.
Liverpool are scoreless at home in the Premier League in 2021 | Pool / Getty Images
The loss to Brighton was Liverpool's fourth league loss of the season – a stark contrast to their near-perfect campaigns of the previous two years.
Klopp's side have now lost as many 22 games in the 2020/21 season as they have in the entirety of the 2018/19 and 2019/20 campaigns combined.
Ex-teammate claims Kylian Mbappe 'really wants' to go to Real Madrid
Ajax mistakenly omitted Sebastien Haller from the Europa League squad


text:
Home / Health and Fitness / Social phobia: loneliness and fear
Social phobia: loneliness and fear
By Connell on February 17, 2016
If you feel a persistent and irrational to speak, write or eat in public fear; experiences a constant concern and fears that others will see it as a rare or foolish person, plus palpitations, tremors and sweating are likely to have social phobia.
Enrique suffers from social phobia, is a university professor and president of AMTAES, the Spanish Mutual Aid Association against Social Phobia and Anxiety Disorders. It has been created a year ago to present to society the existence of this problem and the need to introduce measures to prevent and specialized and free counseling.
Facilitate interpersonal relationships through face meetings of the partners, is another objective of AMTAES, which currently has 168 members, with self-help groups active in Barcelona, Bilbao, Santander, Badajoz, Seville, Valencia, Alicante, Zaragoza and La Coruña.
This is the first national association of mutual aid against social phobia, a disorder of anxiety that occurs between 3 and 13% of the world population, according to data handled by Enrique, who for pedagogical reasons rather not give her full name and an interview with EFE Health has chosen to do it by mail.
Associated manifest, above all, loneliness have long felt not knowing or understanding what happened to them, to an indifferent family and social environment that treats them as shy or rare people without considering the need for therapeutic help.
"Too often they feel a fear of the future, both for work, since many of them have difficulties in accessing the labor market, as in the affective domain by the lack of social relationships needed to launch a common project partner".
Questionnaires filled by the partners to register, there is a wide variety of cases, the most common: those who do not attend any therapy, undergoing treatment with anxiolytic and antidepressants, those who practice alternative therapies or relaxation psychoanalysis and those who are treated with currently seems more effective cognitive-behavioral therapy.
In all cases, social phobia involves serious difficulties in carrying out normal activities in the current, such as talking on the phone, attending a meeting, eating in public, going to a party organization…
The degree of inhibition at these social activities is what determines the intensity of social phobia, which in severe cases resulting in complete isolation from the environment and almost impossible to leave the house (extreme social phobia) and associated symptoms such as depression.
The causes of social phobia are unclear
According to Henry, the causes converges genetic factors, physiological nature, family and social interaction, without having so far established a clear prediction:
"It is very common to find a history of shyness or social inhibition in childhood, so prevention work from childhood to detect future problems of social phobia would primordial. But adolescence is a critical period because each person will be subjected to an evaluation process by the other members of their peer group and will have to establish their role and place in a different social system family.
However, social phobia can appear suddenly after a stressful or humiliating experience; however, more often than social phobia develops more slowly in response to various types of experiences. "
Some risk factors
Overprotective, demanding little or nothing loving parents, who do not support their children inhibited, using shame and "what will they think" as educational and disciplinary techniques, and even show negative attitude.
Lack of social experience and social skills, caused by factors such as inhibiting social relationships education (education is facilitated if a parent has an anxiety disorder or social anxiety disorder), isolating the child (provided by temperamental factors), isolation from family (favored by psychiatric problems in either parent).
Negative experiences in social situations (ridicule, contempt, ridicule, rejection, exclusion, intimidation, punishment and even panic attacks) which are interact with temperament and personality variables. These experiences can occur with different people (parents, teachers, peers) and in different situations and stages of life; childhood and adolescence may be especially important in this case.
Light at end of tunnel
"Those who suffer from social phobia are able to do many things, but the anxiety level is so high that you end up isolating yourself because it is unbearable."
Paul, 34, a university graduate and employed for many years, has had the courage to access a telephone interview with us to tell their experience. Remember that small was very shy and just past puberty was aware that something was wrong.
This school day he lived like hell, "It was unbearable, a drama every day," but only went to the doctor when he was finishing his university studies by the "brutal fear" I had to speak in public and socialize with others.
"You find yourself very lonely, you get stuck and get very nervous and others may even think you're a bully."
A new medication, taking since last December has made him seeing light at the end of the tunnel. Now get feel calmer in the nearest circles: some friends (always male) with his mother and brother, "whom he did not even looked them in the eye".
Paul continues to feel anxiety, but more lively.
At the current upswing, it has also contributed AMTAES the constitution, because it allowed him to meet with other people who also suffer from the same disease, and share with them their experiences.
The author is an expert on occupational training and a prolific writer who writes extensively on Business, technology, and education. He can be contacted for professional advice in matters related with occupation and training on his blog Communal Business and Your Business Magazine.
Related ItemsanxietyfearlonelinesspsychologySocial phobia
← Previous Story The 5 best raw food to wear a flat stomach
Next Story → Preventive acupuncture for the change of season
Loneliness increase by 30% the risk of heart disease
Connell | June 18, 2019
How to Establish a Healthy Lifestyle in College
Connell | May 3, 2017
GoPro and its new camera allow you to record in 360 degrees
Connell | November 5, 2016
Chicken Tabaka
Donald | June 28, 2019
Breeding Quail At Home- Detailed Instruction
Connell | February 9, 2016
Window shopping is also a trend that extends LAN
Donald | May 29, 2019
Caring For Laminate In The Apartment
Connell says:
I love reading these articles because they're...
By Connell
College students are under a lot of pressure to keep their grades up and most of them also have part-time jobs to manage as well. When you add staying...
GoPro is a company that is responsible for producing and selling high definition cameras, its main purpose is to take photographs or recordings in extreme sports. These cameras are...
Today, many citizens seek to change the vain and rather noisy living in apartments in high-rise buildings for a quiet measured life in a private house. The new place...
Gastritis In Children: Symptoms And Treatment
How To Teach A Cat To The Toilet?
Tips best How Business Home Healthy Google most new useful cat dog Health simple Good apple life improve 10 pet Care food hair Interior nutrition habits make eat Ten Amazon reasons Top Eating Pets children professional Drinks Advice Exercise Things
Copyright © 2016 Hot Topix Theme. Theme by MVP Themes, powered by Wordpress.
Law and Orders


text:
Brunsiarchaediscus es un género de foraminífero bentónico, normalmente considerado un subgénero de Archaediscus, es decir Archaediscus (Brunsiarchaediscus), pero aceptado como sinónimo posterior de Nudarchaediscus de la subfamilia Archaediscinae, de la familia Archaediscidae, de la superfamilia Archaediscoidea, del suborden Fusulinina y del orden Fusulinida. Su especie tipo era Propermodiscus contiguus. Su rango cronoestratigráfico abarcaba desde el Tournasiense hasta el Viseense (Carbonífero inferior).

Discusión
Algunas clasificaciones más recientes incluyen Brunsiarchaediscus en el Suborden Archaediscina, del Orden Archaediscida, de la Subclase Afusulinana y de la Clase Fusulinata.

Clasificación
Brunsiarchaediscus incluía a la siguiente especie:

 ''Brunsiarchaediscus contiguus'' †

Bibliografía

Géneros de Archaediscida
Géneros de Fusulinida
Géneros de foraminíferos bentónicos

redpajama_set_name: RedPajamaWikipedia