text:
<?php

namespace Illuminate\Tests\Integration\Database\EloquentBelongsToManyTest;

use Illuminate\Support\Carbon;
use Orchestra\Testbench\TestCase;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Relations\Pivot;

/**
 * @group integration
 */
class EloquentBelongsToManyTest extends TestCase
{
    protected function getEnvironmentSetUp($app)
    {
        $app['config']->set('app.debug', 'true');

        $app['config']->set('database.default', 'testbench');

        $app['config']->set('database.connections.testbench', [
            'driver' => 'sqlite',
            'database' => ':memory:',
            'prefix' => '',
        ]);
    }

    public function setUp()
    {
        parent::setUp();

        Schema::create('posts', function ($table) {
            $table->increments('id');
            $table->string('title');
            $table->timestamps();
        });

        Schema::create('tags', function ($table) {
            $table->increments('id');
            $table->string('name');
            $table->timestamps();
        });

        Schema::create('posts_tags', function ($table) {
            $table->integer('post_id');
            $table->integer('tag_id');
            $table->string('flag')->default('');
            $table->timestamps();
        });

        Carbon::setTestNow(null);
    }

    /**
     * @test
     */
    public function basic_create_and_retrieve()
    {
        Carbon::setTestNow(
            Carbon::createFromFormat('Y-m-d H:i:s', '2017-10-10 10:10:10')
        );

        $post = Post::create(['title' => str_random()]);

        $tag = Tag::create(['name' => str_random()]);
        $tag2 = Tag::create(['name' => str_random()]);
        $tag3 = Tag::create(['name' => str_random()]);

        $post->tags()->sync([
            $tag->id => ['flag' => 'taylor'],
            $tag2->id => ['flag' => ''],
            $tag3->id => ['flag' => 'exclude'],
        ]);

        // Tags with flag = exclude should be excluded
        $this->assertCount(2, $post->tags);
        $this->assertInstanceOf(Collection::class, $post->tags);
        $this->assertEquals($tag->name, $post->tags[0]->name);
        $this->assertEquals($tag2->name, $post->tags[1]->name);

        // Testing on the pivot model
        $this->assertInstanceOf(Pivot::class, $post->tags[0]->pivot);
        $this->assertEquals($post->id, $post->tags[0]->pivot->post_id);
        $this->assertEquals('post_id', $post->tags[0]->pivot->getForeignKey());
        $this->assertEquals('tag_id', $post->tags[0]->pivot->getOtherKey());
        $this->assertEquals('posts_tags', $post->tags[0]->pivot->getTable());
        $this->assertEquals(
            [
                'post_id' => '1', 'tag_id' => '1', 'flag' => 'taylor',
                'created_at' => '2017-10-10 10:10:10', 'updated_at' => '2017-10-10 10:10:10',
            ],
            $post->tags[0]->pivot->toArray()
        );
    }

    /**
     * @test
     */
    public function custom_pivot_class()
    {
        Carbon::setTestNow(
            Carbon::createFromFormat('Y-m-d H:i:s', '2017-10-10 10:10:10')
        );

        $post = Post::create(['title' => str_random()]);

        $tag = TagWithCustomPivot::create(['name' => str_random()]);

        $post->tagsWithCustomPivot()->attach($tag->id);

        $post->tagsWithCustomAccessor()->attach($tag->id);

        $this->assertInstanceOf(CustomPivot::class, $post->tagsWithCustomPivot[0]->pivot);

        $this->assertEquals([
            'post_id' => '1',
            'tag_id' => '1',
        ], $post->tagsWithCustomAccessor[0]->tag->toArray());
    }

    /**
     * @test
     */
    public function attach_method()
    {
        $post = Post::create(['title' => str_random()]);

        $tag = Tag::create(['name' => str_random()]);
        $tag2 = Tag::create(['name' => str_random()]);
        $tag3 = Tag::create(['name' => str_random()]);
        $tag4 = Tag::create(['name' => str_random()]);
        $tag5 = Tag::create(['name' => str_random()]);
        $tag6 = Tag::create(['name' => str_random()]);
        $tag7 = Tag::create(['name' => str_random()]);
        $tag8 = Tag::create(['name' => str_random()]);

        $post->tags()->attach($tag->id);
        $this->assertEquals($tag->name, $post->tags[0]->name);
        $this->assertNotNull($post->tags[0]->pivot->created_at);

        $post->tags()->attach($tag2->id, ['flag' => 'taylor']);
        $post->load('tags');
        $this->assertEquals($tag2->name, $post->tags[1]->name);
        $this->assertEquals('taylor', $post->tags[1]->pivot->flag);

        $post->tags()->attach([$tag3->id, $tag4->id]);
        $post->load('tags');
        $this->assertEquals($tag3->name, $post->tags[2]->name);
        $this->assertEquals($tag4->name, $post->tags[3]->name);

        $post->tags()->attach([$tag5->id => ['flag' => 'mohamed'], $tag6->id => ['flag' => 'adam']]);
        $post->load('tags');
        $this->assertEquals($tag5->name, $post->tags[4]->name);
        $this->assertEquals('mohamed', $post->tags[4]->pivot->flag);
        $this->assertEquals($tag6->name, $post->tags[5]->name);
        $this->assertEquals('adam', $post->tags[5]->pivot->flag);

        $post->tags()->attach(new Collection([$tag7, $tag8]));
        $post->load('tags');
        $this->assertEquals($tag7->name, $post->tags[6]->name);
        $this->assertEquals($tag8->name, $post->tags[7]->name);
    }

    /**
     * @test
     */
    public function detach_method()
    {
        $post = Post::create(['title' => str_random()]);

        $tag = Tag::create(['name' => str_random()]);
        $tag2 = Tag::create(['name' => str_random()]);
        $tag3 = Tag::create(['name' => str_random()]);
        $tag4 = Tag::create(['name' => str_random()]);
        $tag5 = Tag::create(['name' => str_random()]);
        $tag6 = Tag::create(['name' => str_random()]);
        $tag7 = Tag::create(['name' => str_random()]);

        $post->tags()->attach(Tag::all());

        $this->assertEquals(Tag::pluck('name'), $post->tags->pluck('name'));

        $post->tags()->detach($tag->id);
        $post->load('tags');
        $this->assertEquals(
            Tag::whereNotIn('id', [$tag->id])->pluck('name'),
            $post->tags->pluck('name')
        );

        $post->tags()->detach([$tag2->id, $tag3->id]);
        $post->load('tags');
        $this->assertEquals(
            Tag::whereNotIn('id', [$tag->id, $tag2->id, $tag3->id])->pluck('name'),
            $post->tags->pluck('name')
        );

        $post->tags()->detach(new Collection([$tag4, $tag5]));
        $post->load('tags');
        $this->assertEquals(
            Tag::whereNotIn('id', [$tag->id, $tag2->id, $tag3->id, $tag4->id, $tag5->id])->pluck('name'),
            $post->tags->pluck('name')
        );

        $this->assertCount(2, $post->tags);
        $post->tags()->detach();
        $post->load('tags');
        $this->assertCount(0, $post->tags);
    }

    /**
     * @test
     */
    public function first_method()
    {
        $post = Post::create(['title' => str_random()]);

        $tag = Tag::create(['name' => str_random()]);

        $post->tags()->attach(Tag::all());

        $this->assertEquals($tag->name, $post->tags()->first()->name);
    }

    /**
     * @test
     * @expectedException \Illuminate\Database\Eloquent\ModelNotFoundException
     */
    public function firstOrFail_method()
    {
        $post = Post::create(['title' => str_random()]);

        $post->tags()->firstOrFail(['id' => 10]);
    }

    /**
     * @test
     */
    public function find_method()
    {
        $post = Post::create(['title' => str_random()]);

        $tag = Tag::create(['name' => str_random()]);
        $tag2 = Tag::create(['name' => str_random()]);

        $post->tags()->attach(Tag::all());

        $this->assertEquals($tag2->name, $post->tags()->find($tag2->id)->name);
        $this->assertCount(2, $post->tags()->findMany([$tag->id, $tag2->id]));
    }

    /**
     * @test
     * @expectedException \Illuminate\Database\Eloquent\ModelNotFoundException
     */
    public function findOrFail_method()
    {
        $post = Post::create(['title' => str_random()]);

        $tag = Tag::create(['name' => str_random()]);

        $post->tags()->attach(Tag::all());

        $post->tags()->findOrFail(10);
    }

    /**
     * @test
     */
    public function findOrNew_method()
    {
        $post = Post::create(['title' => str_random()]);

        $tag = Tag::create(['name' => str_random()]);

        $post->tags()->attach(Tag::all());

        $this->assertEquals($tag->id, $post->tags()->findOrNew($tag->id)->id);

        $this->assertNull($post->tags()->findOrNew('asd')->id);
        $this->assertInstanceOf(Tag::class, $post->tags()->findOrNew('asd'));
    }

    /**
     * @test
     */
    public function firstOrNew_method()
    {
        $post = Post::create(['title' => str_random()]);

        $tag = Tag::create(['name' => str_random()]);

        $post->tags()->attach(Tag::all());

        $this->assertEquals($tag->id, $post->tags()->firstOrNew(['id' => $tag->id])->id);

        $this->assertNull($post->tags()->firstOrNew(['id' => 'asd'])->id);
        $this->assertInstanceOf(Tag::class, $post->tags()->firstOrNew(['id' => 'asd']));
    }

    /**
     * @test
     */
    public function firstOrCreate_method()
    {
        $post = Post::create(['title' => str_random()]);

        $tag = Tag::create(['name' => str_random()]);

        $post->tags()->attach(Tag::all());

        $this->assertEquals($tag->id, $post->tags()->firstOrCreate(['name' => $tag->name])->id);

        $new = $post->tags()->firstOrCreate(['name' => 'wavez']);
        $this->assertEquals('wavez', $new->name);
        $this->assertNotNull($new->id);
    }

    /**
     * @test
     */
    public function updateOrCreate_method()
    {
        $post = Post::create(['title' => str_random()]);

        $tag = Tag::create(['name' => str_random()]);

        $post->tags()->attach(Tag::all());

        $post->tags()->updateOrCreate(['id' => $tag->id], ['name' => 'wavez']);
        $this->assertEquals('wavez', $tag->fresh()->name);

        $post->tags()->updateOrCreate(['id' => 'asd'], ['name' => 'dives']);
        $this->assertNotNull($post->tags()->whereName('dives')->first());
    }

    /**
     * @test
     */
    public function sync_method()
    {
        $post = Post::create(['title' => str_random()]);

        $tag = Tag::create(['name' => str_random()]);
        $tag2 = Tag::create(['name' => str_random()]);
        $tag3 = Tag::create(['name' => str_random()]);
        $tag4 = Tag::create(['name' => str_random()]);

        $post->tags()->sync([$tag->id, $tag2->id]);

        $this->assertEquals(
            Tag::whereIn('id', [$tag->id, $tag2->id])->pluck('name'),
            $post->load('tags')->tags->pluck('name')
        );

        $output = $post->tags()->sync([$tag->id, $tag3->id, $tag4->id]);

        $this->assertEquals(
            Tag::whereIn('id', [$tag->id, $tag3->id, $tag4->id])->pluck('name'),
            $post->load('tags')->tags->pluck('name')
        );

        $this->assertEquals([
            'attached' => [$tag3->id, $tag4->id],
            'detached' => [1 => $tag2->id],
            'updated' => [],
        ], $output);

        $post->tags()->sync([]);
        $this->assertEmpty($post->load('tags')->tags);

        $post->tags()->sync([
            $tag->id => ['flag' => 'taylor'],
            $tag2->id => ['flag' => 'mohamed'],
        ]);
        $post->load('tags');
        $this->assertEquals($tag->name, $post->tags[0]->name);
        $this->assertEquals('taylor', $post->tags[0]->pivot->flag);
        $this->assertEquals($tag2->name, $post->tags[1]->name);
        $this->assertEquals('mohamed', $post->tags[1]->pivot->flag);
    }

