text:
import {Action} from '../amp-story-store-service';
import {AmpStoryBookend} from '../bookend/amp-story-bookend';
import {AmpStoryRequestService} from '../amp-story-request-service';
import {AnalyticsVariable, getVariableService} from '../variable-service';
import {ArticleComponent} from '../bookend/components/article';
import {CtaLinkComponent} from '../bookend/components/cta-link';
import {LandscapeComponent} from '../bookend/components/landscape';
import {LocalizationService} from '../../../../src/service/localization';
import {PortraitComponent} from '../bookend/components/portrait';
import {Services} from '../../../../src/services';
import {StoryAnalyticsEvent, getAnalyticsService} from '../story-analytics';
import {TextBoxComponent} from '../bookend/components/text-box';
import {createElementWithAttributes} from '../../../../src/dom';
import {user} from '../../../../src/log';

const location =
  'https://www.testorigin.com/amp-stories/example/path/google.com';

describes.fakeWin('amp-story-bookend', {win: {location}, amp: true}, (env) => {
  let win;
  let doc;
  let storyElem;
  let bookend;
  let bookendElem;
  let requestService;
  let analytics;
  let analyticsVariables;

  const expectedComponents = [
    {
      'type': 'heading',
      'text': 'My Heading Title!',
    },
    {
      'type': 'small',
      'title': 'This is an example article',
      'domainName': 'example.com',
      'url': 'http://example.com/article.html',
      'image': 'http://placehold.it/256x128',
    },
    {
      'type': 'portrait',
      'title': 'This is an example article',
      'category': 'This is an example article',
      'domainName': 'example.com',
      'url': 'http://example.com/article.html',
      'image': 'http://placehold.it/256x128',
    },
    {
      'type': 'cta-link',
      'links': [
        {
          'text': 'buttonA',
          'url': 'google.com',
        },
        {
          'text': 'buttonB',
          'url': 'google.com',
        },
        {
          'text': 'longtext longtext longtext longtext longtext',
          'url': 'google.com',
        },
      ],
    },
    {
      'type': 'landscape',
      'title': 'TRAPPIST-1 Planets May Still Be Wet Enough for Life',
      'domainName': 'example.com',
      'url': 'http://example.com/article.html',
      'category': 'astronomy',
      'image': 'http://placehold.it/256x128',
    },
    {
      'type': 'textbox',
      'text': [
        'Food by Enrique McPizza',
        'Choreography by Gabriel Filly',
        'Script by Alan Ecma S.',
        'Direction by Jon Tarantino',
      ],
    },
  ];

  const metadata = {
    '@context': 'http://schema.org',
    '@type': 'NewsArticle',
    'mainEntityOfPage': {
      '@type': 'WebPage',
      '@id': './bookend.html',
    },
    'headline': 'My Story',
    'image': ['http://placehold.it/420x740'],
    'datePublished': '2018-01-01T00:00:00+00:00',
    'dateModified': '2018-01-01T00:00:00+00:00',
    'author': {
      '@type': 'Organization',
      'name': 'AMP Project',
    },
    'publisher': {
      '@type': 'Organization',
      'name': 'AMP Project',
      'logo': {
        '@type': 'ImageObject',
        'url': 'http://placehold.it/128x128',
      },
    },
    'description': 'My Story',
  };

  beforeEach(() => {
    win = env.win;
    doc = win.document;
    const localizationService = new LocalizationService(win.document.body);
    env.sandbox
      .stub(Services, 'localizationForDoc')
      .returns(localizationService);
    storyElem = doc.createElement('amp-story');
    storyElem.appendChild(doc.createElement('amp-story-page'));
    doc.body.appendChild(storyElem);
    bookendElem = createElementWithAttributes(doc, 'amp-story-bookend', {
      'layout': 'nodisplay',
    });
    storyElem.appendChild(bookendElem);

    requestService = new AmpStoryRequestService(win, storyElem);
    env.sandbox.stub(Services, 'storyRequestService').returns(requestService);

    bookend = new AmpStoryBookend(bookendElem);
    bookend.buildCallback();

    analytics = getAnalyticsService(win);
    analyticsVariables = getVariableService(win);

    // Force sync mutateElement.
    env.sandbox.stub(bookend, 'mutateElement').callsArg(0);
    env.sandbox.stub(bookend, 'getStoryMetadata_').returns(metadata);
  });

  it('should build the users json', async () => {
    const userJson = {
      'bookendVersion': 'v1.0',
      'shareProviders': [
        'email',
        {'provider': 'facebook', 'app_id': '254325784911610'},
        'whatsapp',
      ],
      'components': [
        {
          'type': 'heading',
          'text': 'My Heading Title!',
        },
        {
          'type': 'small',
          'title': 'This is an example article',
          'url': 'http://example.com/article.html',
          'image': 'http://placehold.it/256x128',
        },
        {
          'type': 'portrait',
          'title': 'This is an example article',
          'category': 'This is an example article',
          'url': 'http://example.com/article.html',
          'image': 'http://placehold.it/256x128',
        },
        {
          'type': 'cta-link',
          'links': [
            {
              'text': 'buttonA',
              'url': 'google.com',
            },
            {
              'text': 'buttonB',
              'url': 'google.com',
            },
            {
              'text': 'longtext longtext longtext longtext longtext',
              'url': 'google.com',
            },
          ],
        },
        {
          'type': 'landscape',
          'title': 'TRAPPIST-1 Planets May Still Be Wet Enough for Life',
          'url': 'http://example.com/article.html',
          'category': 'astronomy',
          'image': 'http://placehold.it/256x128',
        },
        {
          'type': 'textbox',
          'text': [
            'Food by Enrique McPizza',
            'Choreography by Gabriel Filly',
            'Script by Alan Ecma S.',
            'Direction by Jon Tarantino',
          ],
        },
      ],
    };

    env.sandbox.stub(requestService, 'loadBookendConfig').resolves(userJson);

    bookend.build();
    const config = await bookend.loadConfigAndMaybeRenderBookend();
    config.components.forEach((currentComponent, index) => {
      expect(currentComponent).to.deep.equal(expectedComponents[index]);
    });
  });

  it('should build the users json with share providers alternative', async () => {
    const userJson = {
      'bookendVersion': 'v1.0',
      'shareProviders': [
        'email',
        {'provider': 'facebook', 'app_id': '254325784911610'},
        {'provider': 'whatsapp'},
      ],
      'components': [
        {
          'type': 'heading',
          'text': 'My Heading Title!',
        },
        {
          'type': 'small',
          'title': 'This is an example article',
          'url': 'http://example.com/article.html',
          'image': 'http://placehold.it/256x128',
        },
        {
          'type': 'portrait',
          'title': 'This is an example article',
          'category': 'This is an example article',
          'domainName': 'example.com',
          'url': 'http://example.com/article.html',
          'image': 'http://placehold.it/256x128',
        },
        {
          'type': 'cta-link',
          'links': [
            {
              'text': 'buttonA',
              'url': 'google.com',
            },
            {
              'text': 'buttonB',
              'url': 'google.com',
            },
            {
              'text': 'longtext longtext longtext longtext longtext',
              'url': 'google.com',
            },
          ],
        },
        {
          'type': 'landscape',
          'title': 'TRAPPIST-1 Planets May Still Be Wet Enough for Life',
          'url': 'http://example.com/article.html',
          'category': 'astronomy',
          'image': 'http://placehold.it/256x128',
        },
        {
          'type': 'textbox',
          'text': [
            'Food by Enrique McPizza',
            'Choreography by Gabriel Filly',
            'Script by Alan Ecma S.',
            'Direction by Jon Tarantino',
          ],
        },
      ],
    };

    env.sandbox.stub(requestService, 'loadBookendConfig').resolves(userJson);

    bookend.build();
    const config = await bookend.loadConfigAndMaybeRenderBookend();
    config.components.forEach((currentComponent, index) => {
      expect(currentComponent).to.deep.equal(expectedComponents[index]);
    });
  });

  it('should build the users share providers', async () => {
    const userJson = {
      'bookendVersion': 'v1.0',
      'shareProviders': [
        'email',
        {'provider': 'facebook', 'app_id': '254325784911610'},
        {
          'provider': 'twitter',
          'text':
            'This is custom share text that I' +
            ' would like for the Twitter platform',
        },
        'whatsapp',
      ],
      'components': [
        {
          'type': 'heading',
          'text': 'My Heading Title!',
        },
        {
          'type': 'small',
          'title': 'This is an example article',
          'url': 'http://example.com/article.html',
          'image': 'http://placehold.it/256x128',
        },
      ],
    };

    const expectedShareProviders = [
      'email',
      {'provider': 'facebook', 'app_id': '254325784911610'},
      {
        'provider': 'twitter',
        'text':
          'This is custom share text that I ' +
          'would like for the Twitter platform',
      },
      'whatsapp',
    ];

    env.sandbox.stub(requestService, 'loadBookendConfig').resolves(userJson);

    bookend.build();
    const config = await bookend.loadConfigAndMaybeRenderBookend();
    config['shareProviders'].forEach((currProvider, index) => {
      expect(currProvider).to.deep.equal(expectedShareProviders[index]);
    });
  });

  it('should ignore empty share providers', async () => {
    const userJson = {
      'bookendVersion': 'v1.0',
      'shareProviders': [],
      'components': [
        {
          'type': 'heading',
          'text': 'My Heading Title!',
        },
        {
          'type': 'small',
          'title': 'This is an example article',
          'url': 'http://example.com/article.html',
          'image': 'http://placehold.it/256x128',
        },
      ],
    };

    env.sandbox.stub(requestService, 'loadBookendConfig').resolves(userJson);

    bookend.build();
    const config = await bookend.loadConfigAndMaybeRenderBookend();
    expect(config['shareProviders']).to.deep.equal([]);
  });

  it('should warn when trying to use system sharing', async () => {
    const userJson = {
      'bookendVersion': 'v1.0',
      'shareProviders': ['system'],
      'components': [
        {
          'type': 'heading',
          'text': 'My Heading Title!',
        },
        {
          'type': 'small',
          'title': 'This is an example article',
          'url': 'http://example.com/article.html',
          'image': 'http://placehold.it/256x128',
        },
      ],
    };

    const userWarnStub = env.sandbox.stub(user(), 'warn');

    env.sandbox.stub(requestService, 'loadBookendConfig').resolves(userJson);

    bookend.build();
    await bookend.loadConfigAndMaybeRenderBookend();
    expect(userWarnStub).to.be.calledOnce;
    expect(userWarnStub.args[0][1]).to.be.equal(
      '`system` is not a valid ' +
        'share provider type. Native sharing is ' +
        'enabled by default and cannot be turned off.'
    );
  });

  it('should reject invalid user json for a textbox component', () => {
    const textBoxComponent = new TextBoxComponent();
    const userJson = {
      'bookendVersion': 'v1.0',
      'shareProviders': [
        'email',
        {'provider': 'facebook', 'app-id': '254325784911610'},
        'whatsapp',
      ],
      'components': [
        {
          'type': 'heading',
          'title': 'test',
        },
        {
          'type': 'small',
          'url': 'http://example.com/article.html',
          'image': 'http://placehold.it/256x128',
        },
        {
          'type': 'textbox',
          'text': 'http://example.com/article.html',
        },
      ],
    };

    allowConsoleError(() => {
      expect(() => textBoxComponent.assertValidity(userJson)).to.throw(
        'Textbox component must contain ' +
          '`text` array and at least one element inside it, ' +
          'skipping invalid.'
      );
    });
  });

  it('should have a button to re-prompt the consent if story has one', () => {
    const consentId = 'CONSENT_ID';
    bookend.storeService_.dispatch(Action.SET_CONSENT_ID, consentId);

    bookend.build();

    const promptButtonEl = bookend
      .getShadowRoot()
      .querySelector(`[on="tap:${consentId}.prompt"]`);

    expect(promptButtonEl).to.exist;
  });

  it('should not have a button to re-prompt the consent by default', () => {
    bookend.build();

    // No element with an "on" attribute ending with ".prompt".
    const promptButtonEl = bookend
      .getShadowRoot()
      .querySelector('[on$=".prompt"]');

    expect(promptButtonEl).to.be.null;
  });

  it('should skip invalid component name and continue building', async () => {
    const userJson = {
      'bookendVersion': 'v1.0',
      'shareProviders': [
        'email',
        {'provider': 'facebook', 'app-id': '254325784911610'},
        'whatsapp',
      ],
      'components': [
        {
          'type': 'invalid-type',
          'title': 'test',
        },
        {
          'type': 'small',
          'title': 'This is an example article',
          'domainName': 'example.com',
          'url': 'http://example.com/article.html',
          'image': 'http://placehold.it/256x128',
        },
      ],
    };

    env.sandbox.stub(requestService, 'loadBookendConfig').resolves(userJson);

    bookend.build();
    expectAsyncConsoleError(
      /[Component `invalid-type` is not supported. Skipping invalid]/
    );

    const config = await bookend.loadConfigAndMaybeRenderBookend();
    // Still builds rest of valid components.

    // We use config.components[1] because config.components[0] is a heading
    // that we prepend when there is no heading present in the user config.
    expect(config.components[1]).to.deep.equal(userJson.components[1]);
  });

  it('should not add a heading component when there are no components', async () => {
    const userJson = {
      'bookendVersion': 'v1.0',
      'shareProviders': [
        'email',
        {'provider': 'facebook', 'app_id': '254325784911610'},
        'whatsapp',
      ],
      'components': [],
    };

    env.sandbox.stub(requestService, 'loadBookendConfig').resolves(userJson);

    bookend.build();
    const config = await bookend.loadConfigAndMaybeRenderBookend();
    expect(config.components.length).to.equal(0);
  });

  describe('analytics', () => {
    it('should fire analytics event when clicking on a link', async () => {
      const userJson = {
        'bookendVersion': 'v1.0',
        'shareProviders': [
          'email',
          {'provider': 'facebook', 'app_id': '254325784911610'},
          'whatsapp',
        ],
        'components': [
          {
            'type': 'cta-link',
            'links': [
              {
                'text': 'buttonA',
                'url': 'google.com',
                'amphtml': true,
              },
            ],
          },
        ],
      };

      env.sandbox.stub(requestService, 'loadBookendConfig').resolves(userJson);
      const analyticsSpy = env.sandbox.spy(analytics, 'triggerEvent');

      bookend.build();
      await bookend.loadConfigAndMaybeRenderBookend();
      const ctaLinks = bookend.bookendEl_.querySelector(
        '.i-amphtml-story-bookend-cta-link-wrapper'
      );
      ctaLinks.children[0].onclick = function (e) {
        e.preventDefault(); // Make the test not actually navigate.
      };
      ctaLinks.children[0].click();

      expect(analyticsSpy).to.have.been.calledWith(
        StoryAnalyticsEvent.BOOKEND_CLICK
      );
      expect(
        analyticsVariables.get()[AnalyticsVariable.BOOKEND_TARGET_HREF]
      ).to.equal(
        'https://www.testorigin.com/amp-stories/example/path/google.com'
      );
      expect(
        analyticsVariables.get()[AnalyticsVariable.BOOKEND_COMPONENT_TYPE]
      ).to.equal('cta-link');
      expect(
        analyticsVariables.get()[AnalyticsVariable.BOOKEND_COMPONENT_POSITION]
      ).to.equal(1);
    });

    it('should not fire analytics event when clicking non-clickable components', async () => {
      const userJson = {
        'bookendVersion': 'v1.0',
        'shareProviders': [
          'email',
          {'provider': 'facebook', 'app_id': '254325784911610'},
          'whatsapp',
        ],
        'components': [
          {
            'type': 'textbox',
            'text': [
              'Food by Enrique McPizza',
              'Choreography by Gabriel Filly',
              'Script by Alan Ecma S.',
              'Direction by Jon Tarantino',
            ],
          },
        ],
      };

      env.sandbox.stub(requestService, 'loadBookendConfig').resolves(userJson);
      const analyticsSpy = env.sandbox.spy(analytics, 'triggerEvent');

      bookend.build();
      await bookend.loadConfigAndMaybeRenderBookend();
      const textEl = bookend.bookendEl_.querySelector(
        '.i-amphtml-story-bookend-text'
      );

      textEl.click();

      expect(analyticsSpy).to.not.have.been.called;
    });

    it('should forward the correct target when clicking on an element', async () => {
      const userJson = {
        'bookendVersion': 'v1.0',
        'shareProviders': [
          'email',
          {'provider': 'facebook', 'app_id': '254325784911610'},
          'whatsapp',
        ],
        'components': [
          {
            'type': 'cta-link',
            'links': [
              {
                'text': 'buttonA',
                'url': 'google.com',
                'amphtml': true,
              },
            ],
          },
        ],
      };

      env.sandbox.stub(requestService, 'loadBookendConfig').resolves(userJson);
      const clickSpy = env.sandbox.spy();
      doc.addEventListener('click', clickSpy);

      bookend.build();
      await bookend.loadConfigAndMaybeRenderBookend();
      const ctaLinks = bookend.bookendEl_.querySelector(
        '.i-amphtml-story-bookend-cta-link-wrapper'
      );
      ctaLinks.children[0].onclick = function (e) {
        e.preventDefault(); // Make the test not actually navigate.
      };
      ctaLinks.children[0].click();

      expect(clickSpy.getCall(0).args[0]).to.contain({
        '__AMP_CUSTOM_LINKER_TARGET__': ctaLinks.children[0],
      });
    });
  });

  describe('cta links component', () => {
    it('should reject invalid user json', () => {
      const ctaLinkComponent = new CtaLinkComponent();
      const userJson = {
        'bookendVersion': 'v1.0',
        'shareProviders': [
          'email',
          {'provider': 'facebook', 'app_id': '254325784911610'},
          'whatsapp',
        ],
        'components': [
          {
            'type': 'heading',
            'title': 'test',
          },
          {
            'type': 'small',
            'url': 'http://example.com/article.html',
            'image': 'http://placehold.it/256x128',
          },
          {
            'type': 'cta-link',
            'links': [],
          },
        ],
      };

      allowConsoleError(() => {
        expect(() => ctaLinkComponent.assertValidity(userJson)).to.throw(
          'CTA link component must be an array ' +
            'and contain at least one link inside it.'
        );
      });
    });

    it(
      'should add amp-to-amp linking to individual cta links when ' +
        'specified in the JSON config',
      async () => {
        const userJson = {
          'bookendVersion': 'v1.0',
          'shareProviders': [
            'email',
            {'provider': 'facebook', 'app_id': '254325784911610'},
            'whatsapp',
          ],
          'components': [
            {
              'type': 'cta-link',
              'links': [
                {
                  'text': 'buttonA',
                  'url': 'google.com',
                  'amphtml': true,
                },
              ],
            },
          ],
        };

        env.sandbox
          .stub(requestService, 'loadBookendConfig')
          .resolves(userJson);

        bookend.build();
        await bookend.loadConfigAndMaybeRenderBookend();
        const ctaLinks = bookend.bookendEl_.querySelector(
          '.i-amphtml-story-bookend-cta-link-wrapper'
        );
        expect(ctaLinks.children[0]).to.have.attribute('rel');
        expect(ctaLinks.children[0].getAttribute('rel')).to.equal('amphtml');
      }
    );

    it(
      'should not add amp-to-amp linking to cta links when not ' +
        'specified in the JSON config',
      async () => {
        const userJson = {
          'bookendVersion': 'v1.0',
          'shareProviders': [
            'email',
            {'provider': 'facebook', 'app_id': '254325784911610'},
            'whatsapp',
          ],
          'components': [
            {
              'type': 'cta-link',
              'links': [
                {
                  'text': 'buttonB',
                  'url': 'google.com',
                  'amphtml': '',
                },
                {
                  'text': 'longtext longtext longtext longtext longtext',
                  'url': 'google.com',
                  'amphtml': false,
                },
              ],
            },
          ],
        };

        env.sandbox
          .stub(requestService, 'loadBookendConfig')
          .resolves(userJson);

        bookend.build();
        await bookend.loadConfigAndMaybeRenderBookend();
        const ctaLinks = bookend.bookendEl_.querySelector(
          '.i-amphtml-story-bookend-cta-link-wrapper'
        );
        expect(ctaLinks.children[0]).to.not.have.attribute('rel');
        expect(ctaLinks.children[1]).to.not.have.attribute('rel');
      }
    );
  });

  describe('small article component', () => {
    it('should reject invalid user json', () => {
      const articleComponent = new ArticleComponent();
      const userJson = {
        'bookendVersion': 'v1.0',
        'shareProviders': [
          'email',
          {'provider': 'facebook', 'app_id': '254325784911610'},
          'whatsapp',
        ],
        'components': [
          {
            'type': 'heading',
            'title': 'test',
          },
          {
            'type': 'small',
            'url': 'http://example.com/article.html',
            'image': 'http://placehold.it/256x128',
          },
        ],
      };

      allowConsoleError(() => {
        expect(() => articleComponent.assertValidity(userJson)).to.throw(
          'Small article component must contain `title`, `url` fields, ' +
            'skipping invalid.'
        );
      });
    });

    it('should add amp-to-amp linking when specified in the JSON config', async () => {
      const userJson = {
        'bookendVersion': 'v1.0',
        'shareProviders': [
          'email',
          {'provider': 'facebook', 'app_id': '254325784911610'},
          'whatsapp',
        ],
        'components': [
          {
            'type': 'small',
            'title': 'This is an example article!',
            'url': 'http://example.com/article.html',
            'image': 'http://placehold.it/256x128',
            'amphtml': true,
          },
        ],
      };

      env.sandbox.stub(requestService, 'loadBookendConfig').resolves(userJson);

      bookend.build();
      await bookend.loadConfigAndMaybeRenderBookend();
      const articles = bookend.bookendEl_.querySelectorAll(
        '.i-amphtml-story-bookend-article'
      );
      expect(articles[0]).to.have.attribute('rel');
      expect(articles[0].getAttribute('rel')).to.equal('amphtml');
    });

    it('should not add amp-to-amp linking when not specified in the JSON config', async () => {
      const userJson = {
        'bookendVersion': 'v1.0',
        'shareProviders': [
          'email',
          {'provider': 'facebook', 'app_id': '254325784911610'},
          'whatsapp',
        ],
        'components': [
          {
            'type': 'small',
            'title': 'This is an example article!',
            'url': 'http://example.com/article.html',
            'image': 'http://placehold.it/256x128',
          },
          {
            'type': 'small',
            'title': 'This is an example article!',
            'url': 'http://example.com/article.html',
            'image': 'http://placehold.it/256x128',
            'amphtml': 'true',
          },
        ],
      };

      env.sandbox.stub(requestService, 'loadBookendConfig').resolves(userJson);

      bookend.build();
      await bookend.loadConfigAndMaybeRenderBookend();
      const articles = bookend.bookendEl_.querySelectorAll(
        '.i-amphtml-story-bookend-article'
      );
      expect(articles[0]).to.not.have.attribute('rel');
      expect(articles[1]).to.not.have.attribute('rel');
    });

    it('should resolve relative url for origin url when served from the cache', () => {
      const component = {
        url: './other-article.html',
        domainName: 'example.com',
        type: 'small',
        title: 'This is an example article',
        image: '../../assets/01-iconic-american-destinations.jpg',
      };

      win.location.resetHref(
        'https://www-nationalgeographic-com.cdn.ampproject.org/c/s/www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/'
      );

      const article = new ArticleComponent();
      const el = article.buildElement(component, win, {position: 0});
      expect(el.href).to.equal(
        'https://www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/other-article.html'
      );
    });

    it('should respect specified absolute URL', () => {
      const component = {
        url: 'https://www.anothersite.com/article.html',
        domainName: 'example.com',
        type: 'small',
        title: 'This is an example article',
        image: '../../assets/01-iconic-american-destinations.jpg',
      };

      win.location.resetHref(
        'https://www-nationalgeographic-com.cdn.ampproject.org/c/s/www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/'
      );

      const article = new ArticleComponent();
      const el = article.buildElement(component, win, {position: 0});
      expect(el.href).to.equal('https://www.anothersite.com/article.html');
    });

    it('should rewrite thumbnail image url for cached version', () => {
      const component = {
        url: 'http://example.com/article.html',
        domainName: 'example.com',
        type: 'small',
        title: 'This is an example article',
        image: '../../assets/01-iconic-american-destinations.jpg',
      };

      win.location.resetHref(
        'https://www-nationalgeographic-com.cdn.ampproject.org/c/s/www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/'
      );

      const article = new ArticleComponent();
      const el = article.buildElement(component, win, {position: 0});
      expect(el.querySelector('img').src).to.equal(
        'https://www-nationalgeographic-com.cdn.ampproject.org/i/s/www.nationalgeographic.com/amp-stories/assets/01-iconic-american-destinations.jpg'
      );
    });

    it('should not rewrite thumbnail image url when using absolute url', () => {
      const component = {
        url: 'http://example.com/small.html',
        domainName: 'example.com',
        type: 'small',
        title: 'This is an example small',
        image: 'http://placehold.it/256x128',
      };

      win.location.resetHref(
        'https://www-nationalgeographic-com.cdn.ampproject.org/c/s/www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/'
      );
      const small = new ArticleComponent();
      const el = small.buildElement(component, win, {position: 0});
      expect(el.querySelector('img').src).to.equal(
        'http://placehold.it/256x128'
      );
    });

    it('should not rewrite thumbnail image for origin documents', () => {
      const component = {
        url: 'http://example.com/small.html',
        domainName: 'example.com',
        type: 'small',
        title: 'This is an example small',
        image: '../../assets/01-iconic-american-destinations.jpg',
      };

      win.location.resetHref(
        'https://www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/'
      );
      const small = new ArticleComponent();
      const el = small.buildElement(component, win, {position: 0});
      expect(el.querySelector('img').src).to.equal(
        'https://www.nationalgeographic.com/amp-stories/assets/01-iconic-american-destinations.jpg'
      );
    });
  });

  describe('landscape component', () => {
    it('should reject invalid user json', () => {
      const landscapeComponent = new LandscapeComponent();
      const userJson = {
        'bookendVersion': 'v1.0',
        'shareProviders': [
          'email',
          {'provider': 'facebook', 'app_id': '254325784911610'},
          'whatsapp',
        ],
        'components': [
          {
            'type': 'heading',
            'title': 'test',
          },
          {
            'type': 'small',
            'url': 'http://example.com/article.html',
            'image': 'http://placehold.it/256x128',
          },
          {
            'type': 'landscape',
            'url': 'http://example.com/article.html',
            'category': 'astronomy',
            'image': 'http://placehold.it/256x128',
          },
        ],
      };

      allowConsoleError(() => {
        expect(() => landscapeComponent.assertValidity(userJson)).to.throw(
          'Landscape component must contain `title`, `image`, ' +
            '`url` fields, skipping invalid.'
        );
      });
    });

    it('should add amp-to-amp linking when specified in the JSON config', async () => {
      const userJson = {
        'bookendVersion': 'v1.0',
        'shareProviders': [
          'email',
          {'provider': 'facebook', 'app_id': '254325784911610'},
          'whatsapp',
        ],
        'components': [
          {
            'type': 'landscape',
            'category': 'example category',
            'title': 'example title',
            'url': 'http://example.com/article.html',
            'image': 'http://placehold.it/256x128',
            'amphtml': true,
          },
        ],
      };

      env.sandbox.stub(requestService, 'loadBookendConfig').resolves(userJson);

      bookend.build();
      await bookend.loadConfigAndMaybeRenderBookend();
      const articles = bookend.bookendEl_.querySelectorAll(
        '.i-amphtml-story-bookend-landscape'
      );
      expect(articles[0]).to.have.attribute('rel');
      expect(articles[0].getAttribute('rel')).to.equal('amphtml');
    });

    it('should not add amp-to-amp linking when not specified in the JSON config', async () => {
      const userJson = {
        'bookendVersion': 'v1.0',
        'shareProviders': [
          'email',
          {'provider': 'facebook', 'app_id': '254325784911610'},
          'whatsapp',
        ],
        'components': [
          {
            'type': 'landscape',
            'category': 'example category',
            'title': 'example title',
            'url': 'http://example.com/article.html',
            'image': 'http://placehold.it/256x128',
          },
          {
            'type': 'landscape',
            'category': 'example category',
            'title': 'example title',
            'url': 'http://example.com/article.html',
            'image': 'http://placehold.it/256x128',
            'amphtml': 'true',
          },
        ],
      };

      env.sandbox.stub(requestService, 'loadBookendConfig').resolves(userJson);

      bookend.build();
      await bookend.loadConfigAndMaybeRenderBookend();
      const articles = bookend.bookendEl_.querySelectorAll(
        '.i-amphtml-story-bookend-landscape'
      );
      expect(articles[0]).to.not.have.attribute('rel');
      expect(articles[1]).to.not.have.attribute('rel');
    });

    it('should resolve relative url for origin url when served from the cache', () => {
      const component = {
        url: './other-article.html',
        domainName: 'example.com',
        type: 'landscape',
        title: 'This is an example landscape article',
        image: '../../assets/01-iconic-american-destinations.jpg',
      };

      win.location.resetHref(
        'https://www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/'
      );

      const landscape = new LandscapeComponent();

      const el = landscape.buildElement(component, win, {position: 0});
      expect(el.href).to.equal(
        'https://www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/other-article.html'
      );
    });

    it('should respect specified absolute URL', () => {
      const component = {
        url: 'https://www.anothersite.com/article.html',
        domainName: 'example.com',
        type: 'landscape',
        title: 'This is an example landscape article',
        image: '../../assets/01-iconic-american-destinations.jpg',
      };

      win.location.resetHref(
        'https://www-nationalgeographic-com.cdn.ampproject.org/c/s/www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/'
      );
      const landscape = new LandscapeComponent();
      const el = landscape.buildElement(component, win, {position: 0});
      expect(el.href).to.equal('https://www.anothersite.com/article.html');
    });

    it('should rewrite landscape thumbnail image url for cached version', () => {
      const component = {
        url: 'http://example.com/landscape.html',
        domainName: 'example.com',
        type: 'landscape',
        title: 'This is an example landscape',
        image: './assets/01-iconic-american-destinations.jpg',
      };

      win.location.resetHref(
        'https://www-nationalgeographic-com.cdn.ampproject.org/c/s/www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/'
      );

      const landscape = new LandscapeComponent();
      const el = landscape.buildElement(component, win, {position: 0});
      expect(el.querySelector('img').src).to.equal(
        'https://www-nationalgeographic-com.cdn.ampproject.org/i/s/www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/assets/01-iconic-american-destinations.jpg'
      );
    });

    it('should not rewrite thumbnail image url when using absolute url', () => {
      const component = {
        url: 'http://example.com/landscape.html',
        domainName: 'example.com',
        type: 'landscape',
        title: 'This is an example landscape',
        image: 'http://placehold.it/256x128',
      };

      win.location.resetHref(
        'https://www-nationalgeographic-com.cdn.ampproject.org/c/s/www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/'
      );
      const landscape = new LandscapeComponent();
      const el = landscape.buildElement(component, win, {position: 0});
      expect(el.querySelector('img').src).to.equal(
        'http://placehold.it/256x128'
      );
    });

    it('should not rewrite thumbnail image for origin documents', () => {
      const component = {
        url: 'http://example.com/landscape.html',
        domainName: 'example.com',
        type: 'small',
        title: 'This is an example landscape',
        image: '../../assets/01-iconic-american-destinations.jpg',
      };

      win.location.resetHref(
        'https://www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/'
      );
      const landscape = new LandscapeComponent();
      const el = landscape.buildElement(component, win, {position: 0});
      expect(el.querySelector('img').src).to.equal(
        'https://www.nationalgeographic.com/amp-stories/assets/01-iconic-american-destinations.jpg'
      );
    });
  });

  describe('portrait component', () => {
    it('should reject invalid user json', () => {
      const portraitComponant = new PortraitComponent();
      const userJson = {
        'bookendVersion': 'v1.0',
        'shareProviders': [
          'email',
          {'provider': 'facebook', 'app_id': '254325784911610'},
          'whatsapp',
        ],
        'components': [
          {
            'type': 'portrait',
            'category': 'sample',
            'url': 'http://example.com/article.html',
            'image': 'http://placehold.it/256x128',
          },
        ],
      };

      allowConsoleError(() => {
        expect(() => portraitComponant.assertValidity(userJson)).to.throw(
          'Portrait component must contain `title`, `image`, ' +
            '`url` fields, skipping invalid.'
        );
      });
    });

    it('should add amp-to-amp linking when specified in the JSON config', async () => {
      const userJson = {
        'bookendVersion': 'v1.0',
        'shareProviders': [
          'email',
          {'provider': 'facebook', 'app_id': '254325784911610'},
          'whatsapp',
        ],
        'components': [
          {
            'type': 'portrait',
            'title': 'example title',
            'category': 'example category',
            'url': 'http://example.com/article.html',
            'image': 'http://placehold.it/256x128',
            'amphtml': true,
          },
        ],
      };

      env.sandbox.stub(requestService, 'loadBookendConfig').resolves(userJson);

      bookend.build();
      await bookend.loadConfigAndMaybeRenderBookend();
      const articles = bookend.bookendEl_.querySelectorAll(
        '.i-amphtml-story-bookend-portrait'
      );
      expect(articles[0]).to.have.attribute('rel');
      expect(articles[0].getAttribute('rel')).to.equal('amphtml');
    });

    it('should not add amp-to-amp linking when not specified in the JSON config', async () => {
      const userJson = {
        'bookendVersion': 'v1.0',
        'shareProviders': [
          'email',
          {'provider': 'facebook', 'app_id': '254325784911610'},
          'whatsapp',
        ],
        'components': [
          {
            'type': 'portrait',
            'title': 'example title',
            'category': 'example category',
            'url': 'http://example.com/article.html',
            'image': 'http://placehold.it/256x128',
          },
          {
            'type': 'portrait',
            'title': 'example title',
            'category': 'example category',
            'url': 'http://example.com/article.html',
            'image': 'http://placehold.it/256x128',
            'amphtml': 'true',
          },
        ],
      };

      env.sandbox.stub(requestService, 'loadBookendConfig').resolves(userJson);

      bookend.build();
      await bookend.loadConfigAndMaybeRenderBookend();
      const articles = bookend.bookendEl_.querySelectorAll(
        '.i-amphtml-story-bookend-portrait'
      );
      expect(articles[0]).to.not.have.attribute('rel');
      expect(articles[1]).to.not.have.attribute('rel');
    });

    it('should resolve relative url for origin url when served from the cache', () => {
      const component = {
        url: './other-article.html',
        domainName: 'example.com',
        type: 'portrait',
        title: 'This is an example portrait article',
        image: '../../assets/01-iconic-american-destinations.jpg',
      };

      win.location.resetHref(
        'https://www-nationalgeographic-com.cdn.ampproject.org/c/s/www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/'
      );

      const portrait = new PortraitComponent();
      const el = portrait.buildElement(component, win, {position: 0});
      expect(el.href).to.equal(
        'https://www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/other-article.html'
      );
    });

    it('should respect specified absolute URL', () => {
      const component = {
        url: 'https://www.anothersite.com/article.html',
        domainName: 'example.com',
        type: 'portrait',
        title: 'This is an example portrait article',
        image: '../../assets/01-iconic-american-destinations.jpg',
      };

      win.location.resetHref(
        'https://www-nationalgeographic-com.cdn.ampproject.org/c/s/www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/'
      );

      const portrait = new PortraitComponent();
      const el = portrait.buildElement(component, win, {position: 0});
      expect(el.href).to.equal('https://www.anothersite.com/article.html');
    });

    it('should rewrite thumbnail image url for cached version', () => {
      const component = {
        url: 'http://example.com/portrait.html',
        domainName: 'example.com',
        type: 'portrait',
        title: 'This is an example portrait',
        image: 'assets/01-iconic-american-destinations.jpg',
      };

      win.location.resetHref(
        'https://www-nationalgeographic-com.cdn.ampproject.org/c/s/www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/'
      );
      const portrait = new PortraitComponent();
      const el = portrait.buildElement(component, win, {position: 0});
      expect(el.querySelector('img').src).to.equal(
        'https://www-nationalgeographic-com.cdn.ampproject.org/i/s/www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/assets/01-iconic-american-destinations.jpg'
      );
    });

    it('should not rewrite thumbnail image url when using absolute url', () => {
      const component = {
        url: 'http://example.com/portrait.html',
        domainName: 'example.com',
        type: 'portrait',
        title: 'This is an example portrait',
        image: 'http://placehold.it/256x128',
      };

      win.location.resetHref(
        'https://www-nationalgeographic-com.cdn.ampproject.org/c/s/www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/'
      );
      const portrait = new PortraitComponent();
      const el = portrait.buildElement(component, win, {position: 0});
      expect(el.querySelector('img').src).to.equal(
        'http://placehold.it/256x128'
      );
    });

    it('should not rewrite thumbnail image for origin documents', () => {
      const component = {
        url: 'http://example.com/portrait.html',
        domainName: 'example.com',
        type: 'small',
        title: 'This is an example portrait',
        image: '../../assets/01-iconic-american-destinations.jpg',
      };

      win.location.resetHref(
        'https://www.nationalgeographic.com/amp-stories/travel/10-iconic-places-to-photograph/'
      );
      const portrait = new PortraitComponent();
      const el = portrait.buildElement(component, win, {position: 0});
      expect(el.querySelector('img').src).to.equal(
        'https://www.nationalgeographic.com/amp-stories/assets/01-iconic-american-destinations.jpg'
      );
    });
  });
});


