text:
/* eslint-disable no-new */
/* eslint-disable no-undef */
import * as topbar from 'topbar'
import lazySizes from 'lazysizes'
// import ClipboardJS from 'clipboard'
const Tablesort = require('tablesort')
// const autocomplete = require('autocomplete.js')

function escape (unsafe) {
  return unsafe.replace(/&/g, '&')
    .replace(/</g, '<')
    .replace(/>/g, '>')
    .replace(/"/g, '"')
    .replace(/'/g, ''')
}

function forEach (elements, handler) {
  elements = elements || []
  for (let i = 0; i < elements.length; i++) handler(elements[i])
}

function getScrollTop () {
  return (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop
}

function isMobileWindow () {
  return window.matchMedia('only screen and (max-width: 680px)').matches
}

/**
 * Animate the element with AnimateCSS. https://animate.style/
 * @param {HTMLElement} element The element to animate.
 * @param {Array} animation The animation selected.
 * @param {boolean} reserved Whether to execute the callback after the animation is ended.
 * @param {function} callback The callback gets exectued after the element is animated.
 */
function animateCSS (element, animation, reserved, callback) {
  if (!Array.isArray(animation)) animation = [animation]
  element.classList.add('animate__animated', ...animation)
  const handler = () => {
    element.classList.remove('animate__animated', ...animation)
    element.removeEventListener('animationend', handler)
    if (typeof callback === 'function') callback()
  }
  if (!reserved) element.addEventListener('animationend', handler)
}
/**
 * Fetch and initialize all SVG icons.
 */
function initSVGIcon () {
  Array.from(document.querySelectorAll('[data-svg-src]')).forEach(icon => {
    fetch(icon.getAttribute('data-svg-src'))
      .then(response => response.text())
      .then(svg => {
        const temp = document.createElement('div')
        temp.insertAdjacentHTML('afterbegin', svg)
        const dataSvg = temp.firstChild
        dataSvg.setAttribute('data-svg-src', icon.getAttribute('data-svg-src'))
        dataSvg.classList.add('icon')
        const titleElements = dataSvg.getElementsByTagName('title')
        if (titleElements.length) dataSvg.removeChild(titleElements[0])
        icon.parentElement.replaceChild(dataSvg, icon)
      })
  })
}

/**
 * Initialize the mobile menu bar.
 */
function initMenuMobile () {
  const menuToggleMobile = document.getElementById('menu-toggle-mobile')
  const menuMobile = document.getElementById('menu-mobile')
  // If no event listener has been registered yet, add one.
  if (!window.menuToggleMobileEventListener) {
    menuToggleMobile.addEventListener('click', () => {
      document.body.classList.toggle('blur')
      menuToggleMobile.classList.toggle('active')
      menuMobile.classList.toggle('active')
    })
    window.menuToggleMobileEventListener = true
  }
  // Remove the mask when click on it.
  window._menuMobileOnClickMask = () => {
    menuToggleMobile.classList.remove('active')
    menuMobile.classList.remove('active')
  }
  window.clickMaskEventSet.add(window._menuMobileOnClickMask)
}

/**
 * Set the color theme
 * @param {string} theme
 */
function setColorTheme (theme) {
  // set body attribute for CSS selector
  document.body.setAttribute('theme', theme)
  // set root color scheme
  // https://developer.mozilla.org/en-US/docs/Web/CSS/color-scheme
  document.documentElement.style.setProperty('color-scheme', theme === 'light' ? 'light' : 'dark')
  // save to local storage
  window.localStorage && localStorage.setItem('theme', theme)
  // set window.isDark for js
  window.isDark = !(theme === 'light')
}

/**
 * Initialize the switch theme button.
 */
function initSwitchTheme () {
  Array.from(document.getElementsByClassName('theme-switch')).forEach(themeSwitch => {
    themeSwitch.addEventListener('click', () => {
      const currentTheme = document.body.getAttribute('theme')
      if (currentTheme === 'dark') {
        setColorTheme('black')
      } else if (currentTheme === 'black') {
        setColorTheme('light')
      } else {
        setColorTheme('dark')
      }
      for (const event of window.switchThemeEventSet) event()
    })
  })
}

/**
 * Initialize the select theme button.
 */
function initSelectTheme () {
  Array.from(document.getElementsByClassName('color-theme-select')).forEach(themeSelect => {
    // Get the current theme
    const currentTheme = document.body.getAttribute('theme')
    // Set the selected Index
    for (let j = 0; j < themeSelect.options.length; j++) {
      const i = themeSelect.options[j]
      if (i.value === currentTheme) {
        themeSelect.selectedIndex = j
        break
      }
    }

    themeSelect.addEventListener('change', () => {
      const theme = themeSelect.value
      window.localStorage && localStorage.setItem('theme', theme)
      if (theme !== 'auto') {
        setColorTheme(theme)
      } else {
        if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
          setColorTheme('dark')
        } else {
          setColorTheme('light')
        }
      }
      for (const event of window.switchThemeEventSet) event()
    })
  })
}

/**
 * Initialize the search box.
 * @returns {null}
 */
function initSearch () {
  const searchConfig = window.config.search
  const isMobile = window.matchMedia && window.matchMedia('only screen and (max-width: 680px)').matches
  // If there is no search config
  // Or the search has been initialized already
  // Return directly
  if (!searchConfig || (isMobile && window._searchMobileOnce) || (!isMobile && window._searchDesktopOnce)) return

  // Initialize default search config
  const maxResultLength = searchConfig.maxResultLength ? searchConfig.maxResultLength : 10
  const snippetLength = searchConfig.snippetLength ? searchConfig.snippetLength : 50
  const highlightTag = searchConfig.highlightTag ? searchConfig.highlightTag : 'em'
  const isCaseSensitive = searchConfig.isCaseSensitive ? searchConfig.isCaseSensitive : false
  const minMatchCharLength = searchConfig.minMatchCharLength ? searchConfig.minMatchCharLength : 1
  const findAllMatches = searchConfig.findAllMatches ? searchConfig.findAllMatches : false
  const location = searchConfig.location ? searchConfig.location : 0
  const threshold = searchConfig.threshold ? searchConfig.threshold : 0.3
  const distance = searchConfig.distance ? searchConfig.distance : 100
  const ignoreLocation = searchConfig.ignoreLocation ? searchConfig.ignoreLocation : false
  const useExtendedSearch = searchConfig.useExtendedSearch ? searchConfig.useExtendedSearch : false
  const ignoreFieldNorm = searchConfig.ignoreFieldNorm ? searchConfig.ignoreFieldNorm : false
  const suffix = isMobile ? 'mobile' : 'desktop'
  const header = document.getElementById(`header-${suffix}`)
  const searchInput = document.getElementById(`search-input-${suffix}`)
  const searchToggle = document.getElementById(`search-toggle-${suffix}`)
  const searchLoading = document.getElementById(`search-loading-${suffix}`)
  const searchClear = document.getElementById(`search-clear-${suffix}`)

  if (isMobile) {
    window._searchMobileOnce = true
    // Turn on the mask when clicking on the search button
    searchInput.addEventListener('focus', () => {
      document.body.classList.add('blur')
      header.classList.add('open')
    })
    // Turn off the everything when clicking on the cancel button
    document.getElementById('search-cancel-mobile').addEventListener('click', () => {
      header.classList.remove('open')
      document.body.classList.remove('blur')
      document.getElementById('menu-toggle-mobile').classList.remove('active')
      document.getElementById('menu-mobile').classList.remove('active')
      searchLoading.style.display = 'none'
      searchClear.style.display = 'none'
      window._searchMobile && window._searchMobile.autocomplete.setVal('')
    })
    // Clear the search box when clicking on the clear button
    searchClear.addEventListener('click', () => {
      searchClear.style.display = 'none'
      window._searchMobile && window._searchMobile.autocomplete.setVal('')
    }, false)
    // Remove the mask when click on it or pjax:send
    window._searchMobileOnClickMask = () => {
      header.classList.remove('open')
      searchLoading.style.display = 'none'
      searchClear.style.display = 'none'
      window._searchMobile && window._searchMobile.autocomplete.setVal('')
    }
    window.clickMaskEventSet.add(window._searchMobileOnClickMask)
    window.pjaxSendEventSet.add(window._searchMobileOnClickMask)
  } else {
    window._searchDesktopOnce = true
    // Turn on the mask when clicking on the search button
    searchToggle.addEventListener('click', () => {
      document.body.classList.add('blur')
      header.classList.add('open')
      searchInput.focus()
    })
    // Clear the search box when clicking on the clear button
    searchClear.addEventListener('click', () => {
      searchClear.style.display = 'none'
      window._searchDesktop && window._searchDesktop.autocomplete.setVal('')
    })
    // Toggle search when Ctrl + K is pressed
    document.addEventListener('keydown', e => {
      if (e.ctrlKey && e.code === 'KeyK') {
        e.preventDefault()
        searchToggle.click()
      }
    })
    // Remove the mask when click on it or pjax:send
    window._searchDesktopOnClickMask = () => {
      header.classList.remove('open')
      searchLoading.style.display = 'none'
      searchClear.style.display = 'none'
      window._searchDesktop && window._searchDesktop.autocomplete.setVal('')
    }
    window.clickMaskEventSet.add(window._searchDesktopOnClickMask)
    window.pjaxSendEventSet.add(window._searchDesktopOnClickMask)
  }
  // Reset _searchDesktopOnce when pjax:send
  window.pjaxSendEventSet.add(() => { window._searchDesktopOnce = false; window._searchMobileOnce = false })
  // Display the clear button only when the search box is not empty
  searchInput.addEventListener('input', () => {
    if (searchInput.value === '') searchClear.style.display = 'none'
    else searchClear.style.display = 'inline'
  })

  const initAutosearch = () => {
    const autosearch = autocomplete(`#search-input-${suffix}`, {
      hint: false,
      autoselect: true,
      dropdownMenuContainer: `#search-dropdown-${suffix}`,
      clearOnSelected: true,
      cssClasses: { noPrefix: true },
      debug: true
    }, {
      name: 'search',
      source: (query, callback) => {
        searchLoading.style.display = 'inline'
        searchClear.style.display = 'none'
        const finish = (results) => {
          searchLoading.style.display = 'none'
          searchClear.style.display = 'inline'
          callback(results)
        }
        if (searchConfig.type === 'lunr') {
          const search = () => {
            if (lunr.queryHandler) query = lunr.queryHandler(query)
            const results = {}
            window._index.search(query).forEach(({ ref, matchData: { metadata } }) => {
              const matchData = window._indexData[ref]
              let { uri, title, content: context } = matchData
              if (results[uri]) return
              let position = 0
              Object.values(metadata).forEach(({ content }) => {
                if (content) {
                  const matchPosition = content.position[0][0]
                  if (matchPosition < position || position === 0) position = matchPosition
                }
              })
              position -= snippetLength / 5
              if (position > 0) {
                position += context.substr(position, 20).lastIndexOf(' ') + 1
                context = '...' + context.substr(position, snippetLength)
              } else {
                context = context.substr(0, snippetLength)
              }
              Object.keys(metadata).forEach(key => {
                title = title.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1</${highlightTag}>`)
                context = context.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1</${highlightTag}>`)
              })
              results[uri] = {
                uri: uri,
                title: title,
                date: matchData.date,
                context: context
              }
            })
            return Object.values(results).slice(0, maxResultLength)
          }
          if (!window._index) {
            fetch(searchConfig.lunrIndexURL)
              .then(response => response.json())
              .then(data => {
                const indexData = {}
                window._index = lunr(function () {
                  if (searchConfig.lunrLanguageCode) this.use(lunr[searchConfig.lunrLanguageCode])
                  this.ref('objectID')
                  this.field('title', { boost: 50 })
                  this.field('tags', { boost: 20 })
                  this.field('categories', { boost: 20 })
                  this.field('content', { boost: 10 })
                  this.metadataWhitelist = ['position']
                  data.forEach((record) => {
                    indexData[record.objectID] = record
                    this.add(record)
                  })
                })
                window._indexData = indexData
                finish(search())
              }).catch(err => {
                console.error(err)
                finish([])
              })
          } else finish(search())
        } else if (searchConfig.type === 'algolia') {
          window._algoliaIndex = window._algoliaIndex || algoliasearch(searchConfig.algoliaAppID, searchConfig.algoliaSearchKey).initIndex(searchConfig.algoliaIndex)
          window._algoliaIndex
            .search(query, {
              offset: 0,
              length: maxResultLength * 8,
              attributesToHighlight: ['title'],
              attributesToRetrieve: ['*'],
              attributesToSnippet: [`content:${snippetLength}`],
              highlightPreTag: `<${highlightTag}>`,
              highlightPostTag: `</${highlightTag}>`
            })
            .then(({ hits }) => {
              const results = {}
              hits.forEach(({ uri, date, _highlightResult: { title }, _snippetResult: { content } }) => {
                if (results[uri] && results[uri].context.length > content.value) return
                results[uri] = {
                  uri: uri,
                  title: title.value,
                  date: date,
                  context: content.value
                }
              })
              finish(Object.values(results).slice(0, maxResultLength))
            })
            .catch(err => {
              console.error(err)
              finish([])
            })
        } else if (searchConfig.type === 'fuse') {
          const search = () => {
            const results = {}
            window._index.search(query).forEach(({ item, refIndex, matches }) => {
              let title = item.title
              let content = item.content
              matches.forEach(({ indices, value, key }) => {
                if (key === 'content') {
                  let offset = 0
                  for (let i = 0; i < indices.length; i++) {
                    const substr = content.substring(indices[i][0] + offset, indices[i][1] + 1 + offset)
                    const tag = `<${highlightTag}>` + substr + `</${highlightTag}>`
                    content = content.substring(0, indices[i][0] + offset) + tag + content.substring(indices[i][1] + 1 + offset, content.length)
                    offset += highlightTag.length * 2 + 5
                  }
                } else if (key === 'title') {
                  let offset = 0
                  for (let i = 0; i < indices.length; i++) {
                    const substr = title.substring(indices[i][0] + offset, indices[i][1] + 1 + offset)
                    const tag = `<${highlightTag}>` + substr + `</${highlightTag}>`
                    title = title.substring(0, indices[i][0] + offset) + tag + title.substring(indices[i][1] + 1 + offset, content.length)
                    offset += highlightTag.length * 2 + 5
                  }
                }
              })
              results[item.uri] = {
                uri: item.uri,
                title: title,
                date: item.date,
                context: content
              }
            })
            return Object.values(results).slice(0, maxResultLength)
          }
          if (!window._index) {
            fetch(searchConfig.fuseIndexURL)
              .then(response => response.json())
              .then(data => {
                const options = {
                  isCaseSensitive: isCaseSensitive,
                  findAllMatches: findAllMatches,
                  minMatchCharLength: minMatchCharLength,
                  location: location,
                  threshold: threshold,
                  distance: distance,
                  ignoreLocation: ignoreLocation,
                  useExtendedSearch: useExtendedSearch,
                  ignoreFieldNorm: ignoreFieldNorm,
                  includeScore: false,
                  shouldSort: true,
                  includeMatches: true,
                  keys: [
                    'content',
                    'title'
                  ]
                }
                window._index = new Fuse(data, options)
                finish(search())
              }).catch(err => {
                console.error(err)
                finish([])
              })
          } else finish(search())
        }
      },
      templates: {
        suggestion: ({ title, date, context }) => `<div><span class="suggestion-title">${title}</span><span class="suggestion-date">${date}</span></div><div class="suggestion-context">${(context)}</div>`,
        empty: ({ query }) => `<div class="search-empty">${searchConfig.noResultsFound}: <span class="search-query">"${escape(query)}"</span></div>`,
        footer: () => {
          const { searchType, icon, href } = searchConfig.type === 'algolia'
            ? {
                searchType: 'algolia',
                icon: '<i class="fab fa-algolia fa-fw"></i>',
                href: 'https://www.algolia.com/'
              }
            : (searchConfig.type === 'lunr'
                ? {
                    searchType: 'Lunr.js',
                    icon: '',
                    href: 'https://lunrjs.com/'
                  }
                : {
                    searchType: 'Fuse.js',
                    icon: '',
                    href: 'https://fusejs.io/'
                  })
          return `<div class="search-footer">Search by <a href="${href}" rel="noopener noreffer" target="_blank">${icon} ${searchType}</a></div>`
        }
      }
    })
    autosearch.on('autocomplete:selected', (_event, suggestion, _dataset, _context) => {
      window.location.assign(suggestion.uri)
    })
    if (isMobile) window._searchMobile = autosearch
    else window._searchDesktop = autosearch
  }
  if (searchConfig.lunrSegmentitURL && !document.getElementById('lunr-segmentit')) {
    const script = document.createElement('script')
    script.id = 'lunr-segmentit'
    script.type = 'text/javascript'
    script.src = searchConfig.lunrSegmentitURL
    script.async = true
    if (script.readyState) {
      script.onreadystatechange = () => {
        if (script.readyState === 'loaded' || script.readyState === 'complete') {
          script.onreadystatechange = null
          initAutosearch()
        }
      }
    } else {
      script.onload = () => {
        initAutosearch()
      }
    }
    document.body.appendChild(script)
  } else initAutosearch()
}