    /**
     * @test
     */
    public function syncWithoutDetaching_method()
    {
        $post = Post::create(['title' => str_random()]);

        $tag = Tag::create(['name' => str_random()]);
        $tag2 = Tag::create(['name' => str_random()]);

        $post->tags()->sync([$tag->id]);

        $this->assertEquals(
            Tag::whereIn('id', [$tag->id])->pluck('name'),
            $post->load('tags')->tags->pluck('name')
        );

        $post->tags()->syncWithoutDetaching([$tag2->id]);

        $this->assertEquals(
            Tag::whereIn('id', [$tag->id, $tag2->id])->pluck('name'),
            $post->load('tags')->tags->pluck('name')
        );
    }

    /**
     * @test
     */
    public function toggle_method()
    {
        $post = Post::create(['title' => str_random()]);

        $tag = Tag::create(['name' => str_random()]);
        $tag2 = Tag::create(['name' => str_random()]);

        $post->tags()->toggle([$tag->id]);

        $this->assertEquals(
            Tag::whereIn('id', [$tag->id])->pluck('name'),
            $post->load('tags')->tags->pluck('name')
        );

        $post->tags()->toggle([$tag2->id, $tag->id]);

        $this->assertEquals(
            Tag::whereIn('id', [$tag2->id])->pluck('name'),
            $post->load('tags')->tags->pluck('name')
        );

        $post->tags()->toggle([$tag2->id, $tag->id => ['flag' => 'taylor']]);
        $post->load('tags');
        $this->assertEquals(
            Tag::whereIn('id', [$tag->id])->pluck('name'),
            $post->tags->pluck('name')
        );
        $this->assertEquals('taylor', $post->tags[0]->pivot->flag);
    }

    /**
     * @test
     */
    public function touching_parent()
    {
        $post = Post::create(['title' => str_random()]);

        $tag = TouchingTag::create(['name' => str_random()]);

        $post->touchingTags()->attach([$tag->id]);

        $this->assertNotEquals('2017-10-10 10:10:10', $post->fresh()->updated_at->toDateTimeString());

        Carbon::setTestNow(
            Carbon::createFromFormat('Y-m-d H:i:s', '2017-10-10 10:10:10')
        );

        $tag->update(['name' => $tag->name]);
        $this->assertNotEquals('2017-10-10 10:10:10', $post->fresh()->updated_at->toDateTimeString());

        $tag->update(['name' => str_random()]);
        $this->assertEquals('2017-10-10 10:10:10', $post->fresh()->updated_at->toDateTimeString());
    }

    /**
     * @test
     */
    public function touching_related_models_on_sync()
    {
        $tag = TouchingTag::create(['name' => str_random()]);

        $post = Post::create(['title' => str_random()]);

        $this->assertNotEquals('2017-10-10 10:10:10', $post->fresh()->updated_at->toDateTimeString());
        $this->assertNotEquals('2017-10-10 10:10:10', $tag->fresh()->updated_at->toDateTimeString());

        Carbon::setTestNow(
            Carbon::createFromFormat('Y-m-d H:i:s', '2017-10-10 10:10:10')
        );

        $tag->posts()->sync([$post->id]);

        $this->assertEquals('2017-10-10 10:10:10', $post->fresh()->updated_at->toDateTimeString());
        $this->assertEquals('2017-10-10 10:10:10', $tag->fresh()->updated_at->toDateTimeString());
    }

    /**
     * @test
     */
    public function no_touching_happens_if_not_configured()
    {
        $tag = Tag::create(['name' => str_random()]);

        $post = Post::create(['title' => str_random()]);

        $this->assertNotEquals('2017-10-10 10:10:10', $post->fresh()->updated_at->toDateTimeString());
        $this->assertNotEquals('2017-10-10 10:10:10', $tag->fresh()->updated_at->toDateTimeString());

        Carbon::setTestNow(
            Carbon::createFromFormat('Y-m-d H:i:s', '2017-10-10 10:10:10')
        );

        $tag->posts()->sync([$post->id]);

        $this->assertNotEquals('2017-10-10 10:10:10', $post->fresh()->updated_at->toDateTimeString());
        $this->assertNotEquals('2017-10-10 10:10:10', $tag->fresh()->updated_at->toDateTimeString());
    }

    /**
     * @test
     */
    public function can_retrieve_related_ids()
    {
        $post = Post::create(['title' => str_random()]);

        DB::table('tags')->insert([
            ['id' => 200, 'name' => 'excluded'],
            ['id' => 300, 'name' => str_random()],
        ]);

        DB::table('posts_tags')->insert([
            ['post_id' => $post->id, 'tag_id' => 200, 'flag' => ''],
            ['post_id' => $post->id, 'tag_id' => 300, 'flag' => 'exclude'],
            ['post_id' => $post->id, 'tag_id' => 400, 'flag' => ''],
        ]);

        $this->assertEquals([200, 400], $post->tags()->allRelatedIds()->toArray());
    }

    /**
     * @test
     */
    public function can_touch_related_models()
    {
        $post = Post::create(['title' => str_random()]);

        DB::table('tags')->insert([
            ['id' => 200, 'name' => str_random()],
            ['id' => 300, 'name' => str_random()],
        ]);

        DB::table('posts_tags')->insert([
            ['post_id' => $post->id, 'tag_id' => 200, 'flag' => ''],
            ['post_id' => $post->id, 'tag_id' => 300, 'flag' => 'exclude'],
            ['post_id' => $post->id, 'tag_id' => 400, 'flag' => ''],
        ]);

        Carbon::setTestNow(
            Carbon::createFromFormat('Y-m-d H:i:s', '2017-10-10 10:10:10')
        );

        $post->tags()->touch();

        foreach ($post->tags()->pluck('tags.updated_at') as $date) {
            $this->assertEquals('2017-10-10 10:10:10', $date);
        }

        $this->assertNotEquals('2017-10-10 10:10:10', Tag::find(300)->updated_at);
    }
}

class Post extends Model
{
    public $table = 'posts';
    public $timestamps = true;
    protected $guarded = ['id'];
    protected $touches = ['touchingTags'];

    public function tags()
    {
        return $this->belongsToMany(Tag::class, 'posts_tags', 'post_id', 'tag_id')
            ->withPivot('flag')
            ->withTimestamps()
            ->wherePivot('flag', '<>', 'exclude');
    }

    public function touchingTags()
    {
        return $this->belongsToMany(TouchingTag::class, 'posts_tags', 'post_id', 'tag_id')
            ->withTimestamps();
    }

    public function tagsWithCustomPivot()
    {
        return $this->belongsToMany(TagWithCustomPivot::class, 'posts_tags', 'post_id', 'tag_id')
            ->using(CustomPivot::class)
            ->withTimestamps();
    }

    public function tagsWithCustomAccessor()
    {
        return $this->belongsToMany(TagWithCustomPivot::class, 'posts_tags', 'post_id', 'tag_id')
            ->using(CustomPivot::class)
            ->as('tag');
    }
}

class Tag extends Model
{
    public $table = 'tags';
    public $timestamps = true;
    protected $guarded = ['id'];

    public function posts()
    {
        return $this->belongsToMany(Post::class, 'posts_tags', 'tag_id', 'post_id');
    }
}

class TouchingTag extends Model
{
    public $table = 'tags';
    public $timestamps = true;
    protected $guarded = ['id'];
    protected $touches = ['posts'];

    public function posts()
    {
        return $this->belongsToMany(Post::class, 'posts_tags', 'tag_id', 'post_id');
    }
}

class TagWithCustomPivot extends Model
{
    public $table = 'tags';
    public $timestamps = true;
    protected $guarded = ['id'];

    public function posts()
    {
        return $this->belongsToMany(Post::class, 'posts_tags', 'tag_id', 'post_id');
    }
}

class CustomPivot extends Pivot
{
}


The head of the republic Aisen Nikolaev congratulated Vladimir Oschepkov on his assignment to this senior diplomatic position.
Vladimir Oschepkov graduated from the Yakut State University, then completed his studies at the Diplomatic Academy in Moscow. For more than 20 years he has been working in the system of the Ministry of Foreign Affairs.
The Soviet consulate in Harbin ceased work more than 60 years ago, now it will again open its doors to the Russians and residents of China.
At present, the Consular Affairs Division of the Russian Embassy in Beijing and the Russian Consulate General in Hong Kong, Guangzhou, Shanghai and Shenyang are operating in China.