The book provides the reader with a multifaceted picture of mathematics education in Israel, put into an international perspective where relevant. It is intended to give an overview of a wide range of topics covering issues such as raising and maintaining motivation, search for excellence, treatment of difficulties, teacher education, language issues, minorities issues, curriculum changes over the… first 70 years of the state of Israel, and many more. This includes aspects of research and practice into the teaching and learning of mathematics, innovation, developments, policy, achievements, and implementation with some international comparison as well.


text:
Q: Remote connections in windows 7 I need help.
In Windows 7
I remotely taking one server(A) using mstsc.again I take remote to different server(B).Now I taking two remotes. If I want to transfer file from sever A To Server B.I just want to know how the process runs.....
thanks

A: If you can access both of these servers from your main computer, and get authenticated, then you can do this in file explorer without having to remote into either computer, per se.
Type in the ip address in file explorer in the address bar with c$ at the end to get the C:\ of the server you're trying to access. For example, \\192.168.1.2\c$ will try to access the C:\ of the server with the address 192.168.1.2. Open two file explorers and do one server in one file explorer, and the other server in the other file explorer, and you then have file transferring abilities without using mstsc!
Here is an image to explain what I mean further:

redpajama_set_name: RedPajamaStackExchange


text:
Bibb County School District may refer to:

 Bibb County School District (Alabama)
 Bibb County School District (Georgia)