function initDetails () {
  forEach(document.getElementsByClassName('details'), $details => {
    const $summary = $details.getElementsByClassName('details-summary')[0]
    $summary.addEventListener('click', () => {
      $details.classList.toggle('open')
    }, false)
  })
}

function initLightGallery () {
  if (window.config.lightGallery) {
    lightGallery(document.getElementById('content'), window.config.lightGallery)
  }
}

function initHighlight () {
  forEach(document.querySelectorAll('.highlight > pre.chroma'), $preChroma => {
    const $chroma = document.createElement('div')
    $chroma.className = $preChroma.className
    const $table = document.createElement('table')
    $chroma.appendChild($table)
    const $tbody = document.createElement('tbody')
    $table.appendChild($tbody)
    const $tr = document.createElement('tr')
    $tbody.appendChild($tr)
    const $td = document.createElement('td')
    $tr.appendChild($td)
    $preChroma.parentElement.replaceChild($chroma, $preChroma)
    $td.appendChild($preChroma)
  })
  forEach(document.querySelectorAll('.highlight > .chroma'), $chroma => {
    const $codeElements = $chroma.querySelectorAll('pre.chroma > code')
    if ($codeElements.length) {
      const $code = $codeElements[$codeElements.length - 1]
      const $header = document.createElement('div')
      $header.className = 'code-header ' + $code.className.toLowerCase()
      const $title = document.createElement('span')
      $title.classList.add('code-title')
      $title.insertAdjacentHTML('afterbegin', '<i class="arrow fas fa-chevron-right fa-fw"></i>')
      $title.addEventListener('click', () => {
        $chroma.classList.toggle('open')
      }, false)
      $header.appendChild($title)
      const $ellipses = document.createElement('span')
      $ellipses.insertAdjacentHTML('afterbegin', '<i class="fas fa-ellipsis-h fa-fw"></i>')
      $ellipses.classList.add('ellipses')
      $ellipses.addEventListener('click', () => {
        $chroma.classList.add('open')
      }, false)
      $header.appendChild($ellipses)
      const $copy = document.createElement('span')
      $copy.insertAdjacentHTML('afterbegin', '<i class="far fa-copy fa-fw"></i>')
      $copy.classList.add('copy')
      const code = $code.innerText
      if (window.config.code.maxShownLines < 0 || code.split('\n').length < window.config.code.maxShownLines + 2) $chroma.classList.add('open')
      if (window.config.code.copyTitle) {
        $copy.setAttribute('data-clipboard-text', code)
        $copy.title = window.config.code.copyTitle
        const clipboard = new ClipboardJS($copy)
        clipboard.on('success', _e => {
          animateCSS($code, 'animate__flash')
          $copy.firstElementChild.className = 'fas fa-check fa-fw'
          setTimeout(() => {
            $copy.firstElementChild.className = 'far fa-copy fa-fw'
          }, 3000)
        })
        $header.appendChild($copy)
      }
      $chroma.insertBefore($header, $chroma.firstChild)
    }
  })
}

function initTable () {
  forEach(document.querySelectorAll('.content table'), $table => {
    const $wrapper = document.createElement('div')
    $wrapper.className = 'table-wrapper'
    $table.parentElement.replaceChild($wrapper, $table)
    $wrapper.appendChild($table)
    if (window.config?.table?.sort) {
      new Tablesort($table)
    }
  })
}

function initToc () {
  const tocCore = document.getElementById('TableOfContents')
  // Return directly if no toc
  if (tocCore === null) return
  const isTocStatic = window.matchMedia && window.matchMedia('only screen and (max-width: 1000px)').matches

  if (document.getElementById('toc-static').getAttribute('kept') || isTocStatic) {
    if (window._tocOnScroll) window.scrollEventSet.delete(window._tocOnScroll)
  } else {
    const toc = document.getElementById('toc-auto')
    const tocLinkElements = tocCore.querySelectorAll('a:first-child')
    const tocLiElements = tocCore.getElementsByTagName('li')
    const headerLinkElements = document.getElementsByClassName('headerLink')
    const headerIsFixed = document.body.getAttribute('header-desktop') !== 'normal'
    const headerHeight = document.getElementById('header-desktop').offsetHeight
    const TOP_SPACING = 20 + (headerIsFixed ? headerHeight : 0)
    const minTocTop = toc.offsetTop
    const minScrollTop = minTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight)
    window._tocOnScroll = window._tocOnScroll || (() => {
      const footerTop = document.getElementById('post-footer').offsetTop
      const maxTocTop = footerTop - toc.getBoundingClientRect().height
      const maxScrollTop = maxTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight)
      if (window.newScrollTop < minScrollTop) {
        // If scroll to the top of the page
        // Set toc to absolute
        toc.style.position = 'absolute'
        toc.style.top = `${minTocTop}px`
      } else if (window.newScrollTop > maxScrollTop) {
        // If scroll to the bottom of the page
        // Set toc to absolute
        toc.style.position = 'absolute'
        toc.style.top = `${maxTocTop}px`
      } else {
        // If in the middle
        // Set toc to fixed with TOP_SPACING
        toc.style.position = 'fixed'
        toc.style.top = `${TOP_SPACING}px`
      }
      // Update the active toc link
      // Return directly if no toc link
      if (tocLinkElements.length === 0) return

      let activeTocIndex = -1
      const INDEX_SPACING = TOP_SPACING + window.newScrollTop
      // If the INDEX_SPACING is below the last header link
      // activate the last element
      if (headerLinkElements[headerLinkElements.length - 1].offsetTop < INDEX_SPACING) {
        activeTocIndex = headerLinkElements.length - 1
      } else {
        // Otherwise activate the element that is in between
        // Use offsetTop instead of getBoundingClientRect().top for better performance
        for (let i = 0; i < headerLinkElements.length - 1; i++) {
          const thisTop = headerLinkElements[i].offsetTop
          const nextTop = headerLinkElements[i + 1].offsetTop
          if (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING) {
            activeTocIndex = i
            break
          }
        }
      }
      // Remove all legacy states
      Array.from(tocLinkElements).forEach(tocLink => tocLink.classList.remove('active'))
      Array.from(tocLiElements).forEach(tocLi => tocLi.classList.remove('has-active'))

      // Set the tocLinkElement to active
      // and all its parent to has-active
      if (activeTocIndex >= 0 && activeTocIndex < tocLinkElements.length) {
        tocLinkElements[activeTocIndex].classList.add('active')
        // tocLinkElements[activeTocIndex].scrollIntoView({
        //   behavior: 'smooth',
        //   block: 'center'
        // })
        let parent = tocLinkElements[activeTocIndex].parentElement
        while (parent !== tocCore) {
          parent.classList.add('has-active')
          parent = parent.parentElement.parentElement
        }
      }
      // Update the broswer history
      if (activeTocIndex !== -1) history.replaceState(history.state, null, tocLinkElements[activeTocIndex].href)
    })
    window._tocOnScroll()
    window.scrollEventSet.add(window._tocOnScroll)
  }
}