text:
I spent a day taking photos with the iPhone XS Max — and it's hard not to be impressed with what this thing can do
Avery Hartmans
Avery Hartmans/Business Insider
Last weekend, I spent a pretty magical day in Central Park.
The weather was beautiful — sunny and crisp — and the leaves had almost fully turned, making it one of the best times to experience Central Park's foliage. I had no plan for the day, other than wandering around the park and getting some fresh air. (Oh, and catching a glimpse of the park's famed Mandarin duck.)
It seemed like the perfect excuse to test the camera on the smartphone I'm using right now: Apple's new iPhone XS Max. Apple touted the camera's new features during its big September event, and it's expected to be excellent.
I didn't put the phone through its paces or do a scientific camera test. But what I found still surprised me. I expected it to be a great camera, but I was also expecting to be unimpressed by portrait mode, which has never quite been perfect, and by the colors, which sometimes look too warm for my taste.
But it turns out that the camera really is that good. Take a look.
(It's worth noting that photos may appear slightly compressed because of a bug with Business Insider's website — we're working on it!)
Here's the lake at Central Park. The phone captured the fall colors well, and overall, it's pretty sharp — check out those people in a rowboat on the left.
I was impressed by how the phone performed in the shade.
It was a nice sunny day when I captured this photo, but we were walking underneath a canopy of trees, and it wasn't particularly bright on this path. Still, I was impressed by how the XS Max performed.
I love the colors in this photo — bright, inviting, and warm. And though I tend to find iPhone photos too sepia-tinged on the past few phones, I felt that the colors here looked very true to life.
Time for a little portrait mode. In the past, I haven't been wildly impressed by the iPhone's portrait mode. But here, it blew me away.
I've always been a little underwhelmed by portrait mode on the iPhone. It often has strange quirks and flaws, like cutting off someone's hair or blurring a finger or two.
But with the iPhone XS Max, Apple's improvements made the feature very impressive.
Not only are the colors beautiful, but the background blur looks amazing. The camera only really struggled when it came to his glasses, but figuring out how to handle a pair of clear lenses is, understandably, difficult.
Usually, hair is a little tricky for the phone's technology to cut around, but in this case, it's nearly flawless.
I can't imagine that portrait mode will ever be in the same league as a real camera, and I generally prefer portrait mode on Google's Pixel phones. But if this photo is any indication, the iPhone's portrait-mode feature has come a long way.
Here's a pretty idyllic shot, captured later in the afternoon. Though the sun was getting lower in the sky and casting a lot of shadows, the camera performed well.
I was impressed with how much detail was captured in the shadows. The leaves in the foreground are defined, and you can even make out a few faces even though it wasn't very bright outside.
Apple said action shots would be better on the iPhone XS, and in this case, I have to agree. The horse wasn't moving very fast, but the camera still nicely captured the moment without any blur.
This isn't the best photo in the world — thanks to the Instagrammers in the background — but I wanted to share this golden-hour shot solely for the colors. Look at them!
It doesn't hurt that this photo was captured at the most beautiful time of day in the most beautiful place in New York City. Nonetheless, I was bowled over by the colors here.
The leaves in the upper-right corner are super vibrant, and all the leaves around his feet are orange-y and gorgeous. Even the red sweater of the woman in the background looks bright and warm.
If you're planning to capture photos of fall foliage, you're going to want to do it with the iPhone XS.
At the end of the day, I was able to find the Mandarin duck — which was also the perfect excuse to test the camera's optical zoom.
The iPhone XS has 2X optical zoom and 10X digital zoom. Optical zoom is generally considered superior to digital zoom, because it works just like a regular zoom lens on a camera, meaning it retains more quality and helps your photos look less pixelated or blurry.
This worked great when I was trying to capture a photo of the famous duck swimming around the pond at Central Park. I got as close as I could, but looking at the photo above, you'd think I was only a few feet away.
I don't use zoom very often, but if I needed to zoom in a bit to capture a nice photo, I'd trust the iPhone XS to do it well.
SEE ALSO: The 6 biggest differences you need to know about when switching from an older iPhone to the iPhone XS Max
More: Features Apple iPhone Xs Max Portrait mode
Smartphones cameras
iPhone camera

redpajama_set_name: RedPajamaCommonCrawl


text:
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "components/favicon/core/history_ui_favicon_request_handler_impl.h"

#include <utility>

#include "base/bind.h"
#include "base/callback_helpers.h"
#include "base/metrics/histogram_functions.h"
#include "base/metrics/histogram_macros.h"
#include "components/favicon/core/favicon_service.h"
#include "components/favicon/core/large_icon_service.h"
#include "components/favicon_base/favicon_types.h"
#include "components/favicon_base/favicon_util.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "ui/gfx/image/image_png_rep.h"

namespace favicon {

namespace {

void RecordFaviconAvailabilityAndLatencyMetric(
    HistoryUiFaviconRequestOrigin origin_for_uma,
    base::Time request_start_time_for_uma,
    FaviconAvailability availability) {
  base::TimeDelta latency = base::Time::Now() - request_start_time_for_uma;
  switch (origin_for_uma) {
    case HistoryUiFaviconRequestOrigin::kHistory:
      UMA_HISTOGRAM_ENUMERATION("Sync.SyncedHistoryFaviconAvailability.HISTORY",
                                availability);
      UMA_HISTOGRAM_TIMES("Sync.SyncedHistoryFaviconLatency.HISTORY", latency);
      break;
    case HistoryUiFaviconRequestOrigin::kHistorySyncedTabs:
      UMA_HISTOGRAM_ENUMERATION(
          "Sync.SyncedHistoryFaviconAvailability.SYNCED_TABS", availability);
      UMA_HISTOGRAM_TIMES("Sync.SyncedHistoryFaviconLatency.SYNCED_TABS",
                          latency);
      break;
    case HistoryUiFaviconRequestOrigin::kRecentTabs:
      UMA_HISTOGRAM_ENUMERATION(
          "Sync.SyncedHistoryFaviconAvailability.RECENTLY_CLOSED_TABS",
          availability);
      UMA_HISTOGRAM_TIMES(
          "Sync.SyncedHistoryFaviconLatency.RECENTLY_CLOSED_TABS", latency);
      break;
  }
}

// Parameter used for local bitmap queries by page url. The url is an origin,
// and it may not have had a favicon associated with it. A trickier case is when
// it only has domain-scoped cookies, but visitors are redirected to HTTPS on
// visiting. It defaults to a HTTP scheme, but the favicon will be associated
// with the HTTPS URL and hence won't be found if we include the scheme in the
// lookup. Set |fallback_to_host|=true so the favicon database will fall back to
// matching only the hostname to have the best chance of finding a favicon.
// TODO(victorvianna): Consider passing this as a parameter in the API.
const bool kFallbackToHost = true;

// Parameter used for local bitmap queries by page url.
favicon_base::IconTypeSet GetIconTypesForLocalQuery() {
  return {favicon_base::IconType::kFavicon, favicon_base::IconType::kTouchIcon,
          favicon_base::IconType::kTouchPrecomposedIcon,
          favicon_base::IconType::kWebManifestIcon};
}

}  // namespace

HistoryUiFaviconRequestHandlerImpl::HistoryUiFaviconRequestHandlerImpl(
    const CanSendHistoryDataGetter& can_send_history_data_getter,
    FaviconService* favicon_service,
    LargeIconService* large_icon_service)
    : favicon_service_(favicon_service),
      large_icon_service_(large_icon_service),
      can_send_history_data_getter_(can_send_history_data_getter) {
  DCHECK(favicon_service);
  DCHECK(large_icon_service);
}

HistoryUiFaviconRequestHandlerImpl::~HistoryUiFaviconRequestHandlerImpl() {}

void HistoryUiFaviconRequestHandlerImpl::GetRawFaviconForPageURL(
    const GURL& page_url,
    int desired_size_in_pixel,
    favicon_base::FaviconRawBitmapCallback callback,
    HistoryUiFaviconRequestOrigin request_origin_for_uma) {
  // First attempt to find the icon locally.
  favicon_service_->GetRawFaviconForPageURL(
      page_url, GetIconTypesForLocalQuery(), desired_size_in_pixel,
      kFallbackToHost,
      base::BindOnce(
          &HistoryUiFaviconRequestHandlerImpl::OnBitmapLocalDataAvailable,
          weak_ptr_factory_.GetWeakPtr(), page_url, desired_size_in_pixel,
          /*response_callback=*/std::move(callback), request_origin_for_uma,
          base::Time::Now()),
      &cancelable_task_tracker_);
}

void HistoryUiFaviconRequestHandlerImpl::GetFaviconImageForPageURL(
    const GURL& page_url,
    favicon_base::FaviconImageCallback callback,
    HistoryUiFaviconRequestOrigin request_origin_for_uma) {
  // First attempt to find the icon locally.
  favicon_service_->GetFaviconImageForPageURL(
      page_url,
      base::BindOnce(
          &HistoryUiFaviconRequestHandlerImpl::OnImageLocalDataAvailable,
          weak_ptr_factory_.GetWeakPtr(), page_url,
          /*response_callback=*/std::move(callback), request_origin_for_uma,
          base::Time::Now()),
      &cancelable_task_tracker_);
}

void HistoryUiFaviconRequestHandlerImpl::OnBitmapLocalDataAvailable(
    const GURL& page_url,
    int desired_size_in_pixel,
    favicon_base::FaviconRawBitmapCallback response_callback,
    HistoryUiFaviconRequestOrigin origin_for_uma,
    base::Time request_start_time_for_uma,
    const favicon_base::FaviconRawBitmapResult& bitmap_result) {
  if (bitmap_result.is_valid()) {
    // The icon comes from local storage now even though it may have been
    // originally retrieved from Google server.
    RecordFaviconAvailabilityAndLatencyMetric(origin_for_uma,
                                              request_start_time_for_uma,
                                              FaviconAvailability::kLocal);
    large_icon_service_->TouchIconFromGoogleServer(bitmap_result.icon_url);
    std::move(response_callback).Run(bitmap_result);
    return;
  }

  if (can_send_history_data_getter_.Run()) {
    // TODO(victorvianna): Avoid using AdaptCallbackForRepeating.
    base::RepeatingCallback<void(const favicon_base::FaviconRawBitmapResult&)>
        repeating_response_callback =
            base::AdaptCallbackForRepeating(std::move(response_callback));
    RequestFromGoogleServer(
        page_url,
        /*empty_response_callback=*/
        base::BindOnce(repeating_response_callback,
                       favicon_base::FaviconRawBitmapResult()),
        /*local_lookup_callback=*/
        base::BindOnce(
            base::IgnoreResult(&FaviconService::GetRawFaviconForPageURL),
            // base::Unretained() is safe here as RequestFromGoogleServer()
            // doesn't execute the callback if |this| is deleted.
            base::Unretained(favicon_service_), page_url,
            GetIconTypesForLocalQuery(), desired_size_in_pixel, kFallbackToHost,
            repeating_response_callback, &cancelable_task_tracker_),
        origin_for_uma, request_start_time_for_uma);
    return;
  }

  // Send empty response.
  RecordFaviconAvailabilityAndLatencyMetric(origin_for_uma,
                                            request_start_time_for_uma,
                                            FaviconAvailability::kNotAvailable);
  std::move(response_callback).Run(favicon_base::FaviconRawBitmapResult());
}

void HistoryUiFaviconRequestHandlerImpl::OnImageLocalDataAvailable(
    const GURL& page_url,
    favicon_base::FaviconImageCallback response_callback,
    HistoryUiFaviconRequestOrigin origin_for_uma,
    base::Time request_start_time_for_uma,
    const favicon_base::FaviconImageResult& image_result) {
  if (!image_result.image.IsEmpty()) {
    // The icon comes from local storage now even though it may have been
    // originally retrieved from Google server.
    RecordFaviconAvailabilityAndLatencyMetric(origin_for_uma,
                                              request_start_time_for_uma,
                                              FaviconAvailability::kLocal);
    large_icon_service_->TouchIconFromGoogleServer(image_result.icon_url);
    std::move(response_callback).Run(image_result);
    return;
  }

  if (can_send_history_data_getter_.Run()) {
    // TODO(victorvianna): Avoid using AdaptCallbackForRepeating.
    base::RepeatingCallback<void(const favicon_base::FaviconImageResult&)>
        repeating_response_callback =
            base::AdaptCallbackForRepeating(std::move(response_callback));
    // We use CreateForDesktop because GetFaviconImageForPageURL is only called
    // by desktop.
    RequestFromGoogleServer(
        page_url,
        /*empty_response_callback=*/
        base::BindOnce(repeating_response_callback,
                       favicon_base::FaviconImageResult()),
        /*local_lookup_callback=*/
        base::BindOnce(
            base::IgnoreResult(&FaviconService::GetFaviconImageForPageURL),
            // base::Unretained() is safe here as RequestFromGoogleServer()
            // doesn't execture the callback if |this| is deleted.
            base::Unretained(favicon_service_), page_url,
            repeating_response_callback, &cancelable_task_tracker_),
        origin_for_uma, request_start_time_for_uma);
    return;
  }

  // Send empty response.
  RecordFaviconAvailabilityAndLatencyMetric(origin_for_uma,
                                            request_start_time_for_uma,
                                            FaviconAvailability::kNotAvailable);
  std::move(response_callback).Run(favicon_base::FaviconImageResult());
}

void HistoryUiFaviconRequestHandlerImpl::RequestFromGoogleServer(
    const GURL& page_url,
    base::OnceClosure empty_response_callback,
    base::OnceClosure local_lookup_callback,
    HistoryUiFaviconRequestOrigin origin_for_uma,
    base::Time request_start_time_for_uma) {
  net::NetworkTrafficAnnotationTag traffic_annotation =
      net::DefineNetworkTrafficAnnotation(
          "history_ui_favicon_request_handler_get_favicon",
          R"(
      semantics {
        sender: "Favicon Request Handler"
        description:
          "Sends a request to Google favicon server to rerieve the favicon "
          "bitmap for an entry in the history UI or the recent tabs menu UI."
        trigger:
          "The user visits chrome://history, chrome://history/syncedTabs or "
          "uses the Recent Tabs menu. A request can be sent if Chrome does not "
          "have a favicon for a particular page url. Only happens if history "
          "sync (with no custom passphrase) is enabled."
        data: "Page URL and desired icon size."
        destination: GOOGLE_OWNED_SERVICE
      }
      policy {
        cookies_allowed: NO
        setting:
          "You can disable this by toggling Sync and Google services > Manage "
          "sync > History"
        chrome_policy {
            SyncDisabled {
              policy_options {mode: MANDATORY}
              SyncDisabled: true
            }
          }
      })");
  large_icon_service_
      ->GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache(
          page_url,
          /*may_page_url_be_private=*/true, /*should_trim_url_path=*/false,
          traffic_annotation,
          base::BindOnce(
              &HistoryUiFaviconRequestHandlerImpl::OnGoogleServerDataAvailable,
              weak_ptr_factory_.GetWeakPtr(),
              std::move(empty_response_callback),
              std::move(local_lookup_callback), origin_for_uma,
              request_start_time_for_uma));
}

void HistoryUiFaviconRequestHandlerImpl::OnGoogleServerDataAvailable(
    base::OnceClosure empty_response_callback,
    base::OnceClosure local_lookup_callback,
    HistoryUiFaviconRequestOrigin origin_for_uma,
    base::Time request_start_time_for_uma,
    favicon_base::GoogleFaviconServerRequestStatus status) {
  // When parallel requests return the same icon url, we get FAILURE_ON_WRITE,
  // since we're trying to write repeated values to the DB. Or if a write
  // operation to that icon url was already completed, we may get status
  // FAILURE_ICON_EXISTS_IN_DB. In both cases we're able to subsequently
  // retrieve the icon from local storage.
  if (status == favicon_base::GoogleFaviconServerRequestStatus::SUCCESS ||
      status ==
          favicon_base::GoogleFaviconServerRequestStatus::FAILURE_ON_WRITE ||
      status == favicon_base::GoogleFaviconServerRequestStatus::
                    FAILURE_ICON_EXISTS_IN_DB) {
    // We record the metrics as kLocal since the icon will be subsequently
    // retrieved from local storage.
    RecordFaviconAvailabilityAndLatencyMetric(origin_for_uma,
                                              request_start_time_for_uma,
                                              FaviconAvailability::kLocal);
    std::move(local_lookup_callback).Run();
  } else {
    RecordFaviconAvailabilityAndLatencyMetric(
        origin_for_uma, request_start_time_for_uma,
        FaviconAvailability::kNotAvailable);
    std::move(empty_response_callback).Run();
  }
}

}  // namespace favicon

redpajama_set_name: RedPajamaGithub


As a result of a lawsuit filed against the owners of 2ST BAG in a District Court of the United States of America, the Court ruled against the online bag shop for selling replica Chanel handbags. The Court also ordered that 2ST BAG be shut down. For genuine CHANEL, visit the official CHANEL website at www.CHANEL.com.
CHANEL has made it a top priority to halt replica bag sales.
Internet shopping, auction sites and any other sites are being continuously monitored and addressed by CHANEL. As necessary and appropriate, legal action is initated, including but not limited to both civil lawsuits and criminal complaints against identified replica sellers.
Those considering the purchase of replica bags are strongly urged to recognize that buying handbag replicas supports criminal activity, and secondly, to refuse to participate in the buying and wearing of knockoff handbags.
Replica bag sellers are alerted to note that CHANEL is being kept apprised of replica activities online, and additionally, to refrain from pursuing such illegal activities. Legal action is being taken where deemed appropriate.


Color information hex a3fa9a: RGB percentage, decimal and hexa, CMYK, HSL proportion, color gradient, tints, shades, tons, palettes color and other inspirations!
The color hexa a3fa9a is equivalent in RGB decimal 163, 250, 154 is 163 of red, 250 of green and 154 of blue. It can also be represented by the HSL (hue, saturation and lightness) parameters, which are 0.318 of hue (31), 0.906 of saturation (90) and 0.792 of lightness (79).


It was a magnificent night and when the moon set in the early hours of the morning, the sky above us was ablaze with a million stars. It made you reluctant to go to sleep. It was a lovely morning that greeted us with the only thing rising earlier than us being the flies. You have to be up early to beat these little bludgers. It didn't take long to coax the fire back into action and whilst Cam prepared a bed of coals for the jaffles, we enjoyed cereal and coffee. There is a strange ceremony that takes place on an Olsen camping trip. It's looked forward to with eager enthusiasm and takes place with the campfire of the first morning. It was with almost religious reverence that we opened the tin of Kraft Braised Steak and Onion. Boy didn't we, and the flies, love it!. There's nothing quite like it. That subtle blend of herbs spices onions and minced offal lovingly blended and tinned especially for the Olsen brothers to prepare the sacred breakfast jaffle. Life doesn't get better than this, unless of course someone could get rid of all the flies.
It took no time to pack away the camp, clean up and bury the fire then it was back on the track to Parachilna. The countryside was again picturesque and a delight to drive through. As we reached the Main Parachilna Road and traveled back through the Parachilna Gorge, I couldn't help but feel sorry for all those people who had camped so close to their neighbours and couldn't enjoy a peaceful spot such as our site of the previous night.
Once clear of the ranges and traversing the plains west, we gained an excellent view of the Ranges and Wilpena in the early morning light. Today brought only a slight breeze so the air was clear and the view, sensational. At Parachilna it was back on the bitumen and north to Leigh Creek some 65 kilometres away.Leigh Creek is a modern town and so it should be having been built in 1978. The original town was built beside the open cut coalfield whose end product is used to generate the majority of South Australia's electricity. The original town, which grew to support the mine in 1944, was destroyed to get to the coal deposits beneath. The town nowdays supports a population of 2000 and has a small compact shopping centre. In preparation for our assault on the Strzelecki, we invested in a 25-litre jerry can, a new map and a funnel. We also topped off our water supply at the rainwater tanks provided in the shopping centre. We decided to approach the local police with the hope of gaining valuable information concerning the condition of the Strzelecki and Oodnadatta Tracks but the amusing sign on the door of the Police Station said "ON PATROL – BACK THURSDAY". What a job.
34 kilometres north of Leigh Creek, the bitumen abruptly stops at Lydhurst. A pub, a shop and a 'T' intersection is all Lyndhurst consists of. Northwards is the Oodnadatta Track to Marree, where you choices double.Birdsville or Oodnadatta! Equally depressing options really. Our journey of discovery was to take us more north east along the Strzelecki Track to Innaminka and the Cooper Creek. Hoping to gain some information about the impending road conditions, I went to the local (only) shop and asked the lady owner. News was good, or not so good depending on which way you looked at it. She informed me that the road had been closed for the past two weeks due to rain and had not really seen much traffic in the past two moths due to the inclemency of the weather. Really, who ever heard of a desert suffering too heavier rains? This very day was the first day in which the track had been open to vehicles other than four wheel drives. They had been able to use the track for the past two days only. Hence the good or bad theory. Good :- No one has used the track therefore it'll be in top condition. Bad:- It'll still be wet, muddy, cut up by heavy traffic and we'll be stranded. The reality was a devilish mixture of both.
Named after Polish Count Paul Edmund de Strzelecki, the 'highway' from Lyndhurst in the south to Innamincka and beyond in the north used to be one of the driest and loneliest tracks to transport mobs of fat cattle to the Adelaide market. More than hundred years ago it was Captain Starlight, of Robbery under Arms fame, who gave the track notoriety. In 1870 Henry Arthur Readford, better known as Harry Redford, or Starlight, drove a thousand head of stolen cattle from Queensland, down the Barcoo and Cooper past Mount Hopeless, to Blanchwater where he sold them for $10,000. When finally apprehended in 1872, the now folk hero and his two accomplices were found not guilty. One of the first mobs of cattle to be walked down was in 1877, taking about ten weeks. The Strzelecki Track was last used by drovers during the 1930s. Today the track is used mainly by large trucks who carry supplies for the small population of the inland stations or cattle back the south. Most of the other traffic is destined for Moomba, South Australia's main gas producer which supplies Adelaide and Sydney. It now also attracts tourists who like to see some of the wonders of outback South Australia such as the Cooper Creek or the Bourke and Wills " Dig" Tree in Queensland.
The first 80 kilometres were a pleasant surprise. The road surface was in excellent condition as it arrowed north across the flat arid plain. Vegetation was sparse and little wonder after the rocky ground had been sun and wind blasted for a million years. The only breaks in the otherwise endless plain were the occasional fence and cattle ramp and the even rarer creek crossings. One of these shallow sandy beds became the site for our lunch break. The creeks are often the only places that support trees in the area so they are well frequented by both the native wildlife and livestock alike. Bores often dot their side, the windmills creaking and rattling as they turn in the gentle breeze. The water they pump from the artesian basin below is the only thing that permits life in these areas. One such windmill near our place of rest pumped water to a large tank nearby. As a result, the trees were alive with local birds such as finches who cannot fly to far from water as their daily need of same is so high. Lunch itself consisted of dried biscuits with Ham, cheese and tomato. The thermos provided coffee and Rebecca's chocolate chip muffins, a suitable accompaniment. While quietly enjoying the ambience of lunch and the flies, a convoy of five 4 x 4's tore through the creek heading hell for leather north . It had been the only traffic we'd seen since Leigh Creek and was likely to remain that way.
Continuing onwards, it wasn't long before the country side changed from arid plain to dunes and wind blown hummocks. You got the feeling that the road was somewhat "Lower". An effect probably caused by the gentle decline from the height of the previous plain. The change in landscape also heralded a noticeable deterioration in the road condition also. The road surface changed from a gravel to clay and sand and as a result had been severely affected by the passing rains and traffic. The track was cut up terribly by the wheels of trucks and four wheel drives who had tried to negotiate the conditions during the wet. The result were ruts often 30 centimetres high or more. At times it appeared as if a convoy of tanks had been through the place. Our poor Magna, loaded to the hilt as she was, soon had the floor pan scrapping the tops of the hard dry mud. It wasn't a pleasing sound to the ear as she dragged herself groaning across the largest of them. As a consequence, our speed dropped significantly, sometimes to walking pace or slower. This continued for some hours, each of us wishing we had either a four-wheel drive or at the very least, an extra five centimeters of clearance beneath the car. Thankfully the conditions improved for the last 80 kilometres from Moomba through to Innamincka.
It's amazing just how the countryside changes over a distance of several hundred kilometres. Your average person might think it's all the same desert but we'd moved from the endless horizon of sweeping arid plains, to a moonscape of wind blasted hummocks and finally high rolling dunes that seem to roll on for ever north westerly. The dunes have been formed over millennia as the deep red sand has been blown into ridges by the prevailing winds. The dunes are then stabilized by the invading shrub and plant life that settle on them. They are often between 15 and 20 metres high and run continuously parallel lines separated by shallow swales (inter-dune valleys) of 100 metres width or more. Over the last 200 klicks the road followed the course of the swales between the dunes, crossing the sandy ridges when the opportunity arose. The amount of rain that had fallen in the preceding weeks became obvious as large roadside clay pans were often inundated with water. It was an unreal sensation to see so much water lying about in an area that is easily one of the worlds most arid and dry places.
The Moomba gas fields are passed some 80 kilometres short of Innamincka. Rising out of the surrounding dunes, the stainless steel of the refinery plant looks alien and out of place. A stark contrast to the pristine desolation of the desert. The road is crossed by numerous tracks that provide access to strangely named and numbered gas wells. To the unwary, a sign with "Moomba 167" can cause a bit of a fright. How in the hell did we get that far off track? Thankfully it only denotes one of the hundreds of wells that tap the vast reserves of natural gas beneath the desert. The gas drawn from beneath the sands is then piped to Moomba for processing before being sent the several thousand kilometres to Sydney and Adelaide via the buried gas main (gas from the area accounts for 80 per cent of South Australia's electricity requirements).
As one would expect, the road between the Moomba works and the only hotel within a thousand-kilometre radius, is extremely well maintained. A veritable gravel 'super highway' compared to the previous 300 kilos. About 40 klicks north of Moomba the one major unmarked intersection had a whole swag of Schoolies bamboozled. We were amused to see about five vehicles and their occupants having a roadside meeting. There were maps spread on vehicle bonnets, consultation with Vehicular Mounted Global Positioning Systems and much head scratching. They should have done what we true bushies do. Follow the bloody signs!
It was getting late in the afternoon when our journey bought us to yet another vista. From the top of the plain, we were presented with a view across an ancient shallow valley. In the distance could be seen several small pyramid like hills. In the bottom of the narrow depression a line of trees snaked their way from east to west marking the course of the Cooper. A reflection of the setting sunlight upon a tin roof became a shimmering beacon guiding us to civilization.Innamincka. It was time to wash the dust from our throats.
Innamincka shares with Birdsville, the reputation as one of the countries most remote and isolated outposts. Innamincka had its origin in the failed attempt by Burke and Wills to return to Melbourne after having crossed the continent from south to north. In 1862 the government set an area aside near present day Innamincka for an Aboriginal mission station. However due to a lack of finance this was never established. Although still going, the town never had a population exceeding thirty people. It is a tiny outback settlement with literally nothing more than a general store, a pub, some fuel pumps, the ruins of the old Royal Flying Doctor Base (which was closed down in 1951and later re built in 1995 courtesy of the generosity of the Australian Geographic Society) and an airstrip in the dry, flat wasteland that is the Strzelecki Desert. To the north lies the vast Innamincka Station which was established in1872, once owned by the cattle baron Sidney Kidman, and covers 13 817sq km while to the south is Gidgealpa Station covering 4 900 sq km. The Innamincka area was first explored by Europeans when Charles Sturt came through the area in 1845. Sturt was followed by the hapless Burke and Wills who reached the area in 1861.
Robert O'Hara Burke, a police officer, led an expedition from Melbourne in 1860 with the object of crossing the continent from south to north. W.J.Wills became second in command. These courageous explorers, accompanied by two members of the expedition, King and Gray, made a dash for the Gulf of Carpentaria from a depot they had established at Cooper's Creek in South Australia. Burke and Wills proceeded ahead of the others and succeeded in reaching the estuary of the Flinders River on the Gulf of Carpentaria. Tragedy marked the return journey. Gray died of exhaustion. The other three, weakened by severe privations, struggled back to Cooper's Creek only to find that in the cruelest irony of the whole ill-fated expedition, the depot party had left only seven hours before their arrival. The party under William Brahe had remained there six weeks longer than they had been ordered to stay and with many of his men now so sick as to be incapable or walking, Brahe buried a cache of supplies beneath a large tree and departed. Burke and Wills died of starvation after three months by the Cooper and King who was cared for by friendly natives was rescued by a relief party some five months later.
There are a number of important Burke and Wills sites in the area to which we had hoped to make pilgrimage. About 25km west of the town is Wills grave, and some 54 km east is the famous 'Dig' tree where supplies were left for the explorers. All of these were to be denied to us because of the flooding of the many creeks and annabranches feeding into the Cooper.
The town, if it could ever be called a town, came into existence in 1882 with the establishment of a police camp. This was enough to start a small settlement and by 1886 there was a general store and a hotel. The movement of cattle and sheep along the Cooper Creek ensured that the settlement prospered. In 1890 the town was gazetted as Hopetoun. It was named after the Governor of Victoria, the Earl of Hopetoun. The official name was so disliked by the locals that it lasted only a month before they insisted upon a change. The original name of Innamincka, after which the nearby station had been named, persisted.
The 1970s saw renewed interest in the ghost town. Vast underground gas fields were discovered in the area and saw the construction of the Moomba gas refinery and the arrival of the ubiquitous 4WD and associated large numbers of people wanting to explore the outback, saw the construction of a series of new buildings to cater for people moving through the area.
The town as it stands today can be summed up in about 15 seconds. It isn't hard to get a grasp of the pub, store and old hospital. I can't help but describe a certain feeling of achievement as our dusty wagon cruised past the 10 or so mud encrusted four by fours lined up outside the hotel. Yes folks, this was school holiday time all right. We were informed at the general store that we wouldn't be going east or west from Innamincka as the channel country was well and truly flooded. Four wheelers only. At least a cold beer was possible and relieved the parched throat. Petrol was an incredible 98 cents per litre ($4.40 a gallon for those older non-metric persons). Well you don't have a lot of choice in supplier really. Our next task was to find a decent campsite along the creek. It was a little crowded for our liking but beggars can't be choosers. We set up on the banks of the Cooper in the shade of a times wizened gum. There was a good flow of murky water in the creek and the evening air was riven by the screeching of many cockatoos returning to the creek to drink and nest in the surrounding trees.
Dinner was prepared on the trusty stove once again. I had decided that it was time to cook the sausages as another day in the esky and I felt they would be walking off of their own accord. They were however, very enjoyable. It was a muggy evening and the mozzies had us liberally applying the insect repellant. After the meal, we enjoyed a stroll up to the hotel for a quiet drink before retiring. I was once again copping a bit of flak for a display of "Unmanly" behaviour in setting up my tent. Bloody clever I thought.
It was a warm night with a gentle breeze, a clear sky, a full moon and stars galore. It was only punctuated by the nocturnal stirrings of desert animals and the cries of "THESE %#@*#*% MOSQUITOS!".


When choosing the Herman sectional or sofa you buy more than an exquisite piece made in Italy. It is a work of art in leather, with adjustable lift headrests, and impeccable tailoring. Come in and experience the feel of luxury. Available in several leather styles and finish options by special order.


TCP International Holdings Ltd. today announced that K.R. "Kaj" den Daas will assume the role of Chief Executive Officer replacing Ellis Yan. Mr. Yan remains Chairman of the TCP Board of Directors and will support Mr. den Daas as he transitions into his new role.
Mr. den Daas has significant experience in the lighting industry serving in various capacities at Royal Philips between 1977 and 2010. This includes most recently being Chairman of Philips Lighting North America and Chief Executive Officer, Business Unit Professional Luminaires, North America for Philips.
During his tenure with Philips Lighting North America, Mr. den Daas was responsible for manufacturing, R&D, distribution, commercial and all other business functions of Philips Lighting in the United States, Canada and Mexico. Under his leadership, Philips became the largest lighting company in North America.
Currently based in the Netherlands, Mr. den Daas serves on a number of boards including private equity, venture capital and public companies within the lighting and related industries, including Valmont Industries Inc.
For more information, visit http://www.tcpi.com.


text:
Meet the 19-Year-Old Ready to Rule North Shore High School in Mean Girls on Broadway
People Are Saying the Exact Things About Billie Eilish's Body She Hoped Baggy Clothes Would Hide
9 Things Your Vaginal Discharge Might Be Trying to Tell You
Zendaya's Newly Dyed Red Hair Could Be an Important Nod to a "Spider-Man" Character
Gigi Hadid Responds to Body Shamers
"It's called growing up."
NEW YORK, NY - JULY 26: Model Gigi Hadid is seen walking in Soho on July 26, 2016 in New York City. (Photo by Raymond Hall/GC Images)GC Images
Everyone's body is different, and everyone's body changes as they grow up. As she leaves her teen years behind for her early 20s, Gigi Hadid's body is a little different than when she exploded into the modeling scene a few years ago. Some people are shaming Gigi for those natural changes, accusing her of purposefully changing her body to better fit in the modeling industry, but Gigi isn't having any of it.
Gigi took to social media to set the record straight, letting her fans and her haters know that she loves her body — both how it is and how it was.
"It's called growing up," Gigi said. "Bodies change as girls become women, just as my moms body changed at the same age. Having my body judged over the span of the 4 teen-to-woman years has really shown me the human tendency to label and make uneducated judgment. Meanwhile.. I loved my body as a 17 year old athlete and I love my body now."
https://twitter.com/GigiHadidsNews/status/765041984859844609
Gigi explains that her body when she was 17 was super fit from all her volleyball practice, but she had softer curves and features because, well, she was a teenager. Now that she's in her 20s, Gigi has shed that "baby fat" just because she grew up.
"Yes, I've lost some 'baby fat', but muscle mass from my intensive volleyball training in high school has changed over the years into lean muscle from boxing, and work stress can have its affect, naturally," Gigi said, "but purposefully changing my body has never been my thing."
Models definitely face pressure to be thin, but Gigi said she still eats how she wants and her body is still strong and healthy. That's what's most important — that Gigi is healthy and happy with her life. While she said all the judgment doesn't impact her too much, she worries about her fans.
"Your comment won't get me down, but next time, please think about the young women who may read my body-judgment comments and judge themselves as they see their bodies growing and therefore naturally changing," Gigi told her haters.
The bottom line is we should all love our bodies at whatever stage they're in. There will be different stages, and just like Gigi tells us, that's OK.
Related: Why Body Positivity Isn't Just For Fat Girls
KeywordsGigi HadidBody Imagebody shamers
50 People Shared the Best Advice Their Therapist Has Ever Given Them
Alexa Lisitza
Gigi's Hadid's Latest Outfit Was A Work of Art
Michael Kors and Gigi Hadid Are Holding an IRL Scavenger Hunt, and I'm Ready


Kidoo is a very loving cat. She treats my daughter like she was her own daughter. And calls her to bed at night. She talks to my daughter by meowing everytime she meows. Kidoo is sick right now and we are not sure if she is going to make it. Only time and a trip to the vet will tell. But I loved this photo and I wanted to share it with everyone. Hope you love it.


text:
Afghan air force airmen perform preventive maintenance on Mi-17 helicopters, Dec 1, 2014, in Kabul, Afghanistan. U.S. Air Force photo by Staff Sgt. Perry Aston/Released
Watchdog: Afghan Air Force Already Losing Readiness Before US Withdrawal is Complete
July 29, 2021 | By Brian W. Everstine
The effectiveness of the Afghan Air Force is already dropping even before the U.S. and coalition forces complete their withdrawal from the country, with the majority of the Afghan Air Force's airframes losing readiness last month.
The office of the Special Inspector General for Afghanistan Reconstruction on July 28 released its latest quarterly report to Congress, detailing several issues facing the health and effectiveness of Afghan forces. The AAF, long touted as one of the few success stories in the U.S.-led training mission, has been key to Afghan military capabilities. But that is waning as U.S. contractors leave and advisers are already gone from the country.
"Five of the seven airframes experienced decreases in readiness in the last month of the quarter [June]," wrote SIGAR's John Sopko. "This coincided with the Taliban offensive and the withdrawal of U.S. and Coalition forces, including aircraft-maintenance contractors. The combined effect of the two appeared to reduce aircraft readiness rates."
Specifically, the AAF's AC-208 fleet had a 93 percent readiness rate in April and May, but that dropped to 63 percent in June. The UH-60 Black Hawk fleet went from 77 percent to 39 percent. The A-29 light attack aircraft and MD-530 attack helicopter, both key to striking Taliban fighters in the country, failed to meet readiness benchmarks.
It is not clear how the AAF can regain some of this readiness as contractors have left. Sopko said during a July 29 roundtable with reporters that AAF crews are a success story, showing they are "not only brave, but as competent as they could be," but there are small numbers of them. More cannot be trained overnight—both pilots and mechanics need months to be trained.
U.S. officials have said they will continue supporting the AAF through funding and remote advising from over the horizon. Sopko said, however, that how that will occur it isn't clear yet and that there will be limitations in effectiveness.
"You've got to be there sometimes, to help somebody with maintenance, or training, or whatever," he said. "And it's extremely difficult. … It's a lot better, I personally feel, when you're face to face and when the Afghans are face to face."
Additionally, how in-depth maintenance will occur isn't clear. Needed maintenance is possible, though difficult and expensive, to do out of the country. For example, if a helicopter engine needs to be fixed, it could be flown out of Afghanistan, fixed elsewhere, and then flown back in.
Afghan special forces—the other success story in the Afghan military—also are stretched extremely thin. Commandos are tasked with basic jobs that regular forces should do, such as route clearance and checkpoints, because regular Afghan army soldiers refuse to conduct operations if the special forces are not there, Sopko said.
Congress created SIGAR in 2008 to conduct oversight of reconstruction projects in Afghanistan, and Sopko has held the position since 2012. He has overseen dozens of reports outlining lessons learned, effective and ineffective projects, and other topics for Congress, and as the war winds down, he cites a lot of lessons learned for the military and the country at large.
Throughout the war, for example, the U.S. military was too focused on short-term goals for leaders who rotate in and out of the country as opposed to long-term efforts. The military went into Afghanistan thinking it could create a strong central government, but that was a "mistake." The Pentagon poured money into the country, which created waste and corruption, and alienated the Afghan people without effectively supporting the military.
"If you expect the Afghan military to win the hearts and the minds of the Afghan people, you have to win the hearts and minds of the Afghan military," he said. "So if you don't pay them, you don't feed them, you don't support them, you don't give benefits to widows and orphans, … you don't have medevac capabilities, then the average Afghan soldier is saying, 'What the heck am I dying for?'"
U.S. leaders in Afghanistan didn't focus enough on logistics, and every time a problem arose in the development of the Afghan military, "we changed the goalposts on how we were rating them," he said.
Sopko said he has two words that can describe the mission in Afghanistan: "One is this 'hubris' that we can somehow take a country that was desolate in 2001 and turn it into a little Norway in [a short] timeframe. And the other thing is 'mendacity.' You know we exaggerated, we over-exaggerated, our generals did, our ambassadors did, all of our officials did, to Congress and the American people about, 'We're just turning the corner, we're about ready to turn the corner.' … Many of our generals talked about 'just about ready to win.' Well, we turned the corner so much, we did 360 degrees—we're like a top."
With the withdrawal almost complete, Americans need to understand what went wrong in Afghanistan, Sopko argued. Over the past 20 years, the U.S. undertook a redevelopment program in the country that was bigger than the Marshall Plan after World War II, and he expects something similar will happen again in the future.
"What we have identified in Afghanistan is relevant in other places of the world," he said. "Don't believe what you're told by the generals or the ambassadors or people in the administration saying we're never going to do this again. That's exactly what we said after Vietnam, 'We're never going to do this again.' And lo and behold, we did Iraq. And we did Afghanistan. We will do this again. And we really need to think and learn from the 20 years in Afghanistan."
US to Russia: Concessions Must be 'Reciprocal'
The U.S. will not bar Ukraine or other countries from future entry into NATO, and any concessions with Russia on missile defense or military exercises must be "reciprocal," State Department Deputy Secretary Wendy R. Sherman told journalists on a press call following eight hours of meetings with her Russian counterpart…


As a mom and a photographer, I cannot tell you how often I hear things like "Why don't you put your camera down and live in the moment?!" Every time I am asked this, I am completely taken back by it. I am terrified of forgetting it all. After having three kids, my memories of them have already started to blend, and many moments have faded from my mind. Looking through a lens is my way of living in the moment, and then living that moment over and over again. Looking through a lens allows me to pay more attention to small details. The way the light hits their faces, the vast emotions they go through in all of three minutes, and unspoken moments they share among each other, all of these things that I might otherwise overlook. I want to remember ALL of it. Ninety percent of it is pure chaos. The house is messy, the boys are fighting, and we are upset and yelling for them to stop. Then, Marlowe is crying and yanking at me to sit down and nurse her as I'm trying to do a million things. It is CHAOS; but my husband and I created the chaos, and I love every second of it. I would choose it all over again if I had to. I recently decided to merge a little bit of my personal stuff and family pictures into my blog; since after all, my businesses is me! So here is my first personal post- one of the best days we had, after several super hard days. We had all been sick, tired and grumpy for what felt like an eternity and hadn't gotten into the Halloween spirit whatsoever. We decided to squeeze it all into one weekend of fall festivities at the very last minute. We went to Avila barn to feed the goats and do the corn maze (which we lost Gavyn in for about ten minutes) and then we chased the sunset. As we drove back home it got super foggy and was really just the icing on the cake- chilly, grey weather perfect to cuddle up in and watch the Nightmare Before Christmas! And guess what? I took pictures. Their memories will blend and fade as mine have, but we will always remember that magical fall day in October through the photos.


2.83% – Mortgage rates fell to their lowest-ever level, with the average being 2.83% in the 2nd quarter, according to the Bank of England and FCA.
1 in 10 – Up to 10 percent of borrowers could benefit from taking out a 2nd charge over a remortgage or further advance says packager V Loans.
18.5% – The value of buy-to-let lending rose by 18.5% year-on-year to 8.3Bn in Q2, according to BoE and FCA.
1Bn – The amount Nationwide has earmarked for its new range of 95% LTV mortgages.
78 – The BoE's Monetary Policy Committee voted to keep base rate at a record low for the 78th consecutive month running.
9% – The amount by which house prices have grown year-on-year in the 3 months to August, according to Halifax.
78% Over three-quarters of borrowers on a variable rate are not budgeting for increased payments that would accompany a rate rise, an Equifax survey shows.
£12Bn – The Chancellor's new bank tax on profits will raise almost twice the amount estimated by the Government, at £12Bn, accounts EY says.


text:
Raninidae — семейство десятиногих крабов из надсемейства Raninoidea секции Raninoida инфраотряда Brachyura.

Большинство ученых считают их довольно примитивными. Они очень похожи на (не родственных им) раков-кротов из-за параллельной эволюции. В обеих группах клешни превращаются в орудия для рытья, а тело имеет округлую форму, чтобы было удобнее зарываться в песок. В отличие от большинства других настоящих крабов, брюшки Raninidae не скрыты под карапаксом.

Наиболее ранние ископаемые представители Raninidae известны из альбского яруса.

Классификация
Семейство включает 46 современных и 183 вымерших видов в 34 родах в 7 подсемействах:

 Подсемейство Cyrthorhininae
 Cyrtorhina
 Подсемейство Lyreidinae
 †Hemioon
 †Lyreidina
 Lyreidus
 Lysirude
 †Rogueus
 †Macroacaena
 †Tribolocephalus
 Подсемейство Notopodinae
 Cosmonotus
 †Eumorphocorystes
 †Lianira
 †Lovarina
 Notopus
 †Ranidina
 †Raniliformis
 Ranilia
 Umalia
 Подсемейство Ranininae
 †Lophoranina
 Ranina
 †Raninella

 Подсемейство Raninoidinae
 †Bicornisranina
 †Cenocorystes
 †Cristafrons
 Notopoides
 Notosceles
 †Quaslaeviranina
 Raninoides
 Подсемейство Palaeocorystinae
 †Cretacoranina
 †Eucorystes
 †Heus
 †Notopocorystes
 Подсемейство Symethinae
 Symethis
 incertae sedis
 †Araripecarcinus
 †Sabahranina

Примечания

Крабы

redpajama_set_name: RedPajamaWikipedia


text:
Q: Can't post comment or use other 'dynamic' features. Browser is hanging on external sites When I try to post a comment on this site or Serverfault, I can't because it is just hanging on loads from other sites such as gravatar.com, quantserv, or sstatic.net.  This is not happening to me with other GA sites, any I can resolve www.google-analytics.com fine. Other areas that seem to have this issue with me are the formatting edit bar (The thing with Bold button), deleting comments, or tag completion.  So it seems to be all the sort of dynamic content on the page.
Same thing happens when I tunnel my connection (Both web and DNS) to a computer on another provider (Comcast Vs Speakeasy), both are geographically in the Boston area though.
random mentioned the browser and I thought he was right. When I did a 'real' refresh with Ctrl-F5 in Firefox 3.5 everything it seemed it started working again, but still the same problem.
I closed the browser and flushed my cache and still having issues. Need to press the stop button for the dynamic content I mentioned to start working.  My browser Firefox 3.5 on Linux. I am not having the problem when I visit the site with Chrome using my Windows VM.
Update:
So closing the browser and flushing the cache does fix it, but only for a little while.  The problem keeps coming back after browsing the sites for a little while.  I tried upgrading my browser to the latest 3.5.x in the repo as well.

A: Have a look at my SF question about this...  It might be related.  There's a bug reported for FF.

redpajama_set_name: RedPajamaStackExchange


text:
package de.lazyheroproductions.campuscardreader.Logic;

import java.util.ArrayList;
import java.util.Random;

public class CreditData{
    private int entries; // number of entries in the arrays
    private ArrayList<Float> credits;
    private ArrayList<Float> transactions;
    private ArrayList<Long> dates;
    private ArrayList<String> datesHumanReadable;
    private ArrayList<String> infos;
    private float sumCredit;
    private float sumTransactions;
    private boolean reverseOrder = false;

    public CreditData(int arrayLength){
        entries = arrayLength;
        credits = new ArrayList<>();
        transactions = new ArrayList<>();
        dates = new ArrayList<>();
        datesHumanReadable = new ArrayList<>();
        infos = new ArrayList<>();
    }

    public int getEntries() {
        return entries;
    }

    public void setEntries(int entries) {
        this.entries = entries;
    }

    public float[] getCredits() {
        float[] result = new float[credits.size()];
        for (int i = 0; i <credits.size(); i++) {
            result[i] = credits.get(i);
        }
        if(reverseOrder) {
            reverse(result);
        }
        return result;
    }

    public void addCredit(float credits) {
        this.credits.add(credits);
    }

    public float[] getTransactions() {
        float[] result = new float[transactions.size()];
        for (int i = 0; i <transactions.size(); i++) {
            result[i] = transactions.get(i);
        }
        if(reverseOrder) {
            reverse(result);
        }
        return result;
    }

    public void addTransaction(float transactions) {
        this.transactions.add(transactions);
    }

    public long[] getDates() {
        long[] result = new long[dates.size()];
        for (int i = 0; i <dates.size(); i++) {
            result[i] = dates.get(i);
        }
        if(reverseOrder) {
            reverse(result);
        }
        return result;
    }

    public void addDate(long dates) {
        this.dates.add(dates);
    }

    public String[] getDatesHumanReadable() {
        String[] result = new String[datesHumanReadable.size()];
        for (int i = 0; i <datesHumanReadable.size(); i++) {
            result[i] = datesHumanReadable.get(i);
        }
        if(reverseOrder) {
            reverse(result);
        }
        return result;
    }

    public void addDateHumanReadable(String datesHumanReadable) {
        this.datesHumanReadable.add(datesHumanReadable);
    }

    public String[] getInfos() {
        String[] result = new String[infos.size()];
        for (int i = 0; i <infos.size(); i++) {
            result[i] = infos.get(i);
        }
        if(reverseOrder) {
            reverse(result);
        }
        return result;
    }

    public void addInfos(String infos) {
        this.infos.add(infos);
    }

    public float getSumCredit() {
        return sumCredit;
    }

    public void setSumCredit(float sumCredit) {
        this.sumCredit = sumCredit;
    }

    public float getSumTransactions() {
        return sumTransactions;
    }

    public void setSumTransactions(float sumTransactions) {
        this.sumTransactions = sumTransactions;
    }

    public float getTransactionAverage(){
        return getSumTransactions()/getEntries();
    }

    public float getCreditAverage(){
        return getSumCredit()/getEntries();
    }

    private void reverse(float[] array) {
        if (array == null) {
            return;
        }
        int i = 0;
        int j = array.length - 1;
        float tmp;
        while (j > i) {
            tmp = array[j];
            array[j] = array[i];
            array[i] = tmp;
            j--;
            i++;
        }
    }

    private void reverse(long[] array) {
        if (array == null) {
            return;
        }
        int i = 0;
        int j = array.length - 1;
        long tmp;
        while (j > i) {
            tmp = array[j];
            array[j] = array[i];
            array[i] = tmp;
            j--;
            i++;
        }
    }

    public void reverse(String[] array) {
        if (array == null) {
            return;
        }
        int i = 0;
        int j = array.length - 1;
        String tmp;
        while (j > i) {
            tmp = array[j];
            array[j] = array[i];
            array[i] = tmp;
            j--;
            i++;
        }
    }

    public void setReverseOrder(boolean b){
        this.reverseOrder = !b;
    }

    public CreditData getRandom(){
        int lengthOfRandomData = getDatesHumanReadable().length;
        if(lengthOfRandomData != 0) {
            Random r = new Random();
            ArrayList<Float> imFloatingAway = new ArrayList<>();
            for (int i = 0; i < lengthOfRandomData; i++) {
                imFloatingAway.add((float) r.nextInt(20));
            }
            credits = imFloatingAway;
            ArrayList<Float> nowMyHeadHurts = new ArrayList<>();
            for (int i = 0; i < lengthOfRandomData; i++) {
                nowMyHeadHurts.add((float) r.nextInt(20));
            }
            transactions = nowMyHeadHurts;
            sumCredit = r.nextInt(100);
            sumTransactions = r.nextInt(100);
        }
        return this;
    }
}


Moonstone, a talisman to bring back the drifted souls of love, who were separated because of anger, creates possibilities to reunite them.
This memorial ring of sterling silver with a round rainbow moonstone placed in the middle part will help you heal and create many more beautiful memories with the ones you love.
This statement of love will help you dig the deep to bring out the buried sincere appreciation for your loved ones.


How soon after Test only cycle is it ok to start MK-677.
MK-677 for 22 year old?
How dramatic are the results of MK-677?
Should I run MK677 for a year, or spend on SARMS instead?
Anyone Run HGH + MK-677 Simultaneously - Any Benefit?
MK-677: The power of the compound compels you!


On Tuesday 16th May 2017, 8 Schools took part in the Galway Primary Schools Mini Basketball Tournament namely Cregmore NS, Maree NS, Lackagh NS, Briarhill NS, Newtown NS, Lisheenkyle NS, Athenry NS & Bawnmore NS. Cregmore ended up winners on the day. Congratulations to all involved. We wish the Galway Committee all the best and look forward to hearing about Mini basketball progress in Galway in the next school year.
A new partnership between Specsavers and basketball in Galway is set to get more and more school children active in sport in the west of Ireland. The optical retail chain launched a sponsorship of Galway Primary Schools, which will provide a basketball starter pack for budding ballers. The pack includes a hold all bag, basketballs, training vests, whistle, scoresheets and basketball training drills information.
Pupils of Merlin Woods Primary School were given a chance to test out the pack earlier in the week under the stewardship of Principal Teacher Paula O'Connor, Basketball Development Officer Mike Murray and Specsavers Retail Director Annette Flanagan.


text:
"PRIDE AND PREJUDICE" (1940) Review
Posted on May 3, 2012 by drush76
There have been at least eight adaptations of "Pride and Prejudice", Jane Austen's 1813 novel. But as far as I know, only four are well known or constantly mentioned by many of the novelist's present-day fans. And one of the four happens to be the movie adapted in 1940 by Metro-Goldwyn-Mayer.
Directed by Robert Z. Leonard, "PRIDE AND PREJUDICE" told the story of the five unmarried daughters of a 19th century English landowner and the efforts of his shrill wife to get them married before his estate is inherited by a distant male cousin. For years, this version of Austen's novel has been highly regarded by fans and critics alike. But ever since the advent of numerous Austen adaptations in the past 15 to 20 years, these same critics and fans have been incredibly harsh toward this Hollywood classic. Many have complained that the movie failed to be a faithful adaptation of the 1813 novel.
Many of the complaints volleyed by recent Austen fans include:
*The movie's fashions and setting changed to the late 1820s and early 1830s
*The deletion of Elizabeth Bennet's trip to Derbyshire and Pemberly
*Mr. Darcy's slightly less haughty manner
*Instead of a ball, Charles Bingley held a fête for the Hertfordshire neighborhood
*The change in Lady Catherine de Bourgh's reason for visiting Longbourn
The 1940 movie was the first version of Austen's novel I had ever seen. Since then, I have become a major fan of some of the adaptations that followed – including the 1980 miniseries, the 1995 miniseries and the 2005 movie. So, when I had decided to watch this version again, I wondered if my high regard of the film would remain. Needless to say, it has.
"PRIDE AND PREJUDICE" had a running time of 117 minutes. To expect it to be a completely faithful adaptation of the novel seemed ridiculous to me. If I must be frank, I have NEVER SEEN a completely faithful adaptation. But I can say this about the 1940 movie, it remains as delightfully entertaining as ever.
However, the movie is not without its faults. And I was able to spot a few. One, I found Laurence Olivier's portrayal of the haughty Fitzwilliam Darcy as not quite so haughty . . . especially in his pursuit of Elizabeth Bennet during the Netherfield Fête. The time span between Elizabeth's departure from the Collins household in Kent and Darcy's arrival in Hertfordshire, to announce his knowledge of Lydia Bennet and George Wickham's elopement seemed ridiculously short. Since the movie was nearly two hours long, it could have spared a scene in which Colonel Fitzwilliam had revealed Mr. Darcy's part in Charles Bingley's departure from Hertfordshire. Instead, we are given a scene in which Elizabeth angrily conveyed the colonel's revelation to her friend, Charlotte Lucas. And speaking of Charlotte, I was rather disappointed by her portrayal. It made Gerald Oliver Smith's (Colonel Fitzwilliam) appearance in the movie rather irrelevant. I found nothing wrong with Karen Morely's performance. But screenwriters Aldous Huxley, Helen Jerome and Jane Muffin failed to do justice to Charlotte's character or her friendship with Elizabeth.
Despite these disappointments, I managed to enjoy "PRIDE AND PREJUDICE" as much as ever. A good deal of Austen's words and wit remained in the screenplay. And the screenwriters also added some of their own memorable lines that left me laughing aloud. After my recent viewing of the movie, I believe this "PRIDE AND PREJUDICE" is one of the funniest Austen adaptations I have ever seen. Director Robert Z. Leonard has been nominated for a Best Director Academy Award at least twice in his career – for 1930's "THE DIVORCEE" and 1936's "THE GREAT ZIEGFIELD". It seems a pity that he was never nominated for "PRIDE AND PREJUDICE", because I believe that he did an excellent job of injecting a great deal of atmosphere, humor and zest into the film. And his pacing of the film is top-notch. Not once did I ever have the inclination to fall asleep, while watching it.
While many Austen fans were busy bemoaning that the movie was not completely faithful to the novel, I was too busy enjoying it. And if I must be brutally honest, there was one major change to Austen's story that really impressed me. At the Netherfield Fête, Elizabeth began to show signs of warming up to Mr. Darcy, following her demonstration of her prowess as an archer. But when he noticed the less pleasant sides of the Bennet family, Mr. Darcy withdrew himself from Elizabeth, deepening her dislike toward him even further. This was a creation of the screenwriters and to my surprise, I ended up enjoying it.
As I had hinted earlier, I found it to be one of the funniest adaptations I have ever seen. There were so many scenes that either had me laughing on the floor or smirking (with delight). Some of them included the Bennet family's introduction to Mr. Collins, poor Mary Bennet's attempt to entertain the guests at the Netherfield Fête, Mrs. Bennet and Lady Lucas' race to reach their respective homes in order to order their husbands to call upon Charles Bingley, Elizabeth's first meeting with George Wickham at the Meryton Assembly, and Caroline Bingley's attempt to express interest in Mr. Darcy's letter to his sister Georgiana. But the few scenes that I consider my personal favorites were the interaction between Elizabeth and Mr. Darcy during a game of archery, Mr. Collins' marriage proposal to Elizabeth and the dinner sequence at Rosings with the verbose Lady Catherine de Bourgh.
I tried to find a performance that seemed out of step for me. The only one that left me feeling less than satisfied came from Karen Morely, who portrayed Charlotte Lucas. Her Charlotte seemed to fade into the background, in compare to the other characters. I suspect that the problem had more to do with Huxley, Jerome and Muffin's screenplay than the actress' performance. But everyone else seemed to be at the top of their game. Both Ann Rutherford and Heather Angel were outrageously silly as the younger Bennet sisters. Marsha Hunt was hilarious as the Bennet family's wallflower, Mary. Bruce Lester was charming as the extroverted Charles Bingley. He also made a strong screen chemistry with Maureen O'Sullivan, who was equally charming as the eldest Bennet sibling, Jane. Frieda Inescort was both convincingly cool and sometimes rather funny as the imperious and ambitious Caroline Bingley. Edward Ashley Cooper gave what I believe to be the second best portrayal of the roguish George Wickham. He was charming, smooth and insidious. And Edmund Gwenn gave a subtle, yet witty performance as the quietly sarcastic Mr. Bennet.
However, there were five performances that really impressed me. One came from Melville Cooper, who had me laughing so hard, thanks to his hilarious portrayed the obsequious William Collins, Mr. Bennet's annoying heir presumptive for the Longbourn estate. Equally funny was the unforgettable character actress, Edna May Oliver as Mr. Darcy's overbearing aunt, Lady Catherine de Bourgh. Her role as an English aristocrat seemed so convincing that I was amazed to discover that she was an American from Massachusetts. Mary Boland gave a superb and entertaining performance as the equally overbearing and gauche Mrs. Bennet. In fact, I have to say that her portrayal of Mrs. Bennet is my absolute favorite. My God . . . that voice! She really knew how to put it to good use. Fresh from his success in 1939's "WUTHERING HEIGHTS", Laurence Olivier tackled the role of Fitzwilliam Darcy, regarded as the favorite Austen hero by many fans. Personally, I thought he did an excellent job, although his Darcy never struck me as haughty as the other interpretations I have seen. From what I have heard, he was not that fond of the picture or his role. I was also amazed that he had such a strong screen chemistry with his leading lady, considering that he thought she was wrong for the part. Olivier had this to say in his autobiography:
"I was very unhappy with the picture. It was difficult to make Darcy into anything more than an unattractive-looking prig, and darling Greer seemed to me all wrong as Elizabeth."
I thought it was nice of Olivier to call Greer Garson "darling". But I do not think I can take his comments about her performance that seriously . . . especially since he wanted Vivien Leigh – his paramour at the time and soon-to-be future wife to portray Elizabeth. Personally, I am glad that Garson ended up portraying Elizabeth. I thought she was superb. Garson had a deliciously sly wit that she put to good use in her performance . . . more so than any other actress I have seen in this role. Some have commented that in her mid-thirties, she was too old to portray Elizabeth. Perhaps. But Garson did such an excellent job of conveying Elizabeth's immaturities – especially when it came to passing judgment on Mr. Darcy that I never gave her age any thought. All I can say is that she was brilliant and I heartily disagree with Olivier.
Many fans have commented upon Adrian's costume designs for "PRIDE AND PREJUDICE". They seemed to have taken umbrage that he designed the costumes from the late Georgian Era – namely the late 1820s or early 1830s, claiming that Austen's story should have been set during the Regency Era. However, Austen first wrote the novel in the late 1790s. And she did not change it that much before it was finally published in 1813. There was no law that "PRIDE AND PREJUDICE" had to be set in the 1810s – especially when one considers there was a version set in early 21st century India. Personally, I found Adrian's costumes beautiful, even if they were filmed in black-and-white. And since "PRIDE AND PREJUDICE" was not a historical drama, I simply do not understand the fuss.
After reading so many negative comments about "PRIDE AND PREJUDICE" in recent years, I wondered how I react to watching it again after so many years. To my surprise, I discovered that I still love it. Even after so many years. I admit that it is not perfect. But neither are the other versions I have seen. The magic of Greer Garson, Laurence Olivier and director Robert Z. Leonard still holds up after so many years.
Filed under: Movie Review | Tagged: ann rutherford, bruce lester, e.e. clive, edmund gwenn, edna may oliver, edward ashley cooper, frieda inescort, georgian age, greer garson, heather angel, jane austen, karen morely, laurence olivier, literary, marsha hunt, mary boland, maureen o'sullivan, melville cooper, old hollywood, pride and prejudice |	Leave a comment »


text:
2021 Cadillac Escalade's Interior Spied for Real
The next-gen SUV will be getting a large curved touchscreen atop the dashboard.
By Daniel Golson
We have now spied what is actually the next-generation Cadillac Escalade's interior.
What we previously spied (and thought was the Escalade) is probably the next GMC Yukon's interior.
We can see a large curved touchscreen and a stubby electronic shifter on the center console.
Last month, we brought you what we thought were spy photos of the upcoming next-gen Cadillac Escalade's interior. Dear readers, it turns out we were wrong. We now know that the previously spied interior was probably the next-gen GMC Yukon's interior stuck into an Escalade for testing, as a new set of spy photos have revealed the real interior of the upcoming Slade.
While almost everything is covered up, we can see a large curved screen that seems to be part of one giant piece that also includes the digital gauge cluster in front of the driver. The rounded edge of the screen is finished with aluminum trim, and the housing is wrapped in leather. We should have expected that what we previously spied wasn't actually the Escalade, as rumors had pointed to the new SUV getting a radically redesigned interior with, yes, a curved screen—and the little that we can see looks to be more aligned with Cadillac's design language, anyway.
Given that the occupant in the car is reaching for the screen in what seems like a pinching motion, it's probably a touchscreen, although we wouldn't be surprised for the system to also be able to be controlled by some sort of rotary knob. We can also see that the screen is mounted atop a strip of bright wood trim, and the graphics on the screen (showing the navigation view in these photos) look to be part of a new operating system.
Beyond the screen, a stubby electronic shifter mounted to the center console confirms that the Escalade is doing away with the current model's column-mounted shifter. As the Yukon interior had a push-button setup to save center-console space, we think the shifter in this Escalade could be a placeholder for a similar setup.
The next-gen Escalade should debut within the next six months or so before going on sale as a 2021 model. Hopefully we won't have to admit to being wrong again when the next batch of spy photos hits our inbox.
Corvette Mania: Celebrate the Unveiling of the C8!
LEGO Technic Chevrolet Corvette ZR1 Building Kit
C6 Corvette Hat in Red with Black Mesh Overlay - One Size
Corvette: America's Star-Spangled Sports Car
Nike Corvette Men's Dri Fit Performance Polo - Red or Black


Do you remember the first time you saw a drawing in 3D? You probably thought that it was incredible! It blows your mind, and you want to look at it over and over again. Lately 3D drawings on asphalt/concrete and paper have become incredibly popular among people of all ages. It is hard to be indifferent to such realistic and vivid pictures. So it's understandable that many want to know how to draw a 3D picture on paper. Strange as it may seem, you do not have to be a professional artist. You just need the Drawing School app. With this program anyone can learn to draw 3D drawings on asphalt/concrete or on paper. Just follow the detailed step-by-step instructions and you will see the results for yourself.
The Drawing School app includes an impressive collection of characters which is being updated regularly. If you've been wanting to try your hand at 3D drawings, but did not know where to begin, try the Drawing School app and your wish will come true!
If you don't have any previous experience with this kind of picture, we suggest you start with the simplest drawings, for example, a circle.
Learn how to draw 3D drawings easy step by step! Many exclusive 3D drawings.
找How to draw 3D Pictures app在【阿達玩APP】提供有hair drawing tutorial 68筆2 頁即時熱門話題,Wonder How To is your guide to free how to videos on the Web.
9月 20, 2014 Smonte Ltd.
9月 20, 2014 GLOBAL VIEW CO., LTD.


For a bit of tradition and spirituality, the Piscataway Tribe represented just that on April 4 in the Student Life Zone.
Showcasing their traditional song and dance, and telling their story, the audience was in absolute awe.
Mark Tayac, the leader of the group and soon to be the 29th chief in his tribe, explained that they have represented their culture and story all over the globe. Mark brought along his son Naiche, and two other members of his tribe, Johnson and Erica.
Mark did most of the singing, and besides helping with some of the drumming, the other three members commanded the stage with their traditional dance. Pulling up students from the audience as well, the Piscataway Tribe showed the audience dances that were typical for their gatherings, as well as spiritual dances that touched the souls of everyone watching.
When asked what people should take away from attending his performance and listening to his and his people's stories, Mark stated he wants people to experience the beauty and nature of Native American culture for what it truly is and not the way society has painted them to be and wants them to be like.
He helps put on these shows because he one day hopes to "change the picture" that people portray Native American as, and show his people in a more positive and accurate light as they should be, all the while "building and mending bridges" with others.


If you are not happy with how your bedroom looks right now, you can do something about it. There are lots of little things you can do to spruce up your bedroom and give it a new, fresh and beautiful look. Here are some ideas to get you started.
Decide what the overall theme of the room should be. This will help you know how to decorate and put everything else together. When choosing a theme, consider how long you would like to have it. If you want to maintain the theme for a short period of time, let's say a year or two, then there will be no need to over commit yourself to the theme. This means that there will be no need to buy expensive furniture and lots of decorations with the theme you've chosen. You can choose something that you can easily change whenever you want to.
Sprucing up your room can involve doing something as simple as cleaning it up. Get rid of unnecessary clutter. If there is any item in your bedroom that you haven't used in a while, throw it out, give it away or sell it off. This will leave you with lots of space that you can decorate. Once you have gotten rid of the stuff, examine your room and see what you already have. You can build up on these items when redecorating.
The best way to do this is to give the walls a fresh coat of paint. You can mix the colors as you want. If it is not possible to paint the walls, consider using wallpaper instead or you can even use fabric. You don't have to change the appearance of all walls; you can just change the appearance of one wall.
You can also use stencils to design the walls in different patterns. The walls should be a solid color and the stencil designs should use a contrasting color. If you are renting a house, you can use decal stickers instead of stencils. The stickers can be easily peeled off when it is time to move houses.
Use a lot of pillows with differing sizes to get that cool, comfortable hotel look. The bigger pillows should be towards the back of the bed and the small pillows should be at the front of the bed. Mix and match patterns and colors of the pillowcases.
A rug will add some softness and warmth to the room. Choose a rug that blends in well with the rest of the decoration in the room. You can choose something that matches the linens, curtains or wall. The rug can cover the whole floor or it can cover the 3 sides of the floor around the bed that are the most used. If your room has a carpet, consider placing a rug on one side of the bed.
Use A Mix Of Modish & Timeless Pieces To Add Cheer & Romance To Your Bedroom!


text:
Home . Newspaper handling
One of the leading newspaper stands in France
With more than 50 million newspapers and 7 million magazines handled per year, Servair is one of the main press distributors in France. The main national and international paper headlines are made available to airline passengers on a daily basis, aboard aircraft, in comfort zones and departure lounges.
Fresh news every day
Servair also provides newspapers and journals on a daily basis to more than 30 airline companies, on the plane and on the ground, through a thorough organization, a keen sense of anticipation, and a permanent race against time. Targeted purchases from editors for each flight, a close study of departures and destinations for all flights, and permanent management of undistributed copies, are the parameters to coordinate every day in order for passengers to stay informed on the most recent happenings in their countries of origin. At the same time, Servair also handles the updating of flying personnel technical information sheets for some airline companies.
Worldwide implantations
19 countries, 31 airports
see our implantations
Ours jobs
10 500 colleagues
see our jobs
A welcoming cabin before each departure!