redpajama_set_name: RedPajamaWikipedia


text:
Kids need more financial lessons
It's Money Smart Week in Chicago, that annual event sponsored by the Federal Reserve Bank of Chicago, and -- if nothing else -- the city is accented with portraits of a robust Benjamin Franklin winking knowingly from the center of a $100 bill.
Por Esther J. Cepeda
Catchy marketing materials aside, I wish Money Smart Week were not just an annual springtime community outreach effort to increase awareness about the importance of financial education, but rather a matter of national law. One of those pseudo-oppressive nanny state jobbies that turn people into stark-raving lunatics about being "force fed" something that's good for them.
I can see it now. Wouldn't it be cool if those replica Ben Franklins roaming the streets of Chicago in support of Money Smart Week were carrying functional revolutionary-era firearms and were allowed to shoot anyone who couldn't differentiate simple from compound interest?
I'm kidding, I'm kidding!!! But only because most people would fail that one and the Chicago Police Department would be working overtime to pick up bodies. What with all the money troubles the city has, that just wouldn't be a financially sound way to incentivize people to learn about the power of the cash they work so hard for every day.
So anyway, financial literacy. It's not a sexy topic to most people, though in some circles it is considered the next civil right. The fact that my very favorite founding father greeted me at the train station the other morning didn't hurt, but what really inspired me to write this column was not a hand-wringing "oh, the children of this country will never learn to manage their money" moment. Quite the opposite.
A few weeks ago, one of my favorite young pals asked me if I would take him to the bank.
"What for?" I asked, wondering if there was a local bank giving away some sort of kid-friendly tchotchke.
"I want to open an interest-bearing checking account with the $220 I've saved up," said the 11-year-old boy, whose first name is Stimpson.
Yes, this kid, who attends school in a financially struggling suburban school district where about 60 percent of students live at or below the poverty line and 20 percent of kids are considered limited in English proficiency, had learned all about the power of interest-bearing bank accounts at school.
Having taught high school math in this very district, I know that as recently as four years ago the average high school student didn't have a clue what an interest-bearing checking account was.
Unlike the average kindergarten through 12th-grade child in this country, Stimpson -- a strapping young fifth-grader -- is getting familiar with money topics that have made it clear why putting your money in a bank is preferable to cashing your check at the currency exchange and will ultimately help him decide whether and how to take out car loans or student loans.
Yep, Stimpson is one of the lucky ones because some visionary at his school district decided to partner with Junior Achievement, a nonprofit that goes into schools to "teach the key concepts of work readiness, entrepreneurship and financial literacy to young people all over the world."
Their work is sorely needed. According to a recent article in the New York Times, only 13 states require students to take a personal finance course or include the subject in an economics course before they graduate from high school, up from seven states in 2007, according to the Council for Economic Education. Only 34 states (including those 13) have personal finance education in their curriculum guidelines, up from 28 states in 2007.
It's too bad more elementary school kids aren't itching to get their very own financial adviser. And too bad there aren't enough Benjamin Franklin costumes in the basement of the Chicago Federal Reserve Bank to personally reach all of the kiddies in the state to teach them how to manage the money they'll earn and spend throughout their lifetimes.
But Money Smart Week is a good start
TAMBIÉN FIGURA EN
¿Que piensas de este artículo?
Más en Opinión
Trastocando a los Demócratas
Che Guevara en Miami
Sí, son campos de concentración