function initMapbox () {
  if (window.config.mapbox) {
    mapboxgl.accessToken = window.config.mapbox.accessToken
    mapboxgl.setRTLTextPlugin(window.config.mapbox.RTLTextPlugin)
    window._mapboxArr = window._mapboxArr || []
    forEach(document.getElementsByClassName('mapbox'), $mapbox => {
      const { lng, lat, zoom, lightStyle, darkStyle, marked, navigation, geolocate, scale, fullscreen } = window.config.data[$mapbox.id]
      const mapbox = new mapboxgl.Map({
        container: $mapbox,
        center: [lng, lat],
        zoom: zoom,
        minZoom: 0.2,
        style: window.isDark ? darkStyle : lightStyle,
        attributionControl: false
      })
      if (marked) {
        new mapboxgl.Marker().setLngLat([lng, lat]).addTo(mapbox)
      }
      if (navigation) {
        mapbox.addControl(new mapboxgl.NavigationControl(), 'bottom-right')
      }
      if (geolocate) {
        mapbox.addControl(new mapboxgl.GeolocateControl({
          positionOptions: {
            enableHighAccuracy: true
          },
          showUserLocation: true,
          trackUserLocation: true
        }), 'bottom-right')
      }
      if (scale) {
        mapbox.addControl(new mapboxgl.ScaleControl())
      }
      if (fullscreen) {
        mapbox.addControl(new mapboxgl.FullscreenControl())
      }
      mapbox.addControl(new MapboxLanguage())
      window._mapboxArr.push(mapbox)
    })
    window._mapboxOnSwitchTheme = () => {
      forEach(window._mapboxArr, mapbox => {
        const $mapbox = mapbox.getContainer()
        const { lightStyle, darkStyle } = window.config.data[$mapbox.id]
        mapbox.setStyle(window.isDark ? darkStyle : lightStyle)
        mapbox.addControl(new MapboxLanguage())
      })
    }
    window.switchThemeEventSet.add(window._mapboxOnSwitchTheme)
  }
}

function initTypeit () {
  if (window.config.typeit) {
    const typeitConfig = window.config.typeit
    const speed = typeitConfig.speed ? typeitConfig.speed : 100
    const cursorSpeed = typeitConfig.cursorSpeed ? typeitConfig.cursorSpeed : 1000
    const cursorChar = typeitConfig.cursorChar ? typeitConfig.cursorChar : '|'
    Object.values(typeitConfig.data).forEach(group => {
      const typeone = (i) => {
        const id = group[i]
        if (!document.getElementById(id).hasAttribute('data-typeit-id')) {
          const instance = new TypeIt(`#${id}`, {
            strings: window.config.data[id],
            speed: speed,
            lifeLike: true,
            cursorSpeed: cursorSpeed,
            cursorChar: cursorChar,
            waitUntilVisible: true,
            afterComplete: () => {
              if (i === group.length - 1) {
                if (typeitConfig.duration >= 0) {
                  window.setTimeout(() => {
                    instance.destroy()
                  }, typeitConfig.duration)
                }
                return
              }
              instance.destroy()
              typeone(i + 1)
            }
          }).go()
        }
      }
      typeone(0)
    })
  }
}

function initMeta () {
  function getMeta (metaName) {
    const metas = document.getElementsByTagName('meta')
    for (let i = 0; i < metas.length; i++) {
      if (metas[i].getAttribute('name') === metaName) {
        return metas[i]
      }
    }
  }
  const themeColorMeta = getMeta('theme-color')
  const metaColors = {
    light: '#f8f8f8',
    dark: '#252627',
    black: '#000000'
  }
  window._metaThemeColorOnSwitchTheme = () => {
    themeColorMeta.content = metaColors[document.body.getAttribute('theme')]
  }
  window.switchThemeEventSet.add(window._metaThemeColorOnSwitchTheme)
  window._metaThemeColorOnSwitchTheme()
}

function onScroll () {
  const $headers = []
  const $viewComments = document.getElementById('view-comments')
  if (document.body.getAttribute('header-desktop') === 'auto') $headers.push(document.getElementById('header-desktop'))
  if (document.body.getAttribute('header-mobile') === 'auto') $headers.push(document.getElementById('header-mobile'))
  if (document.getElementById('comments')) {
    $viewComments.href = '#comments'
    $viewComments.style.display = 'block'
  } else {
    $viewComments.style.display = 'null'
  }
  const $fixedButtons = document.getElementById('fixed-buttons')
  const ACCURACY = 20; const MINIMUM = 100
  function handleScrollEvent () {
    window.newScrollTop = getScrollTop()
    const scroll = window.newScrollTop - window.oldScrollTop
    const isMobile = isMobileWindow()
    forEach($headers, $header => {
      if (scroll > ACCURACY) {
        $header.classList.remove('animate__fadeInDown')
        animateCSS($header, ['animate__fadeOutUp', 'animate__faster'], true)
      } else if (scroll < -ACCURACY || window.newScrollTop <= 20) {
        $header.classList.remove('animate__fadeOutUp')
        animateCSS($header, ['animate__fadeInDown', 'animate__faster'], true)
      }
    })
    if (window.newScrollTop > MINIMUM) {
      if (isMobile && scroll > ACCURACY) {
        $fixedButtons.classList.remove('animate__fadeIn')
        animateCSS($fixedButtons, ['animate__fadeOut', 'animate__faster'], true)
      } else if (!isMobile || scroll < -ACCURACY) {
        $fixedButtons.style.display = 'block'
        $fixedButtons.classList.remove('animate__fadeOut')
        animateCSS($fixedButtons, ['animate__fadeIn', 'animate__faster'], true)
      }
    } else {
      if (!isMobile) {
        $fixedButtons.classList.remove('animate__fadeIn')
        animateCSS($fixedButtons, ['animate__fadeOut', 'animate__faster'], true)
      }
      $fixedButtons.style.display = 'none'
    }
    for (const event of window.scrollEventSet) event()
    window.oldScrollTop = window.newScrollTop
  }
  window.addEventListener('scroll', handleScrollEvent, false)
  document.addEventListener('pjax:send', function () {
    window.removeEventListener('scroll', handleScrollEvent)
  })
}

function onResize () {
  window.addEventListener('resize', () => {
    if (!window._resizeTimeout) {
      window._resizeTimeout = window.setTimeout(() => {
        window._resizeTimeout = null
        for (const event of window.resizeEventSet) event()
        initSearch()
      }, 100)
    }
  }, false)
}

function onClickMask () {
  document.getElementById('mask').addEventListener('click', () => {
    for (const event of window.clickMaskEventSet) event()
    document.body.classList.remove('blur')
  }, false)
}

function init () {
  window.isDark = document.body.getAttribute('theme') !== 'light'
  window.newScrollTop = getScrollTop()
  window.oldScrollTop = window.newScrollTop
  window.scrollEventSet = new Set()
  window.resizeEventSet = new Set()
  window.switchThemeEventSet = new Set()
  window.clickMaskEventSet = new Set()
  window.pjaxSendEventSet = new Set()
  if (window.objectFitImages) objectFitImages()
  initSVGIcon()
  initMenuMobile()
  initSwitchTheme()
  initSelectTheme()
  initMeta()
  initSearch()
  initDetails()
  initLightGallery()
  initHighlight()
  initTable()
  initTypeit()
  initMapbox()
  initToc()
  onScroll()
  onResize()
  onClickMask()
  lazySizes.init()
}

init()

new Pjax({
  selectors: [
    '.pjax-title',
    'main',
    '.menu-item',
    '.pjax-assets',
    '#fixed-buttons',
    '.search-dropdown'
  ]
})

document.addEventListener('pjax:success', function () {
  init()
  // refresh analytics
  if (typeof gtag === 'function') {
    gtag('event', 'pageview', { page_location: window.location.href })
  }

  if (typeof fathom === 'function') {
    fathom('trackPageview')
  }

  if (typeof _hmt !== 'undefined' && typeof _hmt.push === 'function') {
    _hmt.push(['_trackPageview', window.location.pathname])
  }
})

document.addEventListener('pjax:send', function () {
  for (const event of window.pjaxSendEventSet) event()
  for (const event of window.clickMaskEventSet) event()
  document.body.classList.remove('blur')
  delete window._tocOnScroll
  const el = document.getElementById('content')
  if (el) {
    window.lgData[el?.getAttribute('lg-uid')]?.destroy(true)
  }
})

topbar.config({
  autoRun: true,
  barThickness: 3,
  barColors: {
    0: '#55bde2'
  },
  shadowBlur: 0,
  shadowColor: 'rgba(0, 0, 0, .5)',
  className: 'topbar'
})
document.addEventListener('pjax:send', topbar.show)
document.addEventListener('pjax:complete', topbar.hide)
document.addEventListener('pjax:error', topbar.hide)

redpajama_set_name: RedPajamaGithub


"You've gathered lavender from the field. How lovely!"
The campers gathered wood to build a fire.
A crowd gathered to see the car accident.
"Would you gather some herbs from the garden?"
There are other meanings of gather.