redpajama_set_name: RedPajamaCommonCrawl


text:
Slade Brockman voted very strongly against creating a federal Anti-Corruption Commission
How Slade Brockman voted compared to someone who believes that the federal government should create a national integrity commission similar to the NSW Independent Commission Against Corruption (ICAC) to detect, investigate and prevent corruption across all Commonwealth departments and agencies
Slade Brockman
9th Sep 2019, 11:50 AM – Senate National Integrity Commission Bill 2018 (No. 2) - Third Reading - Pass the bill
The majority voted in favour of a motion to pass the bill. In parliamentary jargon, they voted to read the bill for a third time. This means that the bill will now be sent to the House for their consideration.
What is the bill's main idea?
The bill was introduced in order to establish an independent public sector anti-corruption commission for the Commonwealth, to be known as the Australian National Integrity Commission.
No Yes (strong) Passed by a small majority
9th Sep 2019, 11:41 AM – Senate National Integrity Commission Bill 2018 (No. 2) - Second Reading - Agree with bill's main idea
The majority voted in favour of a motion to agree with the bill's main idea. In parliamentary jargon, they voted to read the bill for a second time.
13th Sep 2018, 12:23 PM – Senate Motions - International Day of Democracy - Corruption and donations
The majority voted against a motion that called for, among other things, a federal anti-corruption agency to be created as well as certain political donations to be banned.
Motion text
That the Senate—
(a) notes that:
(i) 15 September 2018 is International Day of Democracy,
(ii) Australia's democracy faces systemic challenges in the corrupting influence of political donations and the under-representation of minorities in decision-making positions, and
(iii) Australia's Parliament does not reflect the composition of the Australian population in terms of gender or cultural diversity; and
(b) calls on the Federal Government to:
(i) ban corporate donations from industries with a history of undue influence in Australia's Parliament, such as mining, development, tobacco, alcohol and gambling,
(ii) withdraw proposed electoral funding legislation that restricts the ability of civil society to advocate in the public interest,
(iii) take measures to increase the participation of women and people from minority backgrounds in Australia's political systems, and
(iv) urgently establish a national anti-corruption body with investigative powers to address parliamentary and ministerial misconduct.
No Yes Not passed by a modest majority
11th Sep 2018, 3:46 PM – Senate Motions - National Independent Commission Against Corruption - Create
The majority voted against a motion introduced by Greens Senator Larissa Waters, which means it failed.
(a) recognises:
(i) the notion that the Federal Government is less prone to corruption than its counterparts is not supported by evidence,
(ii) that the potential risks for corruption at a national level have increased significantly in recent years due to several factors including, but not limited to, increased government control of information, increased funding needs of political campaigns and the growth of the lobbying industry,
(iii) that these risks are not currently being adequately mitigated through offence provisions, public sector standards or supervision by various regulatory bodies, and
(iv) that, in the most recent Corruption Perceptions Index, Australia was ranked 13th out of 168 countries;
(b) notes that:
(i) a national independent commission against corruption should be established,
(ii) this independent commission should be called the National Independent Commission Against Corruption (NICAC), and
(iii) NICAC should follow the recommendations of Griffith University, namely, that the national commission act as a peak body through which all Commonwealth integrity and corruption complaints can be lodged; and
(c) calls on the Federal Government to begin the implementation of NICAC as soon as possible, so that all Australians can have confidence in the integrity of their Parliament, government and public institutions.
No Yes (strong) Not passed by a modest majority
How "voted very strongly against" is worked out
MP voted against policy 3 0 150
MP voted against policy 1 0 10
Agreement score = MP's points / total points = 0 / 160 = 0.0%.


text:
Haunted Walking Tour of Santa Fe
Tom Lohr
Tom Lohr lives in New Mexico, where he explores the region with his canine sidekick, Ella the Brown Wonder.
Dead Doesn't Always Mean Gone
Most people think of haunted cities being east of the Mississippi. Make sense; east coast cities have been around longer, more populated and therefore have had more time to experience events that leaves spirits restless. But that doesn't mean the west doesn't have its share of goons, goblins and ghosts. While the east was busy building skyscrapers, the west was still widely lawless and justice was swift and deadly. An argument might end with litigation in New York City, but in places like Tuscon, Denver and Santa Fe, it was just as likely to end in a shootout.
Santa Fe was around a long time before it became a tourist destination and the state's capital. Cattle drives ended there as well as being a source of goods for those that were strewn across northern New Mexico. As the hub of activity in a wide swath of the southwest, dastardly and nefarious acts were bound to occur, as well as accidents that sent souls on their after-life journey before they were ready to go. Add the outlawry and austere life of the wild, wild west, along with the the area being a destination for rift-raft with a penchant for the heinous and you have the perfect mixture for modern-day paranormal activity.
The next time you land in the City Different, wait until dusk or dark and set out to explore sites of the eerie side of Santa Fe...if you dare. Start at the Plaza (A),
Photo by Priscilla Du Preez on
B. Drury Plaza Hotel 828 Paseo de Peralta
Don't let the sparkling upscale digs deceive you. Before it was one of Santa Fe's nicer hotels, it operated as a hospital run by The Sisters of Charity. The hospital closed down in 1977 and was a slew of other businesses before becoming what it is today. When it operated as a hospital, a boy was brought in that had been in a car wreck with his father. His dad died, and after a brief time in Room 311, so did the small boy. Nurses reported hearing faint crying from the room often after the child's passing. It was so prevalent, they tried to keep the room unoccupied.
Apparently, strange things have happened in the basement as well. The odd noises emanating from the basement led to many employees refusing to enter. A couple of nurses have also witnessed blood oozing from the walls in the basement. The remodel didn't help. Even as an upscale hotel, that same room is seldom rented. It seems room 311 can't let go. A couple who stayed in it after it became the Drury were streaming a movie, and the stream was interrupted several times by a YouTube video of limbs being amputated. Neither of them had the YouTube app open.
Photo by Kevin Escate on
C. Convergence Gallery 634 Canyon Rd
If you are visiting Santa Fe, you are going to end up on Canyon Road to take in the fantastic art galleries. But there is one that you should be out of by dark. No one really knows who or what, but there are soft voices heard from seemingly nowhere, although oddly enough only during the winter months. There is also and general feeling of uneasiness in the building. If you visit, the vibe you get may not be coming from the art.
Photo by Camila Quintero Franco
D. Inn and Spa at Loretto 211 Old Santa Fe Trail
Speaking of swanky, it don't get no swankier than the Inn and Spa at Loretto. From 1953 to 1968, this behemoth of beauty was a Catholic Girl's School run by The Order of the Sisters of Loretto. One of the teachers, and esteemed Sister of Loretto was Sister George. Apparently, Sister George couldn't let go after she was supposed to leave this world. She is responsible for occasional light flicking on and off, and a feat of herculean holy heaving lifting by levitating a clothing rack. If she can do that as a spirit, I hate to think about what she could do with a ruler while living.
Photo by Alonso Reyes on
E. San Miguel Chapel 401 Old Santa Fe Trail
When a church is built in 1610 by slave labor, it just has to be haunted. As the oldest church in the United States, the San Miguel Chapel does not disappoint. During the mid 19th century, a blind man prayed so hard he caused the church bell to ring. The ringing temporarily restored his eyesight. The miracle was short-lived and he became blind again as soon as the ringing stopped. While miracles are not evil, they can be damn spooky.
But there is still a ghost to be found in the chapel. The current gift shop was once living quarters. In 1940 a young boy died from unknown circumstances. He makes his presence known on occasion.
Photo by Max Kleinen on
F. La Fonda on the Plaza 100 E San Francisco St
Sometimes you can't just have one. The La Fonda is the place to stay in Santa Fe, and it is so swanky that some guests never want to leave...or ever do. One such resident is John Slough. He got into an argument in the lobby and was shot to death in 1867. He has been hanging around ever since. There is also a bride who has taken up permanent residence in room 510. She was killed on her wedding night by an ex-lover. She probably hasn't crossed over because she is still pissed about not being able to take that honeymoon.
Then there is the distraught businessman seen on occasion in the restaurant. Seems he gambled away all of his business earnings. He became so despondent he jumped in the La Fonda's well. The site of the well is now the hotel restaurant. Champagne isn't the only thing chilling in that room.
G. Alto Street
One block separated from, but following along what is locally called the Santa Fe River, but is actually a creek, is Alto Street. Start at the end of it where it meets De Fouri St and walk a few block west. Every town needs a headless horseman, and Santa Fe is no exception; if you are going to meet one, this is where it will be. Unlucky in love, a local cowboy obtained a love potion from a pair of Spanish witches. When it didn't work, he took it back to complain. He should have read the return policy. In return for his insults, the witches took his head. He now rides up and down Alto Street, brandishing a sword. So get your Ichabod Crane on and see if you can sight him sitting high in the saddle.
Photo by Stefano Pollio on
Take a Walk on the Creepy Side
Santa Fe is one of the most haunted cities in the United States. There a many other haunted and unholy places to visit, but this tour covers the bulk of them if you are on foot and starting from the Plaza. If you find yourself unoccupied and short on cash while in Santa Fe, this tour costs nothing and will give you a taste of the historic ghastly goings on of the area. It's best to do this tour when its dark to get the full effect. But don't go alone; ghosts like company and you might be their perfect companion.
Pamela Oglesby from Sunny Florida on June 21, 2021:
Santa Fe sounds like a terrific place to visit. You really gave us a wealth of information about what to expect when visiting this city. I have never been there, but it sure sounds like a good place to visit.
Peggy Woods from Houston, Texas on June 21, 2021:
Thanks for showcasing the various places that are seemingly haunted in Santa Fe. It is a lovely place, and while visiting there, we have never experienced any unwelcomed spirits. Thank goodness!
EK Jadoon from Abbottabad Pakistan on June 20, 2021:
I believe in supernatural beings and they have assured me of their presence. Santa Fe seems to be a scary place. I would never try to go there because I'm a little timid. Is it true about Jhon Slough? And what about the bride from room no 510? Have anyone seen this bride? How spooky is this.
Stay safe and healthy...