text:
Distributed category-specific recognition-memory signals in human perirhinal cortex.
Chris B Martin, Department of Psychology, The Brain and Mind Institute, Western University, London, Ontario, Canada & Department of Psychology, University of Toronto, Toronto, Ontario, Canada
Rosemary A Cowell, Department of Psychological and Brain Sciences, University of Massachusetts, Amherst, Massachusetts
Paul L Gribble, Department of Psychology, The Brain and Mind Institute, Western University, London, Ontario, Canada & Department of Physiology and Pharmacology, Western University, London, Ontario, Canada
Jessey Wright, Rotman Institute of Philosophy, Western University, London, Ontario, Canada & Department of Philosophy, Western University, London, Ontario, Canada
Stefan Köhler, Department of Psychology, The Brain and Mind Institute, Western University, London, Ontario, Canada & Baycrest Centre, Rotman Research Institute, Toronto, Ontario, Canada
10.1002/hipo.22531
Evidence from a large body of research suggests that perirhinal cortex (PrC), which interfaces the medial temporal lobe with the ventral visual pathway for object identification, plays a critical role in item-based recognition memory. The precise manner in which PrC codes for the prior occurrence of objects, however, remains poorly understood. In the present functional magnetic resonance imaging (fMRI) study, we used multivoxel pattern analyses to examine whether the prior occurrence of faces is coded by distributed patterns of PrC activity that consist of voxels with decreases as well as increases in signal. We also investigated whether pertinent voxels are preferentially tuned to the specific object category to which judged stimuli belong. We found that, when no a priori constraints were imposed on the direction of signal change, activity patterns that allowed for successful classification of recognition-memory decisions included some voxels with decreases and others with increases in signal in association with perceived prior occurrence. Moreover, successful classification was obtained in the absence of a mean difference in activity across the set of voxels in these patterns. Critically, we observed a positive relationship between classifier accuracy and behavioral performance across participants. Additional analyses revealed that voxels carrying diagnostic information for classification of memory decisions showed category specificity in their tuning for faces when probed with an independent functional localizer in a nonmnemonic task context. These voxels were spatially distributed in PrC, and extended beyond the contiguous voxel clusters previously described as the anterior temporal face patch. Our findings provide support for proposals, recently raised in the neurophysiological literature, that the prior occurrence of objects is coded by distributed PrC representations. They also suggest that the stimulus category to which an item belongs shapes the organization of these distributed representations.

redpajama_set_name: RedPajamaCommonCrawl


text:
Basrans protest over abuse video
More than 1000 protesters burned a British flag and the regional administration in Iraq's main southern province severed ties with British authorities over video footage showing British soldiers beating Iraqi youths two years ago.
Protesters chant slogans against Denmark and Britain in Basra
In London, the British Defence Ministry announced the arrest of two more people in connection with the images that appear to show British soldiers abusing Iraqi civilians, the Defence Ministry said on Tuesday. Another person, apparently the cameraman who shot the video, was arrested on Monday.
Protesters, many of them supporters of Shia cleric Muqtada al-Sadr, marched on the British consulate in Basra, where they burned a British flag and shouted slogans against the alleged abuse of the youths during a riot on 10 January 2004, in the southern city of Amarah.
With outrage over the video mounting, the governing council for Basra province, which includes Iraq's massive southern oilfields, announced that it was cutting all ties with British military and civilian operations in the area.
Major-General Hassan Suwadi, the Basra police chief, said Iraqi security forces would cease joint patrols with the British military throughout the province to protest against the abuse.
Footage of alleged abuses wasrevealed by a British newspaper
Footage of alleged abuses was
revealed by a British newspaper
"We condemn the abuse of the British forces and demand the British government to adopt legal procedures as soon as possible to punish its soldiers who carried out the abuse," Suwadi told The Associated Press.
In Amarah, two Iraqis who claimed to have been beaten on the video – Bassem Shaker and Tariq Abdul-Razzak – told reporters they would seek compensation from Britain.
Danish troops
The Basra authorities also demanded the 530-member Danish military contingent leave unless the Danish government apologises for the contentious Prophet Muhammad cartoons that appeared in Danish and European newspapers.
Denmark's defence minister on Tuesday rejected the demand.
On Tuesday, armed men attacked a group of Iraqi Shia working on a farm north of Baghdad, killing 11 and wounding two, a police chief and hospital official said.
Brigadier Mohammed al-Baldawi, the police chief, said eight members of the same family were killed, including Shaikh Hussein al-Hayali, owner of the farm in Balad, 80km north of Baghdad.
The attack happened shortly before midday when unidentified armed men sprayed gun fire at a group of farm workers, said al-Baldawi.
Eleven people were killed and two wounded, said Dr Qassim al-Qaisi of Balad Hospital where the victims were taken.
Marine killed
One marine was killed and six US-allied troops were wounded in two attacks in Baghdad, the US military said. The military press office said it did not know the nationality of the victims.
Sergeant Stan Lavery said a roadside bomb targeted a military vehicle at 10.30am in Abu Ghraib, western Baghdad, killing one soldier and wounding two others.
About an hour later, another convoy was attacked in Baghdad's western Salaam area, wounding four soldiers.
Fighters also shot dead an Iraqi army major and his son in Taji, 20km north of Baghdad, early on Tuesday, the US military said in a statement.
At least 12 Iraqis were wounded in a series of roadside bombings and mortar barrages across Baghdad, while police found the bullet-riddled bodies of eight men in locations throughout the capital.
The identities of the victims were unknown.


January 4, 2010 – Wellington, Florida – Join JustWorld International for 'A Night in Paris' in support of its eighth annual fundraiser on Friday, January 21, 2011, in Wellington, Florida. JustWorld International is a not-for-profit, humanitarian organization working as a catalyst for positive change in the developing world by helping impoverished children.
Held at Maria Newman's stunning Belle Herbe Farm in Grand Prix Village, 'A Night in Paris' will take place in the presence of the Consul General of France in Miami, Mrs. Gael de Maisonneuve. The Parisian theme will be reflected through food, drinks and entertainment as the who's who of the Wellington equestrian and social scene celebrate the past success stories of JustWorld International and fundraise for future accomplishments.
A sell-out every year since its inception, the annual fundraising event is the main source of income for supporting JustWorld's project sites in Brazil, Cambodia, Guatemala, Honduras, and Senegal.
Parisian culture will be at the forefront of the 'A Night in Paris' fundraiser with champagne and fine wine accompanying French cuisine specially created by event sponsor, Whole Foods. Cabaret dancers will encourage guests to kick up their heels, especially as they stroll through the sumptuous food stations, featuring a variety of delicacies, and the silent auction offerings. As always, a few very special and highly sought-after items will be offered in the live auction, including a one-week stay in a two bedroom, two bathroom apartment in the exclusive Ile Saint-Louis in Paris.
To buy tickets or tables for 'A Night in Paris,' please call (561) 333-9391 or e-mail jwinfo@justworldinternational.org. Several sponsorship levels, including Grand Prix, Platinum, Gold, Silver and Bronze level, are also available – benefits and further details can be found on the JustWorld website homepage, www.justworldinternational.org.
Founded in 2002, JustWorld International raises awareness and funds in the equestrian community to support humanitarian projects that benefit impoverished communities and children in the developing world. Cooperating with local partners, JustWorld International implements sustainable, culturally sensitive education, health and vocational projects. For more information on JustWorld International, please visit www.justworldinternational.org.
How: Buy your tickets and tables by contacting jwinfo@justworldinternational.org or calling (561) 333-9391.


Grey Duralex Picardie Colors Tumbler: Lead-Free, Arsenic-Free, Cadmium-Free and Mercury-Free!
Duralex "Picardie Colors" Goblet / Tumbler, Grey, 8-3/4 ounces.
Made in France, purchased in December 2018.
Metals not listed were not detected. Tests are done for a minimum of 60 seconds. To learn more about XRF testing, click here.
A LeadCheck swab will not normally work with an item like this one. For more information about that, click here.
Thank you for reading and for sharing my posts!
Amazon links are affiliate links. If you purchase something after clicking on one of my links I may receive a small percentage of what you spend at no extra cost to you. Thank you for supporting my advocacy work in this way!
This grey glass is from the set pictured below.
Yellow Duralex Picardie Colors Tumbler: Lead-Free, Arsenic-Free, Cadmium-Free and Mercury-Free!
Green+Life Saucepan: Lead Free, but….
2 Responses to Grey Duralex Picardie Colors Tumbler: Lead-Free, Arsenic-Free, Cadmium-Free and Mercury-Free!
WONDERFUL!!! Thank You !!! Are these glasses solid glass or painted glass?
I don't think they are painted, but I will let you know if I can figure that out. At first glance it seems like they must be solid glass. I think it they were painted we would be more likely to see other metals / metals at higher concentrations.


Delray Beach, FL - August 14, 2018 - FlickDirect would like to announce that Allison Hazlett-Rose has joined the Society of Professional Journalists. Allison is the Executive Vice President and is responsible for Media Relations for the company.
The Society of Professional Journalists was founded in 1909 and is the nation's most broad-based journalism organization, dedicated to encouraging the free practice of journalism and stimulating high standards of ethical behavior. It currently boasts nearly 7,500 members and is a defender of the First Amendment through their advocacy efforts.
Allison Hazlett-Rose has always had a passion for the arts and uses her organization skills to help keep FlickDirect prosperous. She is in charge of tracking FlickDirect's events, interviews, and award ceremonies. She also oversees and supervises the correspondents and critics that are part of the FlickDirect team and is the liaison for FlickDirect and media outlet representatives.
Mrs. Hazlett-Rose attended Hofstra University where she earned her bachelor's degree in communications and, along with her current SJP membership, is Vice Chair of the Florida Film Critics Circle.
FlickDirect™ carries a wide assortment entertainment news, release information, video clips, reviews, and interviews with cast and crew. It covers U.S.-released motion pictures and television, from the popular to the obscure. We are one of the online leaders in entertainment news, celebrity interviews, theatrical and home entertainment reviews in North America as well as the United Kingdom. Our stories, reviews, and interviews are syndicated on various platforms including in print, Apple News, and IMDB. The site is strategically partnered with various studios and companies to provided exclusive content to its visitors. FlickDirect™ has numerous channels with various interests for our viewers and readers. These channels include FlickVideo™, FlickMobile™, FlickDirect Uncut™, FlickDirect After Dark™, FlickDirect Florida™, and FlickPhoto™. FlickDirect™ is owned and operated by FlickDirect, Inc.


text:
is a Japanese voice actor. He is signed with Y.M.O. (specifically the Love Love division that is made for voice acting) management. His given name Ryō is sometimes mistranslated as Rei.

Voice roles

Anime
 Assassination Classroom (Taiga Okajima)
 Assassination Classroom 2nd Season (Taiga Okajima)
 Beast Wars II (Ikard, DJ)
 Beast Wars Neo (Hydra)
 Cromartie High School (Yutaka Takenouchi)
 Death Note (Tota Matsuda)
 Ginga Legend Weed (Buru)
 Gyagu Manga Biyori (Various Roles)
 Hell Girl (Shinichi Muroi)
 Hunter x Hunter (Yamainu)
 Kill la Kill (Kusanosuke Yaguruma)
 Kodocha (Rei Sagami)
 Legendz (Ed)
 Les Misérables: Shōjo Cosette (Laigle)
 Medarot (Hikaru Agata)
 Monster Rancher (Allen)
 Ojarumaru (Katapi)
 PaRappa The Rapper (Gaster)
 Pokémon (Nando)
 Prince of Tennis (Koharu Konjiki, various voices)
 Reborn! (Ken Joushima)
 Sexy Commando Gaiden: Sugoiyo!! Masaru-san (Kojirou Satou a.k.a. Afro)
 Sugar Sugar Rune (Hiroshi)
 Suzuka (Kenji Kobayakawa)
 Transformers: Robots in Disguise (Mirage, Slapper)
 Yu-Gi-Oh! Duel Monsters (Ryuuji Otogi)
 Yu-Gi-Oh! 5D's (Jean)