On February 11 and 12, Mastercom representatives workshopped their way through the 2019 ANZ Channel Partner Conference, attending cutting edge presentations and plenary sessions focused on the evolving nature of the industry and technology.
A hallmark industry event, the highly anticipated annual conference brought the best global and ANZ technical specialists together to celebrate a year of achievements and secure a strong industry future through professional development.
Culminating with the Awards Dinner held at the ever-dazzling Sheraton Mirage, seven top performing partners – including Mastercom! – took home trophies for their outstanding achievements and market leadership in 2018.
"This award represents a dedicated team of people who work incredibly hard every single day to deliver for our clients and seek out technological innovations.
Mr Duff also congratulated the other winners, citing the ever-present need for the Industry to proactively work together to open new market opportunities.
Mastercom would like to thank Motorola Solutions for putting on the event and look forward to another successful year ahead.


text:
    <meta charset="UTF-8"/>

    <link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.6.0/pure-min.css">

Ejercicio #4

Ascensor en piso:

redpajama_set_name: RedPajamaGithub


Are you new in Windows Server Containers?
Are you new in Docker?
You may be interested in the following video series.
In Windows Server 2016 Technical Preview 3, Microsoft started to support Windows Server Containers feature in the version. If you don't know what Windows Server Containers is, please watch a series of The Containers Channel to understand and play it in your environment. Matt McSpirit joined with Taylor Brown and Chad Metcalf to talk about Windows Server Containers and Docker and there are some demonstration to play with Windows Server Containers on virtual machines and physical servers in this channel. Let's have a look to understand Windows Server Containers.


What's it like to travel to Washington D.C. to learn about climate change solutions and lobby Congress? This short documentary follows a retired veteran from Virginia, a tech writer from Louisiana, and a university student and her mother from Texas as they participate in CCL's June climate change conference and lobby day 2018.
CCL's conferences are inspiring, empowering, and life-changing. The 2019 Citizens' Climate International Conference and Lobby Day will welcome more than 1200 concerned citizens to Washington D.C. next June to gain the skills they need to become climate advocates and build political will for climate solutions. We also offer regional conferences around the country from September to March.
The Detroit chapter of Citizens' Climate Lobby, in cooperation with CCL Michigan, is offering climate justice grants to students (18 or older) from Michigan to attend the Citizens' Climate International Conference and Lobby Day in Washington, D.C., June 8-12, 2019 (including travel days). For an idea of what the conference is like, check the 2018 conference site. The 2019 conference link will be provided when it is available.
variety of backgrounds. All students who apply may receive free registration. Additional grants are available on a competitive basis for students of color attending a Michigan university including round-trip transportation to DC from Dearborn, access to free housing with CCL volunteers, and a $200 stipend.
Applications are due by May 1, 2019. Semi-finalists will be notified by January 25, 2019 to schedule a video-conference interview with the grant selection committee. Interviews will occur between Jan 25 and Feb 6. Final grant announcements will be made by February 22, 2019.
> Attend a national intro call.
> Attend a local chapter meeting prior to the June conference.
> Attend the Citizens' Climate International Conference and Lobby Day in DC (June 9-10).
> Participate in assigned lobby meetings on June 11 with members of Congress or staff.
> Submit written or video comments on their conference experience.
For questions, please contact Clara Fang at clara.fang@citizensclimatelobby.org.
Daina Robinson and Alexis Thompson from Detroit attend CCL 2018 Conference.
Students from St. Andrew's School in Delaware attend CCL 2018 Conference.
Dr. Natasha DeJarnett, policy analyst at the American Public Health Association, talks about the effects of climate change on public health.
Samantha Pancheve and her mom in a lobby meeting with member of Congress.
Group photo on Lobby Day 2018.


text:
WV CALA wants House panel to look deeper into Davis connection with Fuller
By Chris Dickerson | Aug 2, 2018
CHARLESTON – A statewide legal reform group says the House Judiciary Committee needs to investigate connections between state Supreme Court Justice Robin Jean Davis and Mississippi attorney Michael Fuller in its impeachment proceedings.
West Virginia Citizens Against Lawsuit Abuse also says accuses the Kanawha County Prosecuting Attorney's office of "sitting" on an investigation and allowing the statute of limitations on possible election fraud regarding Davis's 2012 re-election campaign.
An assistant Kanawha County prosecuting attorney denies those claims.
Roman Stauffer, executive director of WV CALA, filed an election complaint with the Secretary of State Mac Warner's office regarding alleged illegal straw donations orchestrated by Fuller to several political campaigns in West Virginia, including Davis's 2012 re-election campaign.
"After a thorough review of the documents from the investigation conducted by the Secretary of State's office, we believe there are serious unanswered questions regarding the connections between Supreme Court Justice Robin Davis and Michael Fuller," Stauffer said. "Kanawha County Prosecutor Chuck Miller wrote in a letter to Secretary of State Mac Warner that the evidence shows that offenses and violations of the law likely occurred.
"The House Judiciary Committee has the authority and responsibility to investigate these matters since others have ignored serious ethical questions and alleged criminal activity."
Fuller's firm does work in West Virginia, primarily in nursing home cases. During the 2012 election cycle, Fuller and his firm had a nursing home neglect case before the state Supreme Court. Davis was chief justice at the time, and she later wrote the court's 2014 decision that reduced the original $91.5 million verdict against Manor Care Inc. to $38 million. Fuller's firm got $17 million of that.
Also, Fuller's firm had purchased a Lear Jet from Charleston attorney Scott Segal, who is Davis' husband, for more than $1 million.
Last year, WV CALA filed the election complaint with the Secretary of State's office. It prompted an investigation and a referral to Kanawha County Prosecutor Chuck Miller's office.
WV CALA says Miller's office sat on the investigation, alerted Davis's attorney of the investigation and decided not to present the findings of the investigation to the Kanawha County grand jury before the statute of limitation has passed.
Rob Schulenberg is the assistant prosecuting attorney in Kanawha County who handled the matter, and he says he didn't sit on the case.
"One of the things I can tell you is that after we received the referral from the Secretary of State's office, I talked to Steve Connolly (Deputy Secretary of State and chief legal counsel for the office)," Schulenberg said. "I asked him if they had any inkling, any idea that Justice Davis has done anything wrong. He said no. At that point, if the investigative agency can't say she did something wrong, I start looking in other directions."
Schulenberg also said the timing of when his office received the referral was an issue.
"There is a five-year window on the statute of limitations with election misdemeanors, and the statute had run on many of the offenses," he said. "And it was close on the others because it was all about the 2012 election.
"Plus, the witnesses who could testify were in the State of Florida. Some of them, we didn't know exactly where we were. The records we would have needed would have to come from financial institutions that do not transact business in West Virginia. The bank records … that's going to take research and time. Several banks, too. And, we would have to pay for that research in this instance.
"We would have had to commence proceedings here, but the problem is the extradition generally takes over 30 days. And, we had to consider where the events occurred. If the events occurred in Florida or North Carolina, we have no way to prosecute that here in West Virginia. Some of the charges that was contained in the referral from the Secretary of State's office were forgery and uttering and falsifying an account. The problem is that if it forgery and uttering, it would have occurred in another state."
Schulenberg said the information he received from Davis's campaign matched what was on the checks involved.
"If there were a 'straw person,' by the time we would get that person to come to West Virginia to testify about that either before a grand jury or a criminal trial, the statute of limitations already would have run," Schulenberg said. "The statute of limitations in West Virginia is only told by the filing of a criminal charge, unlike federal system. West Virginia never adopted the fraudulent concealment type of tolling. The clock starts ticking when the crime occurs."
Schulenberg said he put in countless hours trying to find what he could.
"I worked hard at trying to finish this up," he said. "But by the time we received the report, the limitation of action was just right around the corner or already passed. Then, there's the money issue. Flying people in and out of Florida, Mississippi and other states, having to fly them here, house them, provide meals and everything. And then, they might plead the Fifth Amendment before the grand jury.
"I weighed everything out. I made a recommendation, Mr. Miller followed it. It's a decision not based on who is who. It was a decision based on what I could prove and when I could prove it."
Schulenberg again denied WV CALA's claim that the office "sat" on the investigation and decided to not present findings to a grand jury until the statute had passed.
"I'm bound not only by the statutes, but also by the rules of professional conduct," he said. "As a lawyer, I'm bound not to present a case to a grand jury for charging unless I have probable cause. Was there enough to get an arrest warrant and extradite them? No."
As for contacting Jim Cole, Davis's attorney, Schulenberg said his office did so because he was dealing with campaign bank accounts.
"Ultimately, I contacted the law firm after Mr. Miller had spoken to them," Schulenberg said. "I was the one who did most of the contact with the law firm in Washington. They agreed to provide us with the records of the campaign … documents showing the campaign finance statements, bank deposit slips, copies of checks, things like that. We confirmed what we could of them.
"It's not unusual to contact a witness's attorney when they are represented by counsel. We're not allowed to contact a represented person because we can't cause them to waive a right, even unknowingly."
On Oct. 2, Schulenberg emailed Cole and said, "This office has received a FOIA from Citizens Against Lawsuit Abuse for information relating to the Secretary of State's complaint made to us. Just thought I would give you a heads up." Cole replied, "Thanks for letting me know. Under your FOIA will you be turning over anything?"
The next day, Schulenberg replied, "The whole nine yards with SSNs, DOBs, bank routing numbers and bank account numbers redacted." Cole again replied, "Thanks for letting me know."
"We didn't update them," Schulenberg said. "When I was looking into the case, I called and got records from them. I probably made two or three phone calls or emails to get records.
"But, I can assure you this case was not treated as a fluff event. It was treated seriously. I spent a lot of time on it."
Stauffer also called upon elected officials, candidates and the state Democratic Party to return nearly $90,000 in political contributions from Fuller and people connected to him by the Secretary of State's investigation.
"As long as Justice Robin Davis sits on our state's highest court and refuses to answer questions about her relationship with Michael Fuller this cloud of questionable behavior will follow her," Stauffer said. "Justice Davis was not the subject of the Kanawha County Prosecutors investigation, but throughout the entire process her high priced D.C. attorney was updated on everything by Kanawha County prosecutors.
"We encourage the House Judiciary Committee to investigate Justice Davis' connections to Michael Fuller. They should look at everything from his purchase of her husband's airplane to the alleged straw donations he arranged. In the meantime, Justice Davis should recuse herself from all cases before the Supreme Court of Appeals that involve Michael Fuller and his law firm."
Last June, Connolly asked Miller's office to look further into what he called "unlawful" bundling of campaign donations from Florida connected to Mississippi attorney Michael Fuller Jr. and business associate Steven Edwards. Miller responded last August, saying the five-year statute of limitations had passed or nearly passed on all of the donations. Miller's office had looked at 17 $1,000 donation checks.
"The types of events described in the report constitute misdemeanor criminal offenses," Miller wrote, adding that his office saw nothing that showed Davis or her campaign knew or did anything improper.
In December, Cole told The West Virginia Record he thinks it boils down to that what Miller said is right.
"There is no indication Robin Davis or her campaign did anything wrong," said Cole, who works at Sidley Austin in Washington and was a deputy Attorney General under President Obama. "They had no idea this conduct was taking place.
"It's not a Robin Davis issue."
Documents show that Connolly went to Florida, but interviewed only one of six people whose checks were being investigated. Checks from 17 people from Florida and Mississippi were the focus of the initial examination. Two of them were written by Edwards' wife, one being written under her maiden name.
In a recorded interview, Oscar Villanueva told Connelly that Edwards asked him to write a personal check to a West Virginia politician Villanueva didn't know and told him Fuller would reimburse him. Villanueva and Edwards were business partners in a landscaping company in Plant City, Fla.
Documents released by WV CALA include official correspondences in which Warner and the State Elections Commission referred the findings of their investigative report into the contributions to Miller for presentation to a Kanawha County grand jury.
Records show Davis received more than $483,000 in total contributions for her 2012 race, including more than 300 checks for the maximum, many from practicing attorneys. She spent $1.29 million, loaning another $860,000 of her own money to her effort.
In a letter to Miller, Warner called the donations "a scheme orchestrated by Michael Fuller Jr. and Steve Edwards."
"The records indicate that Secretary of State Mac Warner did his job and conducted a thorough investigation in short order," Stauffer said. "The West Virginia State Election Commission was briefed on the matter during a June 27, 2017, emergency meeting and the matter was referred to Kanawha County Prosecuting Attorney Chuck Miller for presentation to the grand jury.
"The FOIA records do not show Mr. Miller conducting any interviews, requesting any documents from the cooperating witness, obtaining subpoenas for records or even if he complied with West Virginia law and presented the evidence to a grand jury."
Sign-up Next time we write about any of these organizations, we'll email you a link to the story. You may edit your settings or unsubscribe at any time.
West Virginia Citizens Against Lawsuit Abuse • West Virginia House of Delegates • West Virginia Supreme Court of Appeals
Supreme Court reduces parole eligibility date by 5 years in appeal of plea-bargained kidnapping sentence
State Supreme Court suspends 28 attorneys for non-compliance with legal education mandate
State Supreme Court reverses circuit court, clears way to erect 2 new billboards in Wheeling
Estate claims Matulis failed to further investigate woman's pain complaints
Nurse alleges Trinity did not hire her because of medications she takes to treat disability
Unlawful payment claim amended in class-action case against AmerisourceBergen
Tarr says WVEA's lawsuit is not what the people want
West Virginia Citizens Against Lawsuit Abuse
West Virginia Supreme Court of Appeals