Drama CDs
 Mainichi Seiten! series 1 (Yuuta Asuoo)
 Mainichi Seiten! series 2: Kodomo wa Tomaranai (Yuuta Asuoo)

References

1974 births
Male voice actors from Osaka Prefecture
Living people
Japanese male voice actors

redpajama_set_name: RedPajamaWikipedia


WARNING..AND DISCONTINUED THE TROPICAL STORM WARNING FOR ANGUILLA.
HURRICANE WARNING FOR ST. MAARTEN...SABA...AND ST. EUSTATIUS.
SAINT MARTIN AND SAINT BARTHELEMY AT 600 PM AST...2200 UTC.
VIEQUES HAS BEEN CHANGED TO A TROPICAL STORM WARNING.
OF THE TURKS AND CAICOS ISLANDS ON TUESDAY NIGHT AND WEDNESDAY.
STRENGTHENING IS FORECAST DURING THE NEXT DAY OR SO.
SPREAD INTO THE TURKS AND CAICOS ISLANDS TUESDAY AFTERNOON.
NEXT INTERMEDIATE ADVISORIES...700 PM AST AND 900 PM AST.


text:
Iryna Vorona
Artist Bio:
Iryna Vorona was born in 1987 in Kyiv (Ukraine), where she lives and works today. Artist, curator, author of "mixed light" technique. She mainly works in the genre of "inner portrait". Master's degree at Fine Arts, National Academy of Fine Arts and Architecture (NAFAA), Kyiv, Ukraine (2018).
Science: PhD researcher, postgraduate program at the NAFAA, research field -symbols of contemporary art.
2020- CEO and founder of the "Mokonshu" virtual gallery and art organization. In 2020 Iryna was included in National Ukraine rating of the "Top 100 outstanding women of Kyiv region". In 2018 she was granted with Kyiv head of administration art prize for special record of achievements in development of the capital of Ukraine – Kyiv. In 2018 and 2018 years Iryna was awarded with Diploma of the International Academy of Rating Technologies and Sociology "Golden Fortune".
Grants: Ukraine President Grant (Ukraine, 2019), "Culture Bridges" mobility grant program (Spain, 2018) and Erasmus+ (Croatia, 2017).
i-vorona.com/en/projects/
Work Exhibited:
'The World is Temporarily Closed'
Acrylic and markers on cardboard
The #covidart series, that I'm applying with is based on true events of 2020 year.
Last year was a period of change for most people, both positively and negatively.
Man is accustomed to being mobile, accustomed to the fact that the world is open, that even the most remote corner of the world can be reached in the shortest possible time. Last year was a test for most people, both for those who found themselves isolated in their own country and for those who became isolated in a foreign country. The artwork "The world is temporarily closed" says that this phenomenon, the closedness of the world is temporary, and that in fact, openness or closedness exists only in the minds of everyone. Being open or closed depends on us, because you can be happy anywhere.
'Life Disconnected from Reality'
2020, acrylic and markers on cardboard
140х100 cm
Last year was a period of change for most people, both positively and negatively. Artwork "Life disconnected from reality" depicts a moment of breakdown, a feeling that appears suddenly as a result of changing life situations. The man has not yet had time to adjust his life to new events, he froze for a while between before and after. In any case, this moment of pause cannot last forever, because time cannot be turned back. So, if it seems to you that your life is detached from reality, it's time to create a new reality.
Please contact Katherine if you are interested in buying this work
Black Art & Artists to Inspire Kids
African Drawing Workshop – How to Draw Amazing African Patterns
How to Spread Kindness with Art – 18 Ideas
African Animals – How to Make an African Silhouette Sunset Picture
How to Make Art Just Like Takashi Murakami
Winter Inspired Creative Prompts
More Black Art & Artists to Inspire Kids
27 Best Halloween Movies for Children and Families
How to Make Lego Zip Lines at Home
Autumn Colours – Free Worksheet / Journal Page


text:
Schau nach!
Jobs & Angebote
360° Galerie
Lyuba Shevchuk, Journalistin der RISE Moldova: Ein Mann hat mich verfolgt, um zu diskreditieren und einzuschüchtern
RISE Moldova journalist Liuba Shevchuk was followed by a professional provocateur. It happened the day after the investigation about the villas owned by the president of the Democratic Party Vladimir Plahotniuc abroad, entitled "Oligarch's Paradise", was published. In the talk show "Politics of Natalia Morari" on TV8 channel, the journalist said this was done for the purpose of intimidating and discrediting her, IPN reports.
Liuba Shevchuk said it is normal for the journalists to go to meetings with different persons and for different persons to enter the editorial offices of media outlets, but it is not normal when someone follows reporters and knows details about their family and personal life. The man followed her with the aim of discrediting and intimidating her. "We tried to find out the reason for the pursuit and the person gave us a number of versions: because of the investigation "Oligarch's Paradise"; at the instruction of Mister Cavcaliuc, deputy head of the General Police Inspectorate, who got angry because of an investigation of ours into his property. He ultimately didn't give us an exact and clear answer," stated the journalist, noting she would like the authorities to open an inquiry into this case.
Executive director of the Association of Independent Press Petru Macovei said such actions are elements of a police state that becomes stronger in the Republic of Moldova. The journalists no longer feel safe in Moldova because the legislation and those who have to protect the journalists do not do it. "This is a problem of democracy that is fragile in the Republic of Moldova, where the rule of law is not ensured, but the citizens of this country should realize that the freedom of journalist and the security of the job is a guarantee for the public," he noted.
Information about the pursuit of journalist Liuba Shevchuk was communicated to journalists of RISE Moldova in a meeting with a person who was directly involved in the act. He described in detail what the journalist did in the course of September 6, 2018 and revealed precise data about the members of her family and personal life. The journalist said she made public the information about the pursuit in order to feel safer.
Source: ipn.md
FacebookTwitterLinkedinTumblrGoogle+PinterestVkEmail
Fehlgeschlagene Reform in der Gerechtigkeit
Laut NGO-Direktor brachte die Überwachung der öffentlichen Ausgaben rechtliche Probleme für ihn mit sich


Search for trade shows in USA 2019 and get all details of each fair. ... Business sectors: Shoes, Shoe Industry, Textiles, Fabrics, Home Textiles. 25Mar- ... Techtextil North America-International Trade Fair for Technical Textiles and Nonwovens.
Leading international trade fair for technical textiles and nonwovens ... Half of the trade visitors who attend make purchasing decisions for their companies.
A detailed list of events and trade shows around fabrics, clothing and textiles. ... paves way for a Super Spring'19 Show With excellent business tidings in the recently .... INDEX™ is the largest global meeting place for the nonwovens market.


text:
Areva to cut 1,300 German nuke jobs
nukesenergyarevaerlangenjobsnuclear powerbavaria
France's nuclear giant Areva will cut 1,300 jobs in Germany and close down two of its sites after Berlin's decision to abandon nuclear energy, news weekly Der Spiegel reported on Sunday.
The firm will slash its workforce by around 20 percent at its main site in Erlangen in central Germany, as well as making cuts at other sites across the country, the magazine said.
The extent of the job cuts would be nearly twice as high as the 800 redundancies cited in the French press. The company is expected to announce the move on December 13 in Paris.
In the wake of the Japan nuclear disaster in Fukushima, the German government decided to shut down all of its nuclear reactors by the end of 2022.
Last week, EON, Germany's biggest power supplier, said it would file a complaint with Germany's highest court, demanding compensation.
The decision is already affecting the bottom line for energy companies.
RWE, Germany's second-biggest power supplier, said earlier this month that it plunged into the red in the third quarter, not least as a result of the country's decision to phase out nuclear power.
AFP/hc
Weekend Wanderlust: Beautiful Bavarian day trips you can't miss


Sing C.K.L., Lim J.S., Walmsley T.G., Liew P.Y., Goto M., 2018, Effect of Solar Utility Temperature to Costing and Design Parameters of Integrated Solar Thermal System , Chemical Engineering Transactions, 70, 139-144.
The objective of this research is to evaluate the trade-off between solar utility temperature and solar collector efficiency, in the context of Malaysia, and also evaluating the proposed system efficiency and economic feasibility. Since Malaysia receives an abundance amount of solar radiation throughout the year, generating thermal energy from solar thermal energy system is highly attractive. In the illustrative case study, flat plate collector (FPC) and compound parabolic collector (CPC) were used for evaluation of integration with different temperature process. For each process, configuration with and without HEX were evaluated. Generally, solar collector cost for configuration with HEX is more than configuration without HEX, solar collector cost will be lower when solar utility temperature is lower, and effect of solar utility temperature variation affect more on FPC than on CPC. The results show that annual saving is 174,952 MYR/y. The payback period for all processes vary from 4.7 to 7.6 y.


text:
Список сезонов команды Национальной баскетбольной ассоциации «Сан-Антонио Спёрс».

Легенда

Выступления в АБА

Выступления в НБА

Статистика

Примечания

Ссылки
 Статистика выступлений на сайте Basketball-reference.com

Сан-Антонио Спёрс
Списки сезонов НБА по командам