text:
Canadian government funds new Climate Change research network
Environment and Climate Change Canada announced a new consortium on April 9, to be called the Pan-Canadian Expert Collaboration, and to be chaired by Blair Feltmate , Head of the Intact Centre on Climate Adaptation at the University of Waterloo. The Collaboration brings together fifteen Canadian research institutes, to provide independent, informed advice to policy-makers, mainly on the issues of clean energy, carbon pricing and adaptation. The researchers were chosen after an extensive competition, begun in October 2018, and the project will be eligible to receive up to $20 million over five years – assuming the Liberal government remains in power in Ottawa after the 2019 election.
The real nitty-gritty about the goals of the initiative are contained in the Discussion Paper issued to solicit interest in the competition . The briefer government Backgrounder on April 9 sets out the goals of the Collaboration, and lists the fifteen research organizations chosen to participate. The goals: "provide credible and authoritative advice to Canadians and their governments; develop and provide independent and expert-driven analysis to help Canada move toward clean growth in all sectors and regions of the country; develop advice and analysis spanning climate change mitigation, adaptation, and clean growth; set its own agenda and operate independently from government; and fill existing information gaps and help translate research into useful information for policy decision-making."
The membership:
Adaptation to Climate Change Team, Simon Fraser University ;
Alberta Innovates ;
Canada's Ecofiscal Commission ;
Canadian Energy Systems Analysis Research, University of Calgary ;
Centre for Indigenous Environmental Resources
Evergreen and Future Cities Canada ;
Foundation for Environmental Stewardship ;
lnstitut de l'énergie Trottier, Polytechnique Montréal
Intact Centre on Climate Adaptation and the Interdisciplinary Centre on Climate Change, University of Waterloo
Ivey Foundation (no active website)
Labrador Institute, Memorial University
MaRS Discovery District
National Consortium for Indigenous Economic Development, University of Victoria
Pacific Institute for Climate Solutions, University of Victoria
Prairie Climate Centre, University of Winnipeg
Smart Prosperity Institute
Switch (l'Alliance pour une économie verte au Québec) (English website here )
Trottier Family Foundation
Yukon College
So far, the media have taken little notice of the group, despite the fact that it was announced only a week after the release of the landmark and alarming government report, Canada's Changing Climate, which showed that Canada is warming at twice the global rate. As of April 10, the only item published comes from The National Observer, "Skeptical of Trudeau's carbon pricing? There's an institute for that" (April 9) , which focuses on the reaction from Ontario's Ford government – attempting to brand the group as elite academics with no understanding of the costs of climate change policies.
This entry was posted in Government Policy and tagged Canada, Climate change policy by elizabethperry493. Bookmark the permalink.


Tap into the prettiest trend around with our Rose Gold Mirror + Wallet Flip Case.
Rose gold is everywhere in the fashion world at the moment, and now it's come for your phone!
Hint: this case looks especially cute with rose gold iPhones!
Fit your essentials into this 3-in-1 case with built-in card slots hidden into the back pocket, along with a compact mirror perfect for makeup touch-ups.
It's the ultimate way to keep your essentials in check!
It's not just a pretty case: it's made with quality materials and a double-layered polycarbonate shell to protect your phone's delicate hardware and screen.
Its 1.2mm raised edges prevent shattering for both your screen and camera lens.
Not a rose gold kind of girl?
Get a Mirror + Wallet Flip Case in mint or black. Order now for guaranteed fast shipping!


text:
Тамара Савеліївна Чебан (уроджена Таратунська, ; , Березлоджі, Оргеєвський повіт, Бессарабська губернія — 23 жовтня 1990, Кишинів, Молдавська РСР) — молдавська радянська співачка (сопрано), виконавиця молдавських народних пісень, педагог. Народна артистка СРСР (1960). Лауреат Сталінської премії третього ступеня (1950). Сестра Валентини Савицької.

Біографія
Тамара Чебан народилася  року у селі Березложи (нині в Оргіївському районі Республіки Молдова) в селянській родині. Батько — Сава Павлович Таратунский, на момент народження дочки проживав в Чорноморській губернії, мати — Олександра Петрівна.

У 1932 році закінчила жіночий ліцей «Принцеса Дадіані» у Кишиневі (за іншими джерелами — гімназію «Regina Maria»), потім Школу фельдшерів (1936—1938). Співала в якості співачки-сопрано в архієрейському хорі Кафедрального собору Кишинева під управлінням М. Березовського. Брала приватні уроки вокалу у Олександра Антоновського, А. Дическу, Р. Афанасіу. Протягом 1938—1940 років також вивчала музику в Кишинівській консерваторії «Municipal». В 1940 році, вже працюючи медсестрою, вступила до Кишинівської консерваторії (нині Академія музики, театру і образотворчих мистецтв) у клас Лідії Липковської.

Під час війни з мобілізацією поїхала до Саратова, де, працюючи в госпіталі, займалася по класу вокалу у Саратовській консерваторії імені Л. В. Собінова (1941—1944) у Р. Я. Білоцерківського та А. М. Пасхалової. У ці ж роки почала артистичну кар'єру солісткою на радіо міста, співала в концертах, виступала у військових частинах, перед пораненими, почала співпрацювати з українською хоровою капелою «Думка».

У 1946 році закінчила Кишинівську консерваторію по класу співу у Лідії Бабич.

У 1945—1951 роках співала у Кишинівській оперній студії, якою керував диригент Борис Мілютін, організованій композитором Давидом Гершфельдом при консерваторії. На сцені дебютувала в 1946 році в партії Чіо-Чіо-сан в опері «Мадам Батерфляй» Джакомо Пуччіні, яка разом з партією Тетяни в опері «Євгеній Онєгін» Петра Чайковського стали найкращими ролями в її виконанні. У ці ж роки була солісткою Молдавського радіо.

У 1947 році на першому Всесвітньому фестивалі молоді і студентів у Празі завоювала званням лауреата та диплом I ступеня, виконавши пісні, які стали візитною карткою Молдови: «Дойна», «Мэріоара», «Ляна».

У 1949—1973 роках Тамара Чебан була солісткою оркестру народних інструментів Ансамблю пісні і танцю «Флуєраш» Молдавської філармонії (нині Національна філармонія імені Сергія Лункевича). Вела активну концертну діяльність. У її репертуарі понад 400 пісень, в тому числі «Ляна», «Моришка», «Лелице Марії», пісні інших народів СРСР, а також твори молдовських композиторів («Нова дойна» Євгенія Коки, «Святкова хору», «Кэнецуе» Георгице тощо).

Гастролювала за кордоном: Румунія, Польща, Чехословаччина, Угорщина, Югославія, Австрія, НДР, Фінляндія, Канада, Монголія, Індія тощо.

Протягом своєї кар'єри співпрацювала з музикантами Сергієм Лункевичем, Давидом Федовим, Г. Ешану, В. Поляковим та ін. У фонді звукових архівів Національного радіо зберігається багато народних пісень у виконанні співачки.

З 1973 по 1985 роки викладала вокал у Кишинівському інституті мистецтв імені Р. Музическу (нині Академія музики, театру і образотворчих мистецтв) (з 1976 року — доцент кафедри вокалу).

З 1972 року — почесний голова Музично-хорового товариства Молдавської РСР.

Член КПРС з 1953 року. Депутат Верховної Ради СРСР 3-5-го скликань (1950—1962).

Пішла з життя 23 жовтня 1990 року в Кишиневі. Похована на Центральному (Вірменському) кладовищі.

Родина

 Батько — Сава Павлович Таратунський, селянин
 Мати — Олександра Петрівна, селянка
 Сестра — Валентина Савеліївна Савицька (. 1927), співачка, народна артистка Молдавської РСР (1964).

Нагороди та звання

 Заслужена артистка Молдавської РСР (1949)
 Народна артистка Молдавської РСР (1953)
 Народна артистка СРСР (1960)
 Сталінська премія третього ступеня (1950) — за виконання молдавських народних пісень
 Орден Леніна (1964)
 Орден Трудового Червоного Прапора (1949)
 Орден Дружби народів (1974)
 Орден Жовтневої Революції.

Фільмографія

  — Молдавські наспіви — співачка

Пам'ять

 На честь Тамари Чебан названі вулиці в Кишиневі, Бєльцях, Дроіїи, Калараші, Оргіїві, Фалештах.
 У 1995 році була випущена поштова марка Молдови, присвячена Тамарі Чебан.
 У Кишиневі, на будинку по вулиці Штефан чел Маре, 132, де жила співачка останні роки життя, встановлена меморіальна дошка.
 З 1989 року, у пам'ять про Тамару Чебан проводиться Національний конкурс виконавців народної пісні, який є сьогодні одним з найпрестижніших у країні.
 У рідному селі співачки Березложі школа і музей носять ім'я Тамари Чебан.

Джерела

 Агин М. С. Вокально-энциклопедический словарь. — Москва, 1991—1994.

Примітки

Посилання

 Біографія на сайті КІНОТЕАТР
 Чебан Тамара Савеліївна — стаття з Великої радянської енциклопедії.

Депутати Верховної Ради СРСР 5-го скликання
Депутати Верховної Ради СРСР 4-го скликання
Депутати Верховної Ради СРСР 3-го скликання
Члени КПРС
Народні артисти Молдавської РСР
Академічні музиканти СРСР
Радянські музичні педагоги
Педагоги за алфавітом
Оперні співаки СРСР
Молдовські оперні співаки
Радянські співачки
Молдовські співачки
Уродженці Бессарабії


The Bankruptcy Law Section is comprised of attorneys, judges and others who practice in the area of bankruptcy law, both business and consumer. Click here to view the Section's bylaws and here to view its 2016 Annual Report.
To promote the professional development and interests of its members and to provide a common meeting ground for attorneys who practice bankruptcy law.


text:
28631 Jacktakahashi è un asteroide della fascia principale. Scoperto nel 2000, presenta un'orbita caratterizzata da un semiasse maggiore pari a 3,0841432 UA e da un'eccentricità di 0,1326789, inclinata di 2,42825° rispetto all'eclittica.

Collegamenti esterni

Jacktakahashi
Corpi celesti scoperti nel 2000


text:
The Beauty in Doing Things the Old Way: thoughts from Boulder's Bow Man.
Taft Montana
The arrow cuts through the rare, high plains air and whips my head from left to right, where I hear it chomp into the target before I see the bull's-eye strike.
I could be on a hunt with the Arapahoe 200 years ago, but it's 2018 and I'm in the center of Boulder, Colorado, with the archer who not only harvested the tree, carved the arrow, affixed the arrow feathers, and sculpted the bow, he did it all by hand, with no power tools and using no modern glues or dyes.
He struck a perfect shot in a balletic lift, pull, and release of his beautiful wooden instrument.
"Great shot," I whisper, meekly.
He just smiles at me, possibly referring to his philosophy of art more than the direct hit. Victor Kühn is a unique craftsman of traditional bows and arrows in the urban Rocky Mountains.
He works out of his shop off of a gravel alley in downtown Boulder. There he stores the osage orange, hackberry, and black locust staves—split tree trunks, five to six feet long—all of which he's hewn after long searches through Oklahoma, Texas, and Kansas. The shop is redolent with freshly sawn wood, dyes he's made from nut husks, roots and mushrooms and syrupy glue of dried animal hide and ligaments.
Ten or so beautiful bows are sculptures hanging on the wall. Some are decorated with snake skin, some have inlaid horn or mother-of-pearl, some have elaborate etchings along the back and belly, and most have hide strips padding the grip. You can smell the authenticity.
"Each kind of tree makes for a different style of bow," Victor tells me. "And even the same kind of tree will give a different wood quality depending on many factors that influence the tree's life."
Victor is sharpening a hatchet for the first cut into a log of hackberry. He braces one end of the six-foot stave on the floor of the workshop and hard against his bare foot. As he works the hatchet he tells me, "People don't realize that the bow was one of the first huge engineering events in human history and it happened about 20,000 years ago. It changed societies."
As he strikes the wood again, seemingly at random, I confess, "I don't see how you're going to turn that big cylinder into something like those beautiful bows hanging on the wall."
"I think of my work as ushering this bow from some other realm into this one," Victor says, as he switches to a draw knife. "If I do my part right, the beauty will surface."
The humility in his carving is also apparent in his passion. "I didn't find this craft," Victor assured me, "it found me. There was no spark. No event that lit up this idea. It just came from inside me. Ever since I can remember I was drawn to anything involving archery, from pictures of ancient cave wall paintings depicting bowhunting scenes to any bent stick resembling a bow, and always thinking what life must have been like long ago when a bow was tool of everyday use."
I asked Victor why he thinks people buy his bows. "People love them for their celebration of history, their beauty, and their functionality. Some buyers hunt with them, target shoot, or just hang them on the wall in appreciation of their decorative or symbolic value," he said.
"A couple of years ago, I met Martín Prechtel, renowned author and teacher, who sees the deeper meaning of things being done the old way with proper respect to all the materials used. He asked me to make him a bow and set of arrows, which I did. When I delivered them to him, he was so pleased, he gifted me a horse," he tells me with a smile.
"Whenever my work is valued like that it gives me the right fuel to keep creating this work of times long gone."
Victor is mostly content with focusing on his work as a craftsman, though he also teaches archery and bow making to adults and children. And, every couple of months or so, he takes his craft public with demonstrations at a Pearl Street retailer: Fjällräven. "I want to give people a chance to learn about this ancient craft," he told me.
Before the end of the day, Victor's carving skills have revealed the outline of the shy bow hiding inside the hackberry pole. In a number of days, his work will usher that bow into existence where the next lucky toxophilite (lover of archery) may be able to guide it to her own home.
To follow Victor's work, or to schedule a visit to his studio, go to his website.
Read 1 Comment and Reply
author: Taft Montana
Image: Courtesy of Castner Photography
Editor: Nicole Cameron
Kyudo. Chogyam Trungpa Rinpoche on Dharma Art, and the Art of Life.
Adventure,Arts,Green,Right Livelihood archery,Boulder,bow and arrow,career advice,craftsman,dharma art,passion,right livelihood,Victor Kühn Elephant Journal