text:
Eric Volz visits Tahoe after time in 'Waiting Room to Hell'
Adam Jensen
Dan Thrift / Tahoe Daily Tribune Eric Volz talks Wednesday about his experiences from being jailed in Nicaragua for allegedly killing his girlfriend.
The mountains surrounding Lake Tahoe provide many things to many people – beauty, recreation, even peace – but to Eric Volz, visions of Sierra Nevada summits gave momentary escape from "La Modelo," a maximum-security Nicaraguan prison where he spent 13 months on a murder charge that later was overturned.
"Tahoe has always been a real, kind of, refuge," Volz said during an interview Wednesday at Rude Brothers Bagel and Coffee Haus. "During some of the darkest times, I would go back to Tahoe – hiking peaks, climbing Lover's Leap."
In November 2006, Nicaraguan authorities arrested Volz on accusations that he had raped and murdered his 25-year-old former girlfriend, Doris Ivania Alvarado Jiménez.
After a trial viewed as deeply flawed by U.S. observers and many Nicaraguan people, Judge Ivette Toruno Blanco sentenced Volz to 30 years in prison in February 2007.
Conditions inside the penitentiary were "dangerous in every way you can imagine" and left the young man unsure as to whether he would make it out alive, Volz said.
As well as living with the very real potential for violence, Volz developed asthma and a kidney stone during his stay in prison.
He also noted, seemingly from personal experience, that a person's hair and fingernails stop growing when someone hasn't received sunlight for three days.
Political pressure to keep Volz in prison from Daniel Ortega's Sandinista regime as well as anti-American sentiment fueled by inflammatory media accounts contributed to his imprisonment, according to Volz.
Volz, now 29, was released from La Modelo in December after an appellate court composed of three judges ruled 2-1 to overturn his conviction.
Before moving to Nicaragua in December 2004 to start an English-Spanish magazine called El Puente that focused on sustainable tourism and social justice, Volz spent five years at the South Shore.
He recently returned to the area for two weeks to visit close friends, rest, recover from several ailments he developed in prison and visit some of his favorite spots around the lake.
Volz attributes his faith in God, prayers from around the world and the hundreds of letters of support he received while in prison for the strength to continue when his future appeared lost.
"If it wasn't for their support, I wouldn't be alive," Volz said.
Letters from South Shore residents were among the comforts that got Volz out of bed each morning.
"The support that came out of Tahoe was so humbling," Volz said. "So many people I don't even know stepped up."
After his release from prison, Volz expected his return to the United States to be peaceful compared with his time in La Modelo.
"It wasn't that way at all," Volz said.
After arriving in the States, Volz went into hiding for a week because of threats against his life.
On Wednesday, he said he hasn't received any threats for the past six weeks but added there is an open FBI investigation into the source of the menacing remarks.
Nicaraguan prosecutors also have urged the country's Supreme Court to overturn the appellate court's decision, but even if the court took such an action, Volz said extradition "would never happen."
At one point during Wednesday's interview, Volz glanced around the coffee shop, where about a half-dozen patrons sipped from paper cups, and realized his voice was nearly the only sound. Later, he smiled while saying he hopes he didn't traumatize anyone who overheard him recount his ordeal over the past 18 months.
Despite the struggle Volz has undergone, he spoke of something bigger that has grown from his imprisonment: a network of people from different backgrounds who rallied around the injustice they saw in his situation.
After Volz's arrest, supporters set up pages on the MySpace and Facebook Web sites. A third site, http://www.friendsofericvolz.com, also was established and since has been turned into a site supporting those who still face situations similar to Volz's around the world.
Volz now splits his time between Nashville, Tenn., where his mother lives, and New York City. He recently secured a book deal with St. Martin's Press to commit his account of recent events to paper.
A possible title for the book is "The Waiting Room to Hell," Volz said, a phrase he has used to describe life inside La Modelo.
"The story is really ugly in the details, but in the end it's about redemption, community and love," Volz said. "And at the end of the day, I'm really grateful."


Stone Having Least Crushing Strength. influence of some rock strength properties. the influence of rock strength properties on jaw crusher performance was carried out ... Start Watching. stone having least crushing strength.
Which Stone Is Least Crushing Strength. Crushing Strength Of A Good Building Stone In Mpa crushing strength of good building stone should be more than . stone crusher machine from china a.this page is about the a stone crusher machine,or crusher.
which stone is least crushing strength which spaceship is grind the rock in mars Home > Stone Crusher, Rock Crusher > which spaceship is grind the rock in mars.which stone is least crushing strength. diagram which shows the limestone rotary kiln works.
stone having least crushing strength . apr 5, 2015 and the test results show that concrete made from black stone has the highest keywords. cip 35 testing compressive strength of concrete.
Jaw crusher is one of main equipment of stone crushing, is ideally suitable for crushing all kinds of ores and crushing the big size materials, the highest anti-pressure strength of cr. Chat Online Find Complete Details about High Crushing Ration Carbon Stone Pe250x500 Mini Jaw. water conservancy and chemical industry.
Compressive strength or compression strength is the capacity of a material or structure to withstand loads tending to reduce size, as opposed to tensile strength, which withstands loads tending to elongate. In other words, compressive strength resists compression (being pushed together), whereas tensile strength resists tension (being pulled apart).
Crushing strength test - tests on stones, Civil Engineering Crushing Strength Test: For conducting this test, specimen of size 40 × 40 × 40 mm is build from parent stone.
This paper deals with an experimental investigation on the strength of stone and stone masonry. Granitoidgneiss is commonly used for masonry construction in India. The compressive strength of stone has been determined through 80 mm size cubes.
Compressive Strength is the stress, in pounds per square inch (psi) that will rupture a stone sample. Very rarely is the compressive strength of a stone much of a factor in stone selection. A column of stone with a density of 160 lbs/cf that is 100 feet tall exerts a compressive stress of only 110 pounds per square inch.
Not only this but the screening among different colour of stones will be good for an area remaining under certain conditions of sunlight and what type of stone should not be used for a kitchen's ... is especially rich in these building stones and particularly in .... proposed to be used, has a crushing strength of at least 20.
least crushing stone . which stone is least crushing strength Linear dimensional change, compressive strength and… - which stone is least crushing strength, The type IV dental stone is widely used for the fabrication of dyes and master casts for fixed and removable partial prostheses. Chat Online.
Crushing Strength Of Stone. Useful information on crushed stone -. For construction purposes, crushed stone of a strength grade of at least F300 is of water-saturated . ASTM Stone Testing. The American Society for Testing and Materials Very rarely is the compressive strength of a stone much of a factor in stone selection.
Linear dimensional change, compressive strength and. - which stone is least crushing strength, The type IV dental stone is widely used for the fabrication of dyes and master casts for fixed and removable partial prostheses.It is typically normal to wait at leastWe take building codes seriously.
crushing strength for stone in masonary - debouchage … crushing strength for stone in masonary - Mine , Masonry - Wikipedia, the free encyclopedia The common materials of masonry construction are brick, stone, marble, ,The tensile strength of masonry walls can be strengthened by thickening the wall, .
Home - Solutions - crushing strength of a good building stone should be. crushing strength of a good building stone should be. REQUIREMENTS OF A GOOD BUILDING STONE - The Constructor Strength. ... At least three specimen should be tested and the average should be taken as crushing strength.


text:
Tuesday Cannon Fodder: changes
By Aaron Lerner@AaronCLerner Mar 23, 2021, 9:12am EDT
Share All sharing options for: Tuesday Cannon Fodder: changes
Photo by Valeriano Di Domenico - Pool/Getty Images
TSF regular Our Bovine Public shared this from Arsene Wenger in the comments of yesterday's CF. Wenger called for the international soccer calendar to only have "competitions of meaning" and suggested that the World Cup and Euros be played every two years so that the players have more opportunity to shine instead of, in some cases, only one World Cup in their "prime" because of their birth year.
Arsene has proposed a number of different ideas for changes that FIFA could make to football, some of them radical, some of them more practical. He most recently suggested changing the offside law to penalizing an attacker only if there is daylight between him or her and the defender.
It's good that football has a prominent voice willing to think outside the box and creatively about the issues facing the beautiful game, one who isn't afraid to voice his opinions even though some of the ideas might not be received all that well. Change just for change's sake isn't a good thing, but change can be quite good. Football has a misplaced reverence for "the way things were" and a dogged commitment to keep things unchanged even as the game changes with modern training, technology, and tactics.
Speaking of thinking outside the box, last week the Belgian Pro League approved an agreement in principle to merge with the Eredivisie to create a BeNeLeague made up of the top clubs from both countries. Obviously, there are financial reasons for wanting to merge, but for me, that's a creative solution to the "our domestic leagues are struggling to compete" issue. That decision prompted a bit of discussion about merging MLS and LigaMX to create a superleague that could dominate this part of the footballing globe.
Some of the creative improvements for football that I've recently come across that I've liked include changing the shape of the penalty box to reduce the area and cut down on the number of penalties awarded in situations that don't merit them. Penalties are so outcome-determinative, we need fewer, not more of them. I wouldn't be averse to tinkering with the caution and sending off system i.e. yellow and red cards; it feels like there is too wide a range of things that fall into each category. It doesn't feel right that you get a yellow card for an innocuous pullback on a developing counter and also a yellow for a wild, dangerous slide tackle. And speaking of counterattacks, I've thought more than a few times that intentional fouls to break them up should be changed to be a sending off.
I also think that football should have more after-the-fact review of on-field incidents, both dives and fouls, and that the powers that be should assess more retroactive discipline and fines. I've not hidden the fact that I believe that the VAR-era has completely screwed up the incentives for diving versus staying on your feet. Meaningful sanctions for cheating that can be assessed after the match on replay would help move things back in the right direction. But enough on that because I may actually write a more detailed post about it.
What are some of the creative, outside-the-box changes to the game, either on field or off, that have been rattling around your brains recently? Or more practical changes, I'm not fussy today.


text:
Q: How to get aws instance metadata remotely using CLI? I am very new to AWS. I have a Windows Server EC2 instance. I installed AWS CLI on my laptop. Then I opened a CMD window, typed in "aws configure", put in the access key credentials, and was able to connect to the EC2.
From here, how do I get the http://169.254.169.254/latest/meta-data working? How do I retrieve some meta data?

A: On your Laptop
On your local machine you only can use the cli to retrieve metadata about your instance. Simply use this aws cli command:
aws ec2 describe-instance-attribute --instance-id <your-ec_instance_id e.g. i-ab12345> --attribute instanceType --region <your_region e.g. eu-west-1>

Documentation: http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-attribute.html
On your EC2-Instance only:
On your instance you can use the cli (like above) and the following:
PowerShell >3.0:
Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/instance-type

Documentation: http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html
Or you can install "curl for windows" and run:
curl http://169.254.169.254/latest/meta-data/instance-type

A: When running on an EC2 instance, you can query the metadata service, like so:
curl http://169.254.169.254/latest/meta-data/public-ipv4

You can also use:
curl http://instance-data/latest/meta-data/public-ipv4

From outside the EC2 instance, you can use the awscli, like so:
aws ec2 describe-instances
    --instance-ids i-01234567890123456
    --query "Reservations[0].Instances[0].PublicIpAddress"
    --output text

A: You cannot use http://169.254.169.254/latest/meta-data from AWS cli on your laptop
Use the ec2  describe-instances command instead for getting instance details
More details here

redpajama_set_name: RedPajamaStackExchange


text:
Terror-Crime Nexus? Terrorism and Arms, Drug, and Human Trafficking in Georgia
06.1.04_traughber.pdf
Colleen M. Traughber
Connections: The Quarterly Journal, Volume 6, Issue 1, p.47-64 (2007)
Curtis, Glenn E.. Involvement of Russian Organized Crime Syndicates, Criminal Elements in the Russian Military, and Regional Terrorist Groups in Narcotics Trafficking in Central Asia, the Caucasus, and Chechnya. Washington, D.C.: Federal Research Division, Library of Congress, 2002.
Shelley, Louise. Statement to the House Committee on International Relations, Subcommittee on International Terrorism, Nonproliferation and Human Rights., 2003.
Yalowitz, Kenneth, and Svante E. Cornell. "The Critical but Perilous Caucasus." Orbis 48, no. 1 (2004): 105-16.
Glonti, Georgi. "Trafficking in Human Beings in Georgia and the CIS." Demokratizatsiya 9, no. 3 (2001): 382-98.
Kukhianidze, Alexandre, Alexandre Kupatadze, and Roman Gotsiridze. Smuggling Through Abkhazia and Tskhinvali Region of Georgia . Tbilisi, Georgia: American University's Transnational Crime and Corruption Center [TraCCC], 24.
Nations Hospitable to Organized Crime and Terrorism - Moscow Interfax report from Tbilisi. Washington, D.C.: Federal Research Division, Library of Congress, 2003.
Shelley, Louise I.. Methods and Motives: Exploring Links between Transnational Organized Crime and International Terrorism. Rockville, MD: National Criminal Justice Reference Service [NCJRS], 2005.
Georgia: Fighting Terrorism in Another Failed State. Center for Defense Information (CDI), 2002.
Country Reports on Terrorism - Chapter 5A. U.S. Department of State, Office of the Coordinator for Counterterrorism, 2005.
Country Reports on Terrorism, Chapter 5 – Country Reports: Europe and Eurasia Overview. U.S. Department of State, Office of the Coordinator for Counterterrorism, 2006.
Chechnya-based Terrorists (Russia, separatist). Council on Foreign Relations, 2006.
"Selected Non-State Armed Groups." The Military Balance 104, no. 1 (2004): 363-64.
Trafficking in Persons Report . U.S. Department of State, 2005.
Trafficking in Persons Report "Trafficking in Persons: Global Patterns". United Nations Office on Drugs and Crime (UNODC), 2006.
"World Briefing–Europe: Georgia: Car Bomb Kills 3 Policemen." New York Times (2005).
Quijano, Elaine. Secret Service Told Grenade Landed near Bush: U.S. Officials Investigating Alleged Incident in Georgia. CNN.com, 2005.
Russia's Counterterrorism Strategy after Beslan–Regional Implications In Weekly Intelligence Briefing. Energy Security Analysis, Inc. (ESAI), 2004.
Socor, Vladimir. "Peacekeeping' Formats in South Ossetia Shown to be Untenable." Eurasia Daily Monitor 2, no. 199 (2005).
Jgharkava, Zaza. "Possible Case of Slavery Discovered in Svaneti." Georgia Today 318 (2006).
Cited in
File Name: 06.1.04_traughber.pdf
Number of Downloads: 4669
Howard, Russell D., and Colleen M. Traughber. "The "New Silk Road" of Terrorism and Organized Crime: The Key to Countering the Terror-Crime Nexus." In Armed Groups: Studies in National Security, Counterterrorism, and Counterinsurgency, 371-387. Newport, RI: U.S. Naval War College, 2008.
Markowitz, Lawrence. "The Crystallization of State Security Institutions in Tajikistan and Kyrgyzstan." In 2017 Annual Convention of Association for the Study of Nationalities. New York, NY, 2017.
Markowitz, Lawrence. "Assessing State Responses to Security Threats in Central Asia." In 2016 Annual Meeting of Central Eurasian Studies Society., 2016.
Mandic, Danilo. Separatists, Gangsters and Other Statesmen: The State, Secession and Organized Crime in Serbia and Georgia, 1989-2012 In Graduate School of Arts & Sciences. Vol. Doctoral dissertation. Harvard University, 2015.
Brunelli, Michele. IL Caucaso, Transizione Politica ed Economica. Una Analisi Transfrontaliera. Vol. Dottorato in Storia. Universita' Degli Studi di Cagliari, 2007.
"Stacy Closson, Networks of Profit in Georgia's Autonomous Regions: Challenges to Statebuilding." Journal of Intervention and Statebuilding 4, no. 2 (2010).
Mattar, MY. "Transnational legal responses to illegal trade in human beings." SAIS Review of International Affairs 33, no. 1 (2013): 137-159.
Ross, Thomas M.. Wolves In Wolves' Clothing: the Role of the Chechen Mafia in The Formation of an Independent Chechen Republic. Monterey, California: Naval Postgraduate School, 2011.
Meyers, Jeff. The Criminal–Terror Nexus in Chechnya: A Historical, Social, and Religious Analysis. Lexington Books, 2017.
Koolaee, Elaheh, and Hossein Komeili Esfahani. "Some Notes on Human Trafficking in the South Caucasus." Iran and the Caucasus 18, no. 2 (2014): 181-190 .
Closson, Stacy. "Georgia–South Ossetia networks of profit: challenges to statebuilding: Stacy Closson." In Statebuilding and State-Formation The Political Sociology of Intervention. Routledge, 2012.
Fredholm, Michael. "Implications for counterterrorism and policing." In Transnational Organized Crime and Jihadist Terrorism: Russian-Speaking Networks in Western Europe. Routledge, 2018.
Omelicheva, Mariya, and Lawrence Markowitz. Webs of Corruption: Trafficking and Terrorism in Central Asia. New York: Columbia University Press, 2019.
Abashidze, Archil, and Giorgi Gvalia. "A Cost-Benefit Analysis of Border Corruption in the Conflict Regions in Georgia andMoldova." European Scientific Journal 16, no. 11 (2020).
Palacios, Simón Pedro Izca. "Mexican Migrant Smugglers and Foreign Terrorists." In Terrorism and Developing Countries., 2020.
APA style: Traughber, C. M. (2007). Terror-Crime Nexus? Terrorism and Arms, Drug, and Human Trafficking in Georgia. Connections: The Quarterly Journal. 6(1), 47-64.
Chicago style: Traughber, Colleen M.. "Terror-Crime Nexus? Terrorism and Arms, Drug, and Human Trafficking in Georgia." Connections: The Quarterly Journal 6, no. 1 (2007): 47-64.
IEEE style: Traughber, C. M., "Terror-Crime Nexus? Terrorism and Arms, Drug, and Human Trafficking in Georgia", Connections: The Quarterly Journal, vol. 6, issue 1, pp. 47-64, Spring 2007.
DOI http://dx.doi.org/10.11610/Connections.06.1.04


text:
Express.js Error Pages
============================

The following files are used as error handler for express.js


We specialise in helping small businesses. We understand your need to keep costs to a minimum. We offer affordable solutions that maximise your marketing spend.
We listen, we learn and then we make a difference. We focus on the challenges and opportunities unique to your business and do not promote services you do not need.
We have 15 years experience, working with both big label brands and smaller fish. We offer superior marketing but without the inflated ego or designer price tag.
We are focused on getting results, driving sales and delivering profit. Our good judgement is backed by sound commercial experience.
We believe in collaboration and value your input at every stage. As your marketing partner, we share and advise, enabling you to make informed decisions.
We are genuinely qualified to write copy. Copywriting is a skill crucial to so many aspects of marketing, a skill that many marketers falsely claim to have.
We have an ethos of honesty, integrity and enthusiasm. Our success is dependent on client satisfaction and good referral.
We have a reputation for being friendly, professional and dedicated. We balance creativity with efficiency and pride ourselves on our attention to detail.
We offer a proactive and cost-effective alternative to full-time marketing support.
We offer an initial consultation free of charge.
We listen to the issues your business is facing and discover your vision for the future.
We discuss your requirements and how we can add value to your business.
We carry out a thorough marketing audit before devising a strategy to take your business forward.
We present you with a range of options to suit your budget. We prioritise activities, identifying tactics for both short and long term gain.
We set goals that are achievable and that will have a genuine commercial impact.
We develop plans that are proactive, that take full advantage of the interactive society in which we live.
We can fulfil all your marketing needs or simply help out on an ad hoc basis when required.
We charge by the hour, by the day or by the project. We can also work on a retainer for an agreed number of hours/days per month.


text:
Tuesday's Three Things To Know: It was a surprisingly wild night in college hoops
By Rob DausterJan 15, 2019, 11:51 PM EST
Ryan M. Kelly/Getty Images
While Golden State was busy putting up 50 points in a quarter, the college basketball world had themselves a wild night that featured a pair of top 25 teams winning in the final seconds, some big dogs rolling and a couple of trendy teams taking ugly losses.
Here is what you need to know from Tuesday night:
1. THE BIG BOYS ROLLED
The biggest game of the night ended up being one of the most boring games of the night, as No. 4 Virginia put away No. 9 Virginia Tech before we reached the under eight media timeout. The Wahoos hit nine of their first 11 threes, finished 13-for-24 from beyond the arc on the evening and took a 44-22 lead into halftime, eventually knocking off the Hokies, 81-59. It was an utterly dominant performance from Tony Bennett's club, and one that had our Travis Hines convincing himself that this is the year for UVA.
The Cavs weren't the only big dog to handle their business in impressive fashion on Tuesday. No. 3 Tennessee jumped out to a 23-6 lead on Arkansas and never looked back, beating the Razorbacks 106-87 in a game where the Vols never seemed to get out of third gear. While that was happening, No. 12 Kentucky was in the midst of going into Stegeman Coliseum and dropping a hammer on Georgia, 69-49. Ashton Hagans — who was previously committed to the Bulldogs — put a career-high 23 points on the board.
And lastly, while the Tar Heels didn't run away with this win, they did manage to hold off Notre Dame, 75-69. This win was notable because of the second half performance from Nassir Little. He scored just 11 points, but all of them came in the final 11 minutes, and he had nine in a 14-6 run that turned a deficit into a 65-58 lead.
2. SAM HAUSER SAVES No. 15 MARQUETTE, No. 17 N.C. STATE IS NOT SO LUCKY
Hauser put up a career-high 31 points to go along with eight boards in a 74-71 win at Georgetown as he was forced into point guard duties as Markus Howard was dealing with a lower back issue and Joseph Chartouny has apparently forgotten how to be a point guard. The Hoyas are not exactly a powerhouse these days, but they are a dangerous team offensively that has won some games we did not expect them to win, and going into Washington D.C. and winning this game without the Big East Player of the Year is, frankly, really impressive.
And important.
The Golden Eagles remain the only team that is one game behind Villanova in the Big East regular season title race.
N.C. State was not as fortunate. Playing without starting point guard Markell Johnson, the Wolf Pack found themselves down by 15 points at the half and by as many as 22 points in the second half at Wake Forest. A 29-7 run tied the game at 58 with about seven minutes left in the game, but Wake Forest did enough down the stretch to get the win, 71-67.
This is not a great loss for N.C. State, who has now lost two of their last three games and no longer looks like a top 25 basketball team.
3. THE OLE MISS HYPE TRAIN DERAILS
The trendy team this week was Ole Miss, and deservedly so — in the span of 96 hours, they beat No. 11 Auburn by 15 points and went into Starkville and picked off No. 14 Mississippi State. They were 13-2 on the season and 3-0 in the SEC at that point. They deserved to be trendy.
And it all came crashing down with a visit from LSU. Tremont Waters scored 20 points and added nine assists as the Tigers knocked off No. 18 Ole Miss, 83-69, in Oxford. Now 3-0 in the league, it may be time that we start looking at LSU as the new Ole Miss.
AND I NEED TO MENTION …
That a pair of top 25 teams survived at the last second. In Starkville, Mississippi State survived Florida, 71-68, thanks to a three-point play from Quinndary Weatherspoon with 3.6 seconds left on the clock. And out in Boise, No. 10 Nevada knocked off Boise State, 72-71, thanks to a three with 4.5 seconds left from Cody Martin, who had not made a three since Dec. 15th and was shooting 19.5 percent from beyond the arc entering the night.


In the investigations most witnesses claimed ignorance and were released after they demonstrated how they came by the notes: Santillana and Reyes were released into the custody of the local Jefe de Armas, presumably as either willing or reluctant recruits.
Counterfeits were obviously widespread. When Reyes was told in the Dulceria de Atenas that his notes were counterfeit, he still gave some to his sister who spent them on a case of Carta Blanca beer. Reyes claimed that he did not believe that the notes were counterfeit, because the proprietor of the dulceria had pointed out the gaps in the corners and the abbreviation 'No.' but he supposed that these notes were legitimate and still accepted them in his own shop.
These are counterfeit Type 2.


Our pastor, Fr. Boland, invites you to a listening session Wednesday, September 5 at 7:00 pm in McDonnell Hall. This is an opportunity for those who are interested to come together as a community and listen to one another's concerns and feelings.
This is a complex situation with many layers. In dialogue we can identify issues that can be forwarded to those in authority. It is important to reflect on ways we can ensure a safe environment here at OLPH. We need to find strength in one another's faith and love for our church when these headlines – day after day – are so disheartening.


It's my pleasure to welcome back my guest Laurel O'Donnell for another Medieval Monday! Today Laurel is sharing a snippet from her novel A Knight with Grace. Isn't this cover just gorgeous? Remember to show some love to Laurel by leaving a comment and happy reading!
It worked. Her face fell; hurt shone in her vulnerable eyes before she turned away. Without a word, she moved back to her spot beneath the tree opposite of his. She lay down, keeping her back to him.
You can find my snippet this week from ONLY FOR YOU on Laurel's blog here. Leave me a comment for the giveaway I'm having for this Author's Choice theme!
I actually purchased this book in February and cannot wait to read it!
Those TBR piles sure to grow fast, don't they?


Krustylab has a diverse business model which focuses on the growth and increase of its employees and also focuses on creating several office branches in various major cities in Nigeria and worldwide.
Krustylab aims to assist in the transformation of small-to-medium enterprises (SMEs) in Nigeria such as the daily management of the SMEs business websites, aiding the SMEs compete with established or international organizations, help them improve their websites and optimize them for search engines; thereby directing the right traffic to their various websites.
Some of the things Krustylab can do for you.
We sure know how to bring your imaginations to life. We assure you are artistic edge is one you will love. Tell us how we can help you.
Need a custom software for your work, business place, personal office, school, church, classroom, admin etc. We are sure we can design and develop that solution for Windows and MacOs that will not only make your easier, but improve productivity.
Let's develop an app for your business, service or to boost your online presence and profile. You just dream it and we will code it.
Better buy the right device once and not have to pay for you not knowing what to purchase. We have the right information to help you setup an ICT framework. As long as it is related to our field, we are sure to help you get the right stuff.
We design mobile friendly and responsive websites using HTML and content management systems like Joomla, Prestashop, Magento and Wordpress.
Yes, you have an online presence. But are the right people seeing what you have to offer? Let's get your business, your profile, your website, your shop to the right eyes. Krustylab's SEO service twill direct the right people to you.
While supplying affordable ICT and IT services, our stats speak for us. We have only learnt to grow throughout the years. Not only our growth, but the growth of our clients and staff. We provide affordable ICT/IT assistance to our clients and make sure we complete all tasks.
Anyone can build a website these days. But a website that you can easily manage, a website that will stand out, a website that is responsive and mobile friendly, a website that can stand the test of time and above all, a website that looks and feels good.We can do just that.
We listen and get to understand you.
We interact and propose possible solutions.
We start work and don't stop till conclusion.
We make sure the system is working and maintained.
Had a rough start with Krustylab, but after about 3 to 5 months, my SEO results started showing. I think i'll stick to them. They are professional and tolerant too.
Had my doubts in Nigerian SEO companies. but all Krustylab has done is clear my doubts. Big ups guys.
All my graphic work has always ended on the desk of Krustylab and they have always performed. Thanks guys.


text:
"Staged": A Zoom Show Defies Performance Convention
The first season of "Staged" is as entertaining as a show filmed over Zoom could be. Every actor in the show manages to showcase their talents despite the lack of a traditional set, turning an interesting experiment into a wonderful product.
By Kaelyn Milby '22
"Staged," which follows the production of a Zoom play and is itself recorded on Zoom, embraces a meta-framework for storytelling at the height of the pandemic.
When Covid sent the world into lockdown, many television shows and movies halted their filming schedules to comply with government restrictions and stop the spread of the virus on sets. But two actors, David Tennant and Michael Sheen, with the help of director Simon Evans, found a way around all that: they filmed a show over Zoom.
"Staged" follows Tennant and Sheen both playing themselves, or rather versions of themselves. Sheen plays himself as a slightly grumpy actor who is indignant at the thought of ever being the second choice for a role. Tennant plays a sometimes useless and restless father of five who cannot cook, alongside his wife, Georgia Tennant (played by herself). Simon Evans plays a scared, spineless director in an uncertain living situation, desperate to make the play work despite constant bickering between his two leads.
The first season of "Staged" is as entertaining as a show filmed over Zoom could be. The absurdity of making an entire show over Zoom lends itself to comedy very well and makes the show even more relatable during the pandemic.
Because the show is filmed almost entirely over Zoom, there is little opportunity for physical humor. As a result, the show is almost entirely reliant upon the comedic dynamic of its two leads. Sheen and Tennant are brilliant together. The two have such obvious chemistry that it would come as no shock if they were best friends in real life.
Watching other actors' incessant arguing may prove tiresome but Sheen and Tennant's clever back and forth remains hilarious and believable. Sheen tends to play the overzealous, quick-to-anger, uncooperative but still very charming counterpart to Tennant's equally charming, often clueless character. Their director, Evans, who Sheen correctly describes as "weaselly," tries ineffectively to mediate between the two as tensions mount. The trio's chemistry is endearing.
Despite the obvious limitations of having little more than a computer screen for a set, there is plenty of opportunity for situational comedy. One of the best moments in the first season is when Tennant, who thinks he is alone on a call with Samuel Jackson (who was originally supposed to have Sheen's role in the play), bashes Sheen who, as it happens, is also on the call. Tennant then calls Sheen to apologize and rants about how Jackson is unimaginative and disconnected from reality. Jackson is, of course, still on Zoom with Sheen and hears everything. "I should have seen that coming shouldn't I?" Tennant asks when he realizes his mistake. "Yes, motherfucker, you should have!" Jackson yells. Meanwhile, Sheen reveals that he was caught offloading the wine bottles from his excessive drinking into his octogenarian neighbor's recycling bins and is now being blackmailed by said neighbor into doing her grocery shopping. And in a later episode, Evans brings in none other than Judi Dench to curse at Sheen and Tennant to get them back on track during another of their distracting squabbles.
And while the star power of its guest actors and the chemistry of the two leads may carry much of the show, it should be noted that the writing is also fantastic. The dialogue is funny in every episode and there are several running jokes that are effortlessly continued throughout the show. Some of the best jokes are in the credits: after one episode in which Sheen and Tennant get into a heated argument, the credits list the actors as "Micheal Sheen" and "That F#!king Liar David Tennant".
But there are still moments of gravitas like when Sheen's girlfriend Anna Lundberg (played by herself), Tennant and his wife Georgia all gather over Zoom to comfort Sheen as he makes a worried phone call to the hospital to inquire about his blackmailing neighbor who has been taken out on a stretcher. And there are other heartwarming moments between Evans and his sister (who takes him in while she is going through a break-up) and Tennant and Georgia (most touchingly when he says a simple but resonant 'thank you' to her after a long day). Every actor in the show manages to showcase their talents despite the lack of a traditional set or even a camera. It's an interesting experiment that produced wonderful results. After the past 18 months, it's good to find even the smallest silver linings. And "Staged" is definitely a silver lining. "Staged" is currently available on Hulu or Kanopy, which students can access through their Amherst accounts.


Tasmania has a rugged varied coastline that attracts ocean swells all year round. King Neptunes follows the lives of 3 elderly soul surfers around the grand coastal vistas as they pursue their love for riding waves. Marley, Tony and Shane live and breath the soul surfer ethos. The act of riding wild waves invigorates their souls and keeps them on the edge of what it means to be truly living.


pyWeb is a Literate Programming tool that will work with any markup language and any programming langauge.
Make AsciiDoc part of your literate programming tool set. With eWEB you can weave and tangle literate programs written as AsciiDoc documents, using embedded WEB code snippets.
eibnetmux multiplexes EIBnet/IP connections allowing to use one EIBnet/IP gateway (including Siemens N148/21) for multiple client applications (such as EIB programming tool ETS, a visualisation solution and other control software).
The FrameProcessor is a Generative Programming tool (gray-box generator) for the reuse of any kind of text (e.g. source code). It can be used for implementing Software Product Lines at build-time.
A documentation meta-programming tool that generates a wiki representation of a source tree.
A programming tool to simplify the initial setup of GUI widgets. Mainly an experiment in using widget names and methods as a mark-up language. Written in C++, outputs Java.
For searches similar to programming tool see "Related Downloads" under the categories listing.


A lovely record that I associate with a dear friend, now passed on.
I introduced this song to him so now I associate it with pleasant memories.
.º ·º .º ·º .º ·º .º. .º ·º .º ·º .º ·º .º. .º ·º .º ·º .º ·º .º. .º ·º .º ·º .º ·º .º. .º ·º .º. .º ·º .º ·º .º ·º .º.º ·º .º ·º .º ·º .º.
This entry was posted in fun / humor, music videos and tagged Mexico- James Taylor. Bookmark the permalink.
Excellent – a wonderful way to remember someone.
I'm so sorry your friend passed on.
But, what a beautiful song to share with him.


Available for undergraduate through PhD students and includes an invitiation to present research at a U.S. Composting Council Annual Conference. The scholarship is for $4,000 and the ideal candidate has interest in imprioving the composting process, soil nutirent content, reducing erosion and water pollution, and increasing carbon storage in soils to combat climate change. To apply and find out more information, visit www.compostfoundation.org/Education/Young_Investigators.
Scholarships are open to ANY student who will be enrolled in any post-secondary education for the 2019-2020 school year. The TransCanada Scholarships have three categories; Community Leadership, Indigenous Legacy and Trade. Last year 450 scholarships were awarded to students across 298 communities in North America. Visit www.tcscholarships.com to see if you pre-qualify.
Application deadline: May 17th at 11:59 pm.


A career with C.S.T. Consultants Inc. (CST) gives you the freedom to work when you want and earn rewards based on your effort. You're in control.
And the greatest reward? A career that truly impacts the lives of the families you meet.
View the presentation below to find out more about this opportunity.
There is audio throughout this video. Please ensure your sound is turned on.
To apply for a sales position, please click here to take our on-line assessment.
Thank you for your interest in a sales career with C.S.T. Consultants Inc.


- CDASH v1.1 to SDTMIG v3.1.2 mapping metadata from SHAE is now available for download.
- The BRIDG R4 reference model, which has been updated to include the NCI Life Sciences DAM and support for SDTMIG v3.1.13 is now posted for CDISC public comment. Comments are due by 11th May.
- Terminology Package 21 with more than 850 new terms for SDTM, SEND and COAs was released on 27th March.
- The ADaM Structure for Occurrence Data (OCCDS) which extends the ADaM ADAE Data Structure for Adverse Events Analysis to other occurrence data such as ConMeds, is nearing final publication.
- The provisional CFAST TAUG for Chronic Hepatitis C was released on 8th May.
- ADaM v1.3 validation checks were released on 16th May.
- Cardiovascular and diabetes TAUG metadata have been posted to eSHARE.
CDISC will be releasing a significant number of work packages in June including ADaM Structure for Occurrence Data, SDTM PGx package and amended draft of SEND v3.1 for public comment.
Please visit cdisc.org for a complete list of CDISC updates and activities.