//  -------------------------------------------------------------------------
//  Copyright (C) 2014 BMW Car IT GmbH
//  -------------------------------------------------------------------------
//  This Source Code Form is subject to the terms of the Mozilla Public
//  License, v. 2.0. If a copy of the MPL was not distributed with this
//  file, You can obtain one at https://mozilla.org/MPL/2.0/.
//  -------------------------------------------------------------------------

#include "ramses-utils.h"
#include "ramses-client-api/RamsesClient.h"
#include "ramses-client-api/Scene.h"
#include "ramses-client-api/Texture2D.h"
#include "ramses-client-api/Effect.h"
#include "ramses-client-api/Node.h"
#include "ramses-client-api/AttributeInput.h"
#include "ramses-client-api/UniformInput.h"
#include "ramses-client-api/EffectDescription.h"
#include "ramses-client-api/MipLevelData.h"
#include "ramses-client-api/PickableObject.h"
#include "ramses-client-api/TextureSwizzle.h"
#include "ramses-client-api/DataVector2f.h"
#include "ramses-client-api/DataVector4f.h"

#include "EffectImpl.h"
#include "MeshNodeImpl.h"
#include "RamsesClientImpl.h"
#include "RamsesObjectTypeUtils.h"
#include "PickableObjectImpl.h"

#include "Math3d/ProjectionParams.h"
#include "Utils/File.h"
#include "Utils/LogMacros.h"
#include "PlatformAbstraction/PlatformMemory.h"
#include "PlatformAbstraction/PlatformMath.h"
#include "lodepng.h"

namespace ramses
{
    template <typename T>
    const T* RamsesUtils::TryConvert(const RamsesObject& obj)
    {
        if (RamsesObjectTypeUtils::IsTypeMatchingBaseType(obj.getType(), TYPE_ID_OF_RAMSES_OBJECT<T>::ID))
        {
            return &RamsesObjectTypeUtils::ConvertTo<T>(obj);
        }

        return nullptr;
    }

    template <typename T>
    T* RamsesUtils::TryConvert(RamsesObject& obj)
    {
        if (RamsesObjectTypeUtils::IsTypeMatchingBaseType(obj.getType(), TYPE_ID_OF_RAMSES_OBJECT<T>::ID))
        {
            return &RamsesObjectTypeUtils::ConvertTo<T>(obj);
        }

        return nullptr;
    }

    Texture2D* RamsesUtils::CreateTextureResourceFromPng(const char* pngFilePath, Scene& scene, const TextureSwizzle& swizzle, const char* name/* = 0*/)
    {
        if (!pngFilePath)
        {
            LOG_ERROR(ramses_internal::CONTEXT_CLIENT, "RamsesUtils::CreateTextureResourceFromPng: file path is nullptr");
            return nullptr;
        }

        unsigned int width = 0;
        unsigned int height = 0;
        std::vector<unsigned char> data;

        const unsigned int ret = lodepng::decode(data, width, height, pngFilePath);
        if (ret != 0)
        {
            LOG_ERROR(ramses_internal::CONTEXT_CLIENT, "RamsesUtils::CreateTextureResourceFromPng: Could not load PNG. File not found or invalid format: " <<
                      pngFilePath << " (error " << ret << ": " << lodepng_error_text(ret) << ")");
            return nullptr;
        }

        MipLevelData mipLevelData(static_cast<uint32_t>(data.size()), data.data());
        return scene.createTexture2D(ETextureFormat::RGBA8, width, height, 1, &mipLevelData, false, swizzle, ResourceCacheFlag_DoNotCache, name);
    }

    Texture2D* RamsesUtils::CreateTextureResourceFromPngBuffer(const std::vector<unsigned char>& pngData, Scene& scene, const TextureSwizzle& swizzle, const char* name)
    {
        unsigned int width = 0;
        unsigned int height = 0;
        std::vector<unsigned char> data;

        const unsigned int ret = lodepng::decode(data, width, height, pngData);
        if (ret != 0)
        {
            LOG_ERROR(ramses_internal::CONTEXT_CLIENT, "RamsesUtils::CreateTextureResourceFromPngBuffer: Could not load PNG. Invalid format (error " << ret << ": " << lodepng_error_text(ret) << ")");
            return nullptr;
        }

        MipLevelData mipLevelData(static_cast<uint32_t>(data.size()), data.data());
        return scene.createTexture2D(ETextureFormat::RGBA8, width, height, 1, &mipLevelData, false, swizzle, ResourceCacheFlag_DoNotCache, name);
    }

    bool RamsesUtils::SaveImageBufferToPng(const std::string& filePath, const std::vector<uint8_t>& imageData, uint32_t width, uint32_t height)
    {
        if (width <= 0 || height <= 0)
        {
            LOG_ERROR(ramses_internal::CONTEXT_CLIENT, "RamsesUtils::SaveImageBufferToPng: Given width and height cannot be 0");
            return false;
        }

        if (width * height > 268435455u)
        {
            LOG_ERROR(ramses_internal::CONTEXT_CLIENT, "RamsesUtils::SaveImageBufferToPng: Width * height cannot exceed the size of 268435455");
            return false;
        }

        if (width * height * 4u != imageData.size())
        {
            LOG_ERROR(ramses_internal::CONTEXT_CLIENT, "RamsesUtils::SaveImageBufferToPng: Width * height * 4 (rgba8) must exactly match the size of the image buffer");
            return false;
        }

        const unsigned int ret = lodepng::encode(filePath, imageData, width, height);
        if (ret != 0)
        {
            LOG_ERROR(ramses_internal::CONTEXT_CLIENT, "RamsesUtils::SaveImageBufferToPng: Error while saving PNG file: " << filePath << " (error " << ret << ": " << lodepng_error_text(ret) << ")");
            return false;
        }
        return true;
    }

    bool RamsesUtils::SaveImageBufferToPng(const std::string& filePath, std::vector<uint8_t>& imageData, uint32_t width, uint32_t height, bool flipImageBufferVertically)
    {
        if (width <= 0 || height <= 0)
        {
            LOG_ERROR(ramses_internal::CONTEXT_CLIENT, "RamsesUtils::SaveImageBufferToPng: Given width and height cannot be 0");
            return false;
        }

        if (width * height > 268435455u)
        {
            LOG_ERROR(ramses_internal::CONTEXT_CLIENT, "RamsesUtils::SaveImageBufferToPng: Width * height cannot exceed the size of 268435455");
            return false;
        }

        if (width * height * 4u != imageData.size())
        {
            LOG_ERROR(ramses_internal::CONTEXT_CLIENT, "RamsesUtils::SaveImageBufferToPng: Width * height * 4 (rgba8) must exactly match the size of the image buffer");
            return false;
        }

        if (flipImageBufferVertically)
        {
            const size_t lineSize = width * 4u;
            std::vector<unsigned char> lineBufferV(lineSize);
            unsigned char* lineBuffer = lineBufferV.data();

            for (size_t i = 0u; i < height / 2u; i++)
            {
                unsigned char* endOfImageData = imageData.data() + height * lineSize;
                unsigned char* beginOfRowNumberI = imageData.data() + i * lineSize;
                unsigned char* beginOfLastRowMinusIrows = endOfImageData - ((i + 1) * lineSize);

                std::memcpy(lineBuffer, beginOfRowNumberI, lineSize); //1. fill line buffer
                std::memcpy(beginOfRowNumberI, beginOfLastRowMinusIrows, lineSize); //overwrite copied line
                std::memcpy(beginOfLastRowMinusIrows, lineBuffer, lineSize); //replace already copied part with buffer
            }
        }

        if (!SaveImageBufferToPng(filePath, imageData, width, height))
            return false;

        return true;
    }

    bool IsPowerOfTwo(uint32_t val)
    {
        while (((val & 1) == 0) && val > 1)
        {
            val >>= 1;
        }

        return (val == 1);
    }

    uint32_t Log2(uint32_t val)
    {
        uint32_t pow = 0;
        while (((val & 1) == 0) && val > 1)
        {
            pow++;
            val >>= 1;
        }

        return pow;
    }

    MipLevelData* RamsesUtils::GenerateMipMapsTexture2D(uint32_t originalWidth, uint32_t originalHeight, uint8_t bytesPerPixel, uint8_t* data, uint32_t& mipMapCount)
    {
        // copy original data
        const uint32_t originalSize = originalWidth * originalHeight * bytesPerPixel;
        uint8_t* originalData = new uint8_t[originalSize];
        ramses_internal::PlatformMemory::Copy(originalData, data, originalSize);

        if (!IsPowerOfTwo(originalWidth) || !IsPowerOfTwo(originalHeight))
        {
            // if no mip maps can be created only return original data
            mipMapCount = 1u;
        }
        else
        {
            mipMapCount = std::max(Log2(originalWidth), Log2(originalHeight)) + 1u;
        }

        // prepare mip data generation
        ramses::MipLevelData* mipLevelData = new ramses::MipLevelData[mipMapCount];

        mipLevelData[0].m_size = originalSize;
        mipLevelData[0].m_data = originalData;

        uint32_t currentMipMapIndex = 1u;
        while (currentMipMapIndex < mipMapCount)
        {
            uint32_t nextWidth = std::max(originalWidth >> 1, 1u);
            uint32_t nextHeight = std::max(originalHeight >> 1, 1u);
            uint32_t nextSize = nextWidth * nextHeight * bytesPerPixel;
            uint8_t* nextData = new uint8_t[nextSize];

            uint32_t originalRowSize = originalWidth * bytesPerPixel;
            uint32_t nextRowSize = nextWidth * bytesPerPixel;

            for (uint32_t row = 0u; row < nextHeight; row++)
            {
                for (uint32_t col = 0u; col < nextWidth; col++)
                {
                    const uint32_t nextIndex = (row * nextRowSize) + col * bytesPerPixel;
                    const uint32_t originalIndex = ((row * originalRowSize * 2u) + col * 2u * bytesPerPixel);
                    for (uint32_t i = 0u; i < bytesPerPixel; i++) // iterate through pixel components
                    {
                        // apply box filter
                        uint32_t tmp = 0u;
                        if (originalHeight > 1 && originalWidth > 1)
                        {
                            tmp = static_cast<uint32_t>(originalData[originalIndex + i]) +
                                static_cast<uint32_t>(originalData[originalIndex + i + bytesPerPixel]) +
                                static_cast<uint32_t>(originalData[originalIndex + originalRowSize + i]) +
                                static_cast<uint32_t>(originalData[originalIndex + originalRowSize + i + bytesPerPixel]);
                            tmp >>= 2; // divide by 4
                        }
                        else
                        {
                            if (originalHeight == 1)
                            {
                                tmp = static_cast<uint32_t>(originalData[originalIndex + i]) +
                                    static_cast<uint32_t>(originalData[originalIndex + i + bytesPerPixel]);
                                tmp >>= 1; // divide by 2
                            }
                            if (originalWidth == 1)
                            {
                                tmp = static_cast<uint32_t>(originalData[originalIndex + i]) +
                                    static_cast<uint32_t>(originalData[originalIndex + originalRowSize + i]);
                                tmp >>= 1; // divide by 2
                            }
                        }

                        nextData[nextIndex + i] = static_cast<uint8_t>(tmp);
                    }
                }
            }

            mipLevelData[currentMipMapIndex].m_size = nextSize;
            mipLevelData[currentMipMapIndex].m_data = nextData;

            originalData = nextData;
            nextData = nullptr;
            originalWidth = nextWidth;
            originalHeight = nextHeight;
            currentMipMapIndex++;
        }

        return mipLevelData;
    }

    CubeMipLevelData* RamsesUtils::GenerateMipMapsTextureCube(uint32_t faceWidth, uint32_t faceHeight, uint8_t bytesPerPixel, uint8_t* data, uint32_t& mipMapCount)
    {
        const uint32_t faceSize = faceWidth * faceHeight * bytesPerPixel;
        mipMapCount = 0u;
        MipLevelData* faceMips[6];
        faceMips[0] = GenerateMipMapsTexture2D(faceWidth, faceHeight, bytesPerPixel, &data[faceSize * 0], mipMapCount);
        faceMips[1] = GenerateMipMapsTexture2D(faceWidth, faceHeight, bytesPerPixel, &data[faceSize * 1], mipMapCount);
        faceMips[2] = GenerateMipMapsTexture2D(faceWidth, faceHeight, bytesPerPixel, &data[faceSize * 2], mipMapCount);
        faceMips[3] = GenerateMipMapsTexture2D(faceWidth, faceHeight, bytesPerPixel, &data[faceSize * 3], mipMapCount);
        faceMips[4] = GenerateMipMapsTexture2D(faceWidth, faceHeight, bytesPerPixel, &data[faceSize * 4], mipMapCount);
        faceMips[5] = GenerateMipMapsTexture2D(faceWidth, faceHeight, bytesPerPixel, &data[faceSize * 5], mipMapCount);

        CubeMipLevelData* cubeMipMaps = new CubeMipLevelData[mipMapCount];
        for (uint32_t level = 0; level < mipMapCount; level++)
        {
            new (&cubeMipMaps[level]) CubeMipLevelData(
                faceMips[0][level].m_size,
                faceMips[0][level].m_data,
                faceMips[1][level].m_data,
                faceMips[2][level].m_data,
                faceMips[3][level].m_data,
                faceMips[4][level].m_data,
                faceMips[5][level].m_data);
        }

        for (uint8_t level = 0; level < 6u; level++)
        {
            delete[] faceMips[level];
        }
        return cubeMipMaps;
    }

    void RamsesUtils::DeleteGeneratedMipMaps(MipLevelData*& data, uint32_t numMipMaps)
    {
        for (uint32_t i = 0; i < numMipMaps; i++)
        {
            delete[] data[i].m_data;
        }

        delete[] data;
        data = nullptr;
    }

    void RamsesUtils::DeleteGeneratedMipMaps(CubeMipLevelData*& data, uint32_t numMipMaps)
    {
        for (size_t level = 0u; level < numMipMaps; level++)
        {
            delete[] data[level].m_dataPX;
            delete[] data[level].m_dataNX;
            delete[] data[level].m_dataPY;
            delete[] data[level].m_dataNY;
            delete[] data[level].m_dataPZ;
            delete[] data[level].m_dataNZ;
        }
        delete[] data;
        data = nullptr;
    }

    nodeId_t RamsesUtils::GetNodeId(const Node& node)
    {
        return nodeId_t(node.impl.getNodeHandle().asMemoryHandle());
    }

    bool RamsesUtils::SetPerspectiveCameraFrustumToDataObjects(float fov, float aspectRatio, float nearPlane, float farPlane, DataVector4f& frustumPlanesData, DataVector2f& nearFarPlanesData)
    {
        const auto params = ramses_internal::ProjectionParams::Perspective(fov, aspectRatio, nearPlane, farPlane);
        if (!params.isValid())
        {
            LOG_ERROR(ramses_internal::CONTEXT_CLIENT, "RamsesUtils::SetPerspectiveCameraFrustumToDataObjects failed: invalid frustum planes");
            return false;
        }

        if (frustumPlanesData.setValue(params.leftPlane, params.rightPlane, params.bottomPlane, params.topPlane) != StatusOK ||
            nearFarPlanesData.setValue(params.nearPlane, params.farPlane) != StatusOK)
            return false;

        return true;
    }
}

// include all RamsesObject to instantiate conversion templates
#include "ramses-client-api/AnimatedProperty.h"
#include "ramses-client-api/Animation.h"
#include "ramses-client-api/AnimationSequence.h"
#include "ramses-client-api/AnimationSystem.h"
#include "ramses-client-api/AnimationSystemRealTime.h"
#include "ramses-client-api/Appearance.h"
#include "ramses-client-api/Camera.h"
#include "ramses-client-api/GeometryBinding.h"
#include "ramses-client-api/LocalCamera.h"
#include "ramses-client-api/MeshNode.h"
#include "ramses-client-api/OrthographicCamera.h"
#include "ramses-client-api/PerspectiveCamera.h"
#include "ramses-client-api/RemoteCamera.h"
#include "ramses-client-api/Scene.h"
#include "ramses-client-api/BlitPass.h"
#include "ramses-client-api/DataFloat.h"
#include "ramses-client-api/DataInt32.h"
#include "ramses-client-api/DataVector2f.h"
#include "ramses-client-api/DataVector2i.h"
#include "ramses-client-api/DataVector3f.h"
#include "ramses-client-api/DataVector3i.h"
#include "ramses-client-api/DataVector4f.h"
#include "ramses-client-api/DataVector4i.h"
#include "ramses-client-api/DataMatrix22f.h"
#include "ramses-client-api/DataMatrix33f.h"
#include "ramses-client-api/DataMatrix44f.h"
#include "ramses-client-api/RenderBuffer.h"
#include "ramses-client-api/RenderGroup.h"
#include "ramses-client-api/RenderPass.h"
#include "ramses-client-api/RenderTarget.h"
#include "ramses-client-api/PickableObject.h"
#include "ramses-client-api/SceneReference.h"
#include "ramses-client-api/SplineBezierFloat.h"
#include "ramses-client-api/SplineBezierInt32.h"
#include "ramses-client-api/SplineBezierVector2f.h"
#include "ramses-client-api/SplineBezierVector2i.h"
#include "ramses-client-api/SplineBezierVector3f.h"
#include "ramses-client-api/SplineBezierVector3i.h"
#include "ramses-client-api/SplineBezierVector4f.h"
#include "ramses-client-api/SplineBezierVector4i.h"
#include "ramses-client-api/SplineLinearFloat.h"
#include "ramses-client-api/SplineLinearInt32.h"
#include "ramses-client-api/SplineLinearVector2f.h"
#include "ramses-client-api/SplineLinearVector2i.h"
#include "ramses-client-api/SplineLinearVector3f.h"
#include "ramses-client-api/SplineLinearVector3i.h"
#include "ramses-client-api/SplineLinearVector4f.h"
#include "ramses-client-api/SplineLinearVector4i.h"
#include "ramses-client-api/SplineStepBool.h"
#include "ramses-client-api/SplineStepFloat.h"
#include "ramses-client-api/SplineStepInt32.h"
#include "ramses-client-api/SplineStepVector2f.h"
#include "ramses-client-api/SplineStepVector2i.h"
#include "ramses-client-api/SplineStepVector3f.h"
#include "ramses-client-api/SplineStepVector3i.h"
#include "ramses-client-api/SplineStepVector4f.h"
#include "ramses-client-api/SplineStepVector4i.h"
#include "ramses-client-api/StreamTexture.h"
#include "ramses-client-api/Texture2D.h"
#include "ramses-client-api/Texture3D.h"
#include "ramses-client-api/TextureCube.h"
#include "ramses-client-api/TextureSampler.h"
#include "ramses-client-api/ArrayBuffer.h"
#include "ramses-client-api/Texture2DBuffer.h"
#include "ramses-client-api/ArrayResource.h"

#define INSTANTIATE_CONVERT_TEMPLATE(_objType) \
    template RAMSES_API const ramses::_objType* ramses::RamsesUtils::TryConvert<ramses::_objType>(const ramses::RamsesObject& obj); \
    template RAMSES_API ramses::_objType* ramses::RamsesUtils::TryConvert<ramses::_objType>(ramses::RamsesObject& obj);

INSTANTIATE_CONVERT_TEMPLATE(ClientObject)
INSTANTIATE_CONVERT_TEMPLATE(RamsesObject)
INSTANTIATE_CONVERT_TEMPLATE(SceneObject)
INSTANTIATE_CONVERT_TEMPLATE(AnimationObject)
INSTANTIATE_CONVERT_TEMPLATE(RamsesClient)
INSTANTIATE_CONVERT_TEMPLATE(Scene)
INSTANTIATE_CONVERT_TEMPLATE(AnimationSystem)
INSTANTIATE_CONVERT_TEMPLATE(AnimationSystemRealTime)
INSTANTIATE_CONVERT_TEMPLATE(Node)
INSTANTIATE_CONVERT_TEMPLATE(MeshNode)
INSTANTIATE_CONVERT_TEMPLATE(Camera)
INSTANTIATE_CONVERT_TEMPLATE(RemoteCamera)
INSTANTIATE_CONVERT_TEMPLATE(LocalCamera)
INSTANTIATE_CONVERT_TEMPLATE(PerspectiveCamera)
INSTANTIATE_CONVERT_TEMPLATE(OrthographicCamera)
INSTANTIATE_CONVERT_TEMPLATE(Effect)
INSTANTIATE_CONVERT_TEMPLATE(AnimatedProperty)
INSTANTIATE_CONVERT_TEMPLATE(Animation)
INSTANTIATE_CONVERT_TEMPLATE(AnimationSequence)
INSTANTIATE_CONVERT_TEMPLATE(Appearance)
INSTANTIATE_CONVERT_TEMPLATE(GeometryBinding)
INSTANTIATE_CONVERT_TEMPLATE(PickableObject)
INSTANTIATE_CONVERT_TEMPLATE(Spline)
INSTANTIATE_CONVERT_TEMPLATE(SplineStepBool)
INSTANTIATE_CONVERT_TEMPLATE(SplineStepFloat)
INSTANTIATE_CONVERT_TEMPLATE(SplineStepInt32)
INSTANTIATE_CONVERT_TEMPLATE(SplineStepVector2f)
INSTANTIATE_CONVERT_TEMPLATE(SplineStepVector3f)
INSTANTIATE_CONVERT_TEMPLATE(SplineStepVector4f)
INSTANTIATE_CONVERT_TEMPLATE(SplineStepVector2i)
INSTANTIATE_CONVERT_TEMPLATE(SplineStepVector3i)
INSTANTIATE_CONVERT_TEMPLATE(SplineStepVector4i)
INSTANTIATE_CONVERT_TEMPLATE(SplineLinearFloat)
INSTANTIATE_CONVERT_TEMPLATE(SplineLinearInt32)
INSTANTIATE_CONVERT_TEMPLATE(SplineLinearVector2f)
INSTANTIATE_CONVERT_TEMPLATE(SplineLinearVector3f)
INSTANTIATE_CONVERT_TEMPLATE(SplineLinearVector4f)
INSTANTIATE_CONVERT_TEMPLATE(SplineLinearVector2i)
INSTANTIATE_CONVERT_TEMPLATE(SplineLinearVector3i)
INSTANTIATE_CONVERT_TEMPLATE(SplineLinearVector4i)
INSTANTIATE_CONVERT_TEMPLATE(SplineBezierFloat)
INSTANTIATE_CONVERT_TEMPLATE(SplineBezierInt32)
INSTANTIATE_CONVERT_TEMPLATE(SplineBezierVector2f)
INSTANTIATE_CONVERT_TEMPLATE(SplineBezierVector3f)
INSTANTIATE_CONVERT_TEMPLATE(SplineBezierVector4f)
INSTANTIATE_CONVERT_TEMPLATE(SplineBezierVector2i)
INSTANTIATE_CONVERT_TEMPLATE(SplineBezierVector3i)
INSTANTIATE_CONVERT_TEMPLATE(SplineBezierVector4i)
INSTANTIATE_CONVERT_TEMPLATE(Resource)
INSTANTIATE_CONVERT_TEMPLATE(Texture2D)
INSTANTIATE_CONVERT_TEMPLATE(Texture3D)
INSTANTIATE_CONVERT_TEMPLATE(TextureCube)
INSTANTIATE_CONVERT_TEMPLATE(ArrayResource)
INSTANTIATE_CONVERT_TEMPLATE(RenderGroup)
INSTANTIATE_CONVERT_TEMPLATE(RenderPass)
INSTANTIATE_CONVERT_TEMPLATE(BlitPass)
INSTANTIATE_CONVERT_TEMPLATE(TextureSampler)
INSTANTIATE_CONVERT_TEMPLATE(RenderBuffer)
INSTANTIATE_CONVERT_TEMPLATE(RenderTarget)
INSTANTIATE_CONVERT_TEMPLATE(DataObject)
INSTANTIATE_CONVERT_TEMPLATE(DataFloat)
INSTANTIATE_CONVERT_TEMPLATE(DataVector2f)
INSTANTIATE_CONVERT_TEMPLATE(DataVector3f)
INSTANTIATE_CONVERT_TEMPLATE(DataVector4f)
INSTANTIATE_CONVERT_TEMPLATE(DataMatrix22f)
INSTANTIATE_CONVERT_TEMPLATE(DataMatrix33f)
INSTANTIATE_CONVERT_TEMPLATE(DataMatrix44f)
INSTANTIATE_CONVERT_TEMPLATE(DataInt32)
INSTANTIATE_CONVERT_TEMPLATE(DataVector2i)
INSTANTIATE_CONVERT_TEMPLATE(DataVector3i)
INSTANTIATE_CONVERT_TEMPLATE(DataVector4i)
INSTANTIATE_CONVERT_TEMPLATE(ArrayBuffer)
INSTANTIATE_CONVERT_TEMPLATE(Texture2DBuffer)
INSTANTIATE_CONVERT_TEMPLATE(StreamTexture)
INSTANTIATE_CONVERT_TEMPLATE(SceneReference)


Second Hand Bikes

Did you know that the bicycle is the most efficient human-powered means of transportation in terms of the energy a person must expend in order to travel a certain distance? Introduced in the 19th century, today there are more than a billion bikes worldwide, twice as many as cars. They are the primary means of transportation in many countries. From their invention to this day, bikes have been and are used for many purposes. So, wouldn’t it be a shame if your old and unwanted bike ended up on a landfill instead of at someone’s home?The Green Shed Canberra offers a range of bikes at an affordable price. We also accept used bikes in good condition; offering you an alternative to throwing away your unwanted bike to the landfill. All bikes donated to us will be resold at affordable prices to those who need them. So if you have used utility bikes, exercise bikes, mountain bikes, recycled bikes, racing bikes, touring bikes, hybrid bicycles, cruiser bicycles, or BMX bikes, please drop them off at The Green Shed, at either the Mugga Lane Resource Management Centre in Symonston or at the Flemington Road Resource Management Centre in Mitchell.
If you want to buy a second hand bike we are sure you will find what you’re looking for at The Green Shed. So visit us and browse.

If you have any questions, please contact us via information on our website.

FB Reviews

Love a bargain go to the greenshed! I've found some wonderful clothing and I'm a lover of odd and wonderful knick knacks...


I just came back to France after 7 years spent in NYC... so currently in a phase of adjustment to french life. Based in Paris for now, not really knowing how long it will last.

What I’m doing with my life

When not traveling or hanging out with my friends I try to show up at work.

I’m really good at

Humm, let's see, soccer, making paella or any kind of sandwich, being a trusted, faithful and awesome friend... I'm also good at debating and love it (whatever the subject).

The first things people usually notice about me

Prolly my accent, not that I sound very French but it's some kind of mix and people usually have difficults to figure out where I'm from (I used to live in Ireland too).

Favorite books, movies, shows, music, and food

Ouch... not a big reader (or maybe newspapers and magazines), too lazy to name all the movies I like but I'm a big fan of Kubrick and Edward Norton among many others... More into Trip Hop (Massive attack, Archive, Potishead etc...) and Pop/Rock (Artic Monkeys, Franz Ferdinand, Biffy Clyro, Killers etc...)Food? I'm French I love food, any kind of food....


Please check back as we update – Thank you!
We are happy to offer special areas and attractions for all pet owners and guests attending the World of Pets Expo. Each of the following will have it’s own special “World of” attraction area located on the floor and will feature select breeds and species on display as well as a library of educational materials for you to take home. Located at each of our “World of” areas will be knowledgeable staff members who are ready and able to answer all of your specific pet and breed questions.
How do you satisfy your dog’s high-energy inner instincts? Lure Coursing may be the perfect answer! It’s an exciting way for him to do what comes naturally, but in a safe, controlled environment. Dogs chase a mechanized lure around a course that simulates the unpredictability of chasing live prey. Zig-zagging across an open arena is simply heaven for these dogs! At the same time, it helps improve their focus, agility and sportsmanship.
There is a Fee of $5.00 per dog to run the course.
Taking center stage is a high fashion runway show featuring talented, upcoming pet designers and their collections. Designers from the District of Columbia (DC), Maryland, Virginia and other regions will join forces with The Royal BB Girls, G Girl Productions Furbaby Modeling Agency and models that have appeared in numerous national Fashion Shows. The Goal of the World of Pet Expo Fashion Show by The Royal BB Girls is to connect with designers and consumers who love their pets.
Join us for of fun, fashion, networking and shopping with our amazing vendors!
If you feel your furbaby is talented enough to strut their stuff on the runway then contact The Royal BB Girls at theroyalbbgirls@gmail.com with a picture, measurements and contact information.
Is a reptile the right pet for you? Come see many species and learn from the experts. Make an informed decision and find out what is needed to keep your new pet comfortable and healthy. Available all three days of the event.
All things feathered can be found here. If you have feathered friends at home, you won’t want to miss stopping by the World of Birds area! Open to guests all three days of the event.
Feline agility competitions are rapidly growing in popularity at cat shows around the world.
– Interactive Demos all day! Give it a try with a trained agility cat and an expert teacher.
Merrimac Dog Training Club will offer agility demos and give you a chance to try it with your dog. Is your dog an agility dog? Find out if you would like to compete in this sport with your dog.
Proper combing techniques for cats along with the right combs to do it efficiently, nail trims offered for a donation to Heritage Humane Society. How to get your feline used to nail trims. Learn to do a dental exam to look for gum and teeth issues. How to give a cat medication. How to examine the ear and what issues to look for.
There will be adoptable pets at the Expo with animal rescues. Give a pet a new forever home.


Use to make Chicken Tomatillo Tostadas with Refried Black Beans and Cabbage-Pepper Slaw.
3. Remove from oven and let stand until cool enough to handle. Using your fingers or a fork, remove meat from bones and shred into large pieces; set meat aside, discarding bones.
4. Preheat broiler. Place tomatillos on a rimmed baking sheet. Place chiles, garlic, onion, and poblano peppers on another rimmed baking sheet. Transfer both baking sheets (one at a time, if necessary) to broiler and broil, turning once, until vegetables are charred and softened, about 10 minutes.
5. Transfer poblanos to a small bowl and cover with plastic wrap; let steam for 10 to 15 minutes. Let remaining vegetables cool slightly and peel garlic. Uncover poblanos and, using a paper towel, remove skins. Remove seeds and stems and coarsely chop. Transfer chopped poblanos to the jar of a blender along with tomatillos, chiles, garlic, onion, cilantro, cumin, and lime juice; blend until slightly smooth but a few chunks remain and season with salt and pepper.
6. Transfer pureed tomatillo mixture to a large saucepan and add reserved chicken; place over medium heat and simmer until chicken is no longer pink and completely warmed through. Season with salt and pepper and add more lime juice, if desired. Keep warm until ready to use.
I love this recipe! It turned out very well. It would also be good as a filling for burritos. I like to add a little more lime juice before I serve it to bring out the heat.
I tried making the tomatillo sauce carefully following instructions. All I can say is YUK! It tasted too much like peppers and too much lime juice. The recipe called for the juice of two limes but limes vary in size and I used large limes. If you decide to make this, start with one lime and go from there. I'm rarely disappointed with a MS recipe but my results from this one are going down the garbage disposal.


Today Micromax has launched its most awesome and best Flagship smartphone at a very reliable price, Micromax also posted about this launch on there Facebook page a few days back but now its here, Micromax Canvas Nitro A310 is said to be the Beast of all the Smartphones at a very reliable and low price that Rs. 12990-/ only.
You can grab your Micromax A310 from Snapdeal right now, visit Snapdeal to make a purchase.
Do leave your feedbacks about this device and also share it with your friends.


At L.M.S Car Sales we aim to bring you the widest choice of used cars in Sittingbourne, Kent and at great prices. We have some fantastic deals on used MG cars, which are always changing. Browse our used cars below and contact us for more information on any of our second hand cars.


Heart Imagery is not only a technique but also a way of being that profoundly resonates with my heart and my life. It has the power to clear the past and create the future.
It is a privilege for me to have been taught by a great Master, Daniel and an honour to be a teacher in The (ever-living) School of the Heart, able to teach Heart Imagery: Cleaning the Past and Self-Renewal, in Greek, English and French.
Born in France, my interests in ancient wisdom brought me to Greece where I live.
In 1999, an aggressive cancer knocked at my door, I then opened my heart and embraced it unconditionally. This total acceptance induced immediately an enlightened serenity that changed my life forever, and unveiled my real mission.
The Universe organizing in its undeniable way, I ended helping people reconnect to their true self through different modalities, healing body and mind as a result.
Aside from coaching, I lead weekly meditations, organize workshops, and I am a Qigong and Reiki Master.


Pepe: "I wouldn't be surprised if I wasn't selected for the Galatasaray game"

Real Madrid defender Pepe started his side's league game at the weekend, but it remains to be seen whether he will be selected to play against Galatasaray. Raphael Varane, who did not travel for the team's match in Zaragoza, seems set to take the Portuguese's place. "I wouldn't be surprised if I wasn't selected. I'm here for the team.

The manager decides what is best. We have a good squad and, as I said before, I'm here to help. I've played many games for Real Madrid and my approach will be the same as always", Pepe said when questioned on the issue.

Pepe went on to say that he – along with Sergio Ramos – wasted a good chance in his side's league game to reduce Barcelona's lead.


.. highlightlang:: none

``mroonga_escape()``
====================

.. versionadded:: 3.08

Summary
-------

``mroonga_escape`` UDF provides functionality to escape given string.
It also accepts parameter what character should be escaped.

Syntax
------

``mroonga_escape()`` has required parameter and optional parameter::

  mroonga_escape(string)
  mroonga_escape(string, special_characters)

Usage
-----

Here is the example query which use special characters to be escaped::

  SELECT * FROM `symbols` WHERE MATCH(`content`) AGAINST(mroonga_escape("+hello_world()", "()") IN BOOLEAN MODE);

Here is the example about special characters which is escaped::

  SELECT mroonga_escape("+-<>~*()\"\\\:");
  -- \+\-\<\>\~\*\(\)\"\\\:

Parameters
----------

Required parameters
^^^^^^^^^^^^^^^^^^^

There is one required parameter, ``string``.

``string``
""""""""""

It specifies text which you want to escape.

Optional parameters
^^^^^^^^^^^^^^^^^^^

There is one optional parameter, ``special_characters``.

``special_characters``
""""""""""""""""""""""

It specifies characters to escape.

The default value is ``+-<>~*()"\\:``.

Return value
------------

It returns escaped string.


Anderson-Krause Insurance has helped many Connecticut apartment building owners find the right coverage and protection for their buildings. We can evaluate your needs and find a customized package for your income property. With many top rated companies, we can find a competitive programs for any type of building.


If you represent a Lichfield based venue, business, organisation or community group, take advantage of our unique and completely free events listing service that will keep your customers, clients or members up to date with your latest info and happenings. All your latest events will be listed within our Lichfield events section and if you have events listed outwith the area, list these as well and they will automatically listed in other websites part of our network. As our network grows, all your listings will be pulled into our UK national websites. We also have a special section for nightlife venues.


While most of the political world was fixated on 2018, the 2019 gubernatorial contests got up and running. The three contests (2 Republican seats and 1 Democratic seat) have developed to the point that any race a year from an election does.
The 2020 contests haven’t left the starting gate, particularly in New Hampshire and Vermont which have two-year terms and haven’t cleaned up after 2018 yet. There are 11 races; Democrats are defending four seats, including an open seat due to term limits in Montana. Republicans have seven seats on the ballot. In Utah, GOP Gov. Gary Herbert has already said that he will not seek another term.
None of these races are starting the Toss Up column, but there is plenty of potential for them to get there, especially the 2019 races in Kentucky and Louisiana. Democrats are convinced that they can put the open seat in Mississippi on the board next year. Download a copy of the ratings here.
Apart from the 2019 contests, the At-A-Glance is our first take on potential challengers. Culled from conversations with consultants and operatives in various states, as well as news reports and our own knowledge of what is going on in various states, these lists are still very speculative. Some of these candidates will, in fact, jump into races over the next year, others will signal a lack of interest.


CHICAGO (AP) -- The American Medical Association is pushing for warning signs about marijuana use during pregnancy and breast-feeding.
Pot's potential harms include premature birth, low birth weight and attention problems in children.
The AMA says warnings should be posted at dispensaries that sell pot and on packages of marijuana sold for medical and recreational use.
The group adopted that stance at a policy-making meeting Monday in Atlanta. The AMA will seek regulations to put those warnings into effect.


Finding a chiropractor in Wilmington can be overwhelming, but your search doesn’t have to be. If you are looking for a chiropractor in Wilmington, you have options.
A referral from your primary care doctor or specialist should point you toward a reputable Wilmington chiropractor. A doctor should only offer recommendations that they would use for themselves and family members. This can help you narrow down your search. If you have special criteria, such as location or their technique, let your doctor know that too.
Once you’ve finished asking around, compare how many people have recommended the same Wilmington chiropractor. Chances are that is a great place to focus.
Your chiropractor can treat mechanical issues musculoskeletal system. However, your Wilmington chiropractor can’t treat all associated pain with these areas. Severe arthritis, osteoporosis, broken or fractured bones, infected bones, and bone tumor related pain are a few conditions your chiropractor may not treat.
Keep in mind you might not be aware of what you prefer or dislike until after you’ve had your first few treatments. You should be comfortable expressing yourself. Your Wilmington chiropractor should listen to your wishes.
Skill and technique do improve with time, so you might prefer an experienced Wilmington chiropractor. A few years or longer, in addition to their education, is a decent amount of time for a chiropractor to hone their skills.
You should get along well with your Wilmington chiropractor and feel comfortable around them. This includes speaking to them about your care as well as when they touch you. If you don’t feel at-ease, you should consider finding a new chiropractor.
Wilmington (Lenape: Paxahakink / Pakehakink) is the largest and most populous city in the U.S. state of Delaware. The city was built on the site of Fort Christina, the first Swedish settlement in North America. It is at the confluence of the Christina River and Brandywine River, near where the Christina flows into the Delaware River. It is the county seat of New Castle County and one of the major cities in the Delaware Valley metropolitan area. Wilmington was named by Proprietor Thomas Penn after his friend Spencer Compton, Earl of Wilmington, who was prime minister in the reign of George II of Great Britain. As of the 2017 United States Census estimate, the city's population is 72,846. It is the fifth least populous city in the U.S. to be the most populous in its state. The Wilmington Metropolitan Division, comprising New Castle County, DE, Cecil County, MD and Salem County, NJ, had an estimated 2016 population of 719,876. The Delaware Valley metropolitan area, which includes the cities of Philadelphia, Pennsylvania, and Camden, New Jersey, had a 2016 population of 6,070,500, and a combined statistical area of 7,179,357.


Mato Gutmeister Mato was an 80´s kid born in San José, Costa Rica. He is a graphic designer and electronic music producer. His sound can be described as Techno, Alternative, 90’s, Chicago and Acid house, combined with mystic and esoterical influences. He’s been influenced by artists such as Djedjotronic, Jimmy Edgar, Bobmo and Maelstrom. He as recently remixed a track for a French label working with local artists https://youtu.be/cdBSBgX9Jiw. Mato plays regularly in costarican clubs and bars, delivering bouncy and exciting sets.


Cruz, Gen adidas team head to Spain

On Monday a group of 19 players departed for Madrid,
Spain, representing this year’s Generation adidas team for 10 days of training
and competitive matches in the Spanish capital. Dynamo midfielder Danny Cruz will meet the group in Spain after completing a training stint with English club Nottingham Forest.

The side will be coached by reigning MLS Coach of the Year
Schellas Hyndman of FC Dallas and will train at the Real Madrid training
facilities in Valdebebas. The trip will be highlighted by matches against
the reserve teams of Real Madrid (Dec. 2), Rayo Vallecano (Dec. 7), and Atlético
Madrid (Dec. 8).

The 19 players represent 12 MLS clubs, with FC Dallas,
the Chicago Fire, and the Philadelphia Union each contributing three players. Of the
15 players currently in the Generation adidas program, goalkeeper Josh Lambo (FC
Dallas) and midfielder Blair Gavin (Chivas USA) will skip the trip.

Cruz, 20, was drafted by the Dynamo in the third round
of the 2009 MLS SuperDraft following his sophomore year at the University of Nevada-Las Vegas. He was named the
Dynamo’s Young Player of the Year in 2010 after starting a career-high 14 MLS
games and contributing two goals and two assists. Generation adidas contracts
provide the opportunity for players to leave college early and continue to
develop their soccer careers in MLS. The salaries of these players are greater
than the league minimum and the players are also provided educational funds
should they decide to return to school. Their salaries also do not count against
a club’s salary budget, allowing teams to afford them time to
develop.

While in Madrid, the players will have the opportunity to
attend a Real Madrid or Getafe La Liga match and the UEFA Champions League
group stage finale between the Merengues
and French club Auxerre at the Estadio Santiago Bernabéu.


$ ktutil
ktutil:  addent -password -p datagrid@INFINISPAN.ORG -k 1 -e aes256-cts
Password for datagrid@INFINISPAN.ORG: [enter your password]
ktutil:  wkt http.keytab
ktutil:  quit


Three Lancaster teenagers plead guilty to wounding
Preston Crown Court
Published: 16:12 Tuesday 07 August 2018 Updated: 12:32 Wednesday 08 August 2018
Three teenagers from Lancaster have pleaded guilty to wounding after an incident in which a man and a woman were stabbed in the city earlier this year.
Jordan Gardner, 19, of Thornton Road, pleaded guilty to one charge of Section 20 wounding/GBH.
Anna Dickinson, 18, of Fern Bank, and Kathryn Stanley, 19, of Thornton Road, both pleaded guilty to two charges of Section 20 wounding/GBH just prior to their trial which was due to start on Monday, August 6 at Preston Crown Court.
They had originally pleaded not guilty.
The trio were arrested following a double stabbing in Sycamore Grove, Lancaster, on Monday February 19.
At around 11.30pm, they entered a house occupied by an 18-year-old man and a 17-year-old girl.
The pair were set upon, and the man suffered two knife wounds to his back, while the girl was stabbed multiple times to her arm, shoulder and body.
Both were taken to Blackpool Victoria Hospital and were discharged following treatment.
The three attackers are due to be sentenced at Preston Crown Court on September 6.


MEMORANDUM DECISION
      Pursuant to Ind. Appellate Rule 65(D), this                     Apr 20 2015, 9:32 am
      Memorandum Decision shall not be regarded as
      precedent or cited before any court except for the
      purpose of establishing the defense of res judicata,
      collateral estoppel, or the law of the case.

      ATTORNEY FOR APPELLANT                                    ATTORNEYS FOR APPELLEE
      Kathleen M. Sweeney                                       Gregory F. Zoeller
      Sweeney Hayes, LLC                                        Attorney General of Indiana
      Indianapolis, Indiana
                                                                Angela N. Sanchez
                                                                Deputy Attorney General
                                                                Indianapolis, Indiana

                                                   IN THE
          COURT OF APPEALS OF INDIANA

      Paul Bell, Jr.,                                           April 20, 2015

      Appellant-Defendant,                                      Court of Appeals Case No.
                                                                02A03-1410-CR-366
              v.                                                Appeal from the Allen Superior
                                                                Court
      State of Indiana,                                         The Honorable Frances M. Gull,
      Appellee-Plaintiff                                        Judge

                                                                Case No. 02D06-1401-FB-19

      Crone, Judge.

                                               Case Summary
[1]   Paul Bell, Jr., appeals his conviction and sentence for class D felony sexual

      battery, following a jury trial. The dispositive issue presented for our review is

      Court of Appeals of Indiana | Memorandum Decision 02A03-1410-CR-366 | April 20, 2015       Page 1 of 6
      whether the State presented sufficient evidence to support his conviction.

      Finding the evidence insufficient, we reverse and remand.

                                  Facts and Procedural History
[2]   On July 19, 2013, twenty-year-old A.J. attended a party at her best friend’s

      house in Fort Wayne. During the party, A.J. consumed “a glass of wine,

      possibly two” and one shot of vodka. Tr. at 64. A.J. testified that she was not

      intoxicated. A.J.’s former high school boyfriend, Landon, was also at the

      party. A.J. spoke with Landon outside for over an hour and the two kissed

      during that time. Around midnight, Bell arrived at the party. A.J. knew Bell

      and saw him arrive, but she did not interact with him.

[3]   Sometime after midnight, A.J. decided to go inside to go to bed. Landon was

      still at the party when A.J. went inside. A.J. had been sleeping for a few hours

      when she awoke with Bell on top of her, kissing and touching her. A.J. did not

      realize it was Bell but assumed it was Landon. A.J. kissed Bell back. A.J. was

      “in and out of sleep” as the kissing and touching continued. Id. at 75. At one

      point, Bell started to have sexual intercourse with A.J. and she still did not

      realize that he was not Landon. When Bell eventually asked A.J., “Do you

      know who I am?” she immediately realized he was not Landon. Id. at 76. A.J.

      tried to push Bell off her, but he continued to have sexual intercourse with her

      until he finally just “fell dead weight on top” of her. Id. A.J. pushed Bell off

      her and went downstairs to tell her friends what happened. A.J. was crying and

      upset.

      Court of Appeals of Indiana | Memorandum Decision 02A03-1410-CR-366 | April 20, 2015   Page 2 of 6
[4]   The State charged Bell with class B felony rape and class D felony sexual

      battery. Regarding the sexual battery charge, the State alleged that Bell, with

      the intent to arouse or satisfy his own sexual desires or the sexual desires of

      A.J., touched A.J. when she was so mentally disabled or deficient that she

      could not give consent to the touching. Appellant’s App. at 20. A jury trial was

      held on August 12 and 13, 2014. The jury found Bell not guilty of rape, but

      guilty of class D felony sexual battery. The trial court sentenced Bell to three

      years’ imprisonment. This appeal ensued.

                                     Discussion and Decision
[5]   When reviewing the sufficiency of the evidence to support a conviction, we

      examine only the probative evidence and reasonable inferences that support the

      verdict. Morgan v. State, 22 N.E.3d 570, 573 (Ind. 2014). We do not assess

      witness credibility or reweigh evidence. Id. Rather, we consider only the

      evidence most favorable to the verdict and will affirm the conviction unless no

      reasonable factfinder could find the elements of the crime proven beyond a

      reasonable doubt. Id. It is not necessary that the evidence overcome every

      reasonable hypothesis of innocence. Drane v. State, 867 N.E.2d 144, 146 (Ind.

      2007). The evidence will be deemed sufficient if an inference may reasonably

      be drawn from it to support the conviction. Id.

[6]   To prove that Bell committed class D felony sexual battery as charged here, the

      State was required to prove that Bell, acting with intent to arouse or satisfy his

      own sexual desires or the sexual desires of A.J., touched A.J. when she was “so

      Court of Appeals of Indiana | Memorandum Decision 02A03-1410-CR-366 | April 20, 2015   Page 3 of 6
      mentally disabled or deficient that consent to the touching” could not be given.

      Ind. Code § 35-42-4-8(a)(1)(B).1 Bell contends that the State failed to prove that

      A.J. was “so mentally disabled or deficient” that she could not give her consent

      to the touching. Specifically, he argues that A.J.’s state of being asleep during

      the touching does not constitute being mentally disabled or deficient pursuant

      to the sexual battery statute. We agree.

[7]   The evidence indicates that A.J. had been sleeping for a few hours when she

      awoke to a male on top of her, kissing and touching her. A.J. assumed it was

      her ex-boyfriend. Although she was “half asleep,” A.J. kissed the male back.

      Tr. at 97. A.J. testified that she was “in and out of sleep” as the kissing and

      touching continued. Id. at 75. At one point, the male started to have sex with

      A.J. and she still did not realize that he was not her ex-boyfriend. A.J. stated

      that it was not until the male, Bell, asked her, “Do you know who I am?” that

      she realized he was not her ex-boyfriend. Id. at 76. A.J. testified that she was

      not intoxicated or impaired by any medication.

[8]   We agree with Ball that this evidence is insufficient, pursuant to Indiana Code

      Section 35-42-4-8(a)(1)(B), to establish that A.J. was so mentally disabled or

      deficient that consent to the touching could not be given. In Ball v. State, 945

      N.E.2d 252, 258 (Ind. Ct. App. 2011), trans. denied, another panel of this Court

      interpreted the phrase “mentally disabled or deficient” pursuant to the sexual

      1
        This statute was amended effective July 1, 2014. We cite the version in effect at the time Bell committed his
      crime.

      Court of Appeals of Indiana | Memorandum Decision 02A03-1410-CR-366 | April 20, 2015               Page 4 of 6
      battery statute and determined that “being asleep does not constitute being

      mentally disabled or deficient.” In reaching its decision, the Ball court looked

      to the interpretation of similar language in the rape and criminal deviate

      conduct statutes and noted that the phrase “mentally disabled or deficient” had

      been interpreted to include those with lower than normal intelligence, highly

      intoxicated victims, and a victim who had unknowingly ingested eight Xanax.

      Id. at 257. The Ball court found that a victim’s state of being asleep during a

      touching had only been found to satisfy an additional, alternative prong

      included in the rape and criminal deviate conduct statutes, not then present in

      the sexual battery statute, which permits conviction of a defendant if the victim

      is “unaware” the conduct is occurring. Id. (citations omitted). After Ball,

      effective July 1, 2012, to June 30, 2014, our legislature amended the sexual

      battery statute to include a provision, similar to the other sex offense statutes,

      regarding the sexual touching of a victim who is “unaware that the touching is

      occurring.” Ind. Code § 35-42-4-8(a)(2). Curiously, the State did not charge

      Bell pursuant to this subsection of the statute nor argue at trial or ask the jury to

      be instructed as to this subsection.

[9]   We agree with the holding in Ball and conclude that A.J.’s state of being what

      she described as “half-asleep” during Bell’s touching (coupled with the apparent

      mistaken identity that occurred) is not equivalent to a mental disability or

      deficiency for the purposes of the sexual battery statute. See Perry v. State, 962

      N.E.2d 154, 159 (Ind. Ct. App. 2012) (agreeing with Ball and concluding that

      victim’s sleep and intoxication to the point of being “a little buzzed” was

      Court of Appeals of Indiana | Memorandum Decision 02A03-1410-CR-366 | April 20, 2015   Page 5 of 6
       insufficient to satisfy mentally disabled or deficient prong of sexual battery

       statute). Bell’s conduct toward his victim, however deplorable, simply does not

       meet the definition of sexual battery as charged and argued by the State. The

       State failed to prove the element of mental disability or deficiency beyond a

       reasonable doubt. Therefore, we reverse Bell’s sexual battery conviction.

[10]   When a conviction is reversed because of insufficient evidence, we may remand

       to the trial court to enter a judgment of conviction upon a lesser-included

       offense if the evidence is sufficient to support the lesser offense. Ball, 945

       N.E.2d at 258. Bell concedes on appeal that the evidence is sufficient to

       support a conviction for class B misdemeanor battery. See Ind. Code § 35-42-2-

       1(a). Thus, we reverse and remand with instructions for the trial court to enter

       judgment of conviction for class B misdemeanor battery and to resentence Bell

       accordingly.2

[11]   Reversed and remanded.

       Brown, J., and Pyle, J., concur.

       2
        Because we reverse and remand for resentencing based upon a lesser offense, we need not address Bell’s
       challenge to the three-year sentence imposed by the trial court.

       Court of Appeals of Indiana | Memorandum Decision 02A03-1410-CR-366 | April 20, 2015            Page 6 of 6


Art is a creative expression through paintings, photographs, music, films, dance, and other artistic forms. There is no limit to expressing one’s own creativity because it comes in unique ways. For instance, Indigenous people in Canada have a great history of art that dates as far as the last Ice Age (between 80,000 – 12,000 years ago). Indigenous artwork plays a huge role in most Indigenous people’s lives. It can help them to heal from traumatic events, including loss of a loved one, and personal trauma. Lately, some people are creating Indigenous artwork in honour of missing and murdered Indigenous women in Canada, and to support the families of MMIWG.
For instance, two teenagers, Aiyana and Kaiya Leonard La Couvee from Calgary collected more than 1,200 pairs of shoes for an art project, in hope of raising awareness for MMIWG. Their birth mother was murdered last November. The art project has been exhibited in Olympic Plaza in Calgary, Alberta as part of the 12th annual Awo Taan Healing Lodge Sisters in Spirit March and Vigil.
Not only does Indigenous artwork guide people on a healing journey from the pain, but it also raises awareness for MMIWG. Walking with Our Sisters (walkingwithoursisters.ca/about) is a massive art installation that contains of 1,763+ pairs of moccasin vamps. Each moccasin vamp represents one missing or murdered woman. Some moccasin vamps have been donated by individuals to the project. Currently, Walking with Our Sisters is doing a tour across Canada to exhibit the pairs of moccasin vamps, and to raise the awareness of MMIWG and injustice.
Recently, we’ve lost an incredibly talented Inuit artist, Annie Pootoogook who was well-known for her raw, uncensored crayon and ink drawings of her life in Cape Dorset, Nunavut. Pootoogook faced some hardships in her life, but art helped her overcome her struggles and she gained success from her incredible artwork. Her artworks are displayed at various art museums in North America. Without Indigenous artwork and talented artists, the journey to healing the wounds for all Indigenous people would be undoubtedly more difficult.


The Legion Demonology Warlock: IMPlosion Edition!

The goal of this guide is to provide both new and returning players with an effective and fun way to play your Demonology Warlock while leveling in Legion.(This guide is not intended as a max dps endgame guide)

Before we start, I'd just like to point out 1 set bonus and 1 item that really makes this spec shine and work very well; The tier17 2p bonus: Shadow Council's Robes This 2p is just awesome. Say you spend 4 shards, that means you have a 50% to get 6 imps instead of 4.The class trinket from Hellfire Citadel: Fragment of the Dark Star Speaks for itself. Moar imps (The %chance will vary depending on the ilvl of your trinket)

For returning Demonology Warlock players, let me just start off by saying; Forget everything you thought you knew about Demonology Warlocks. They're changed.We are now back to using soul shards, and there are 2 (3 if you count Aoe) ways to generate them. Shadowbolt is still your spammable spell, generating 1 Shard per cast. Doom which is no longer the DoT it used to be, but rather a "delayed detonation" type spell that generates 1 Soul Shard when it deals damage. This will not typically give you much soul shards while leveling since mobs are likely to die before it deals damage. Demonwrath has an RNG element to it, but it will generate a lot of shards if used when you're actually doing AoE (4+ mobs).

You have primarily two ways of spending your shard.Hand of Gul'dan which now consumes 1-4 Soul Shards, dealing damage based on number of shards spent and summons 1-4 Wild Imps, again based on number of shards spent. Do note that there is no way of controlling the amount of shards this spell consumes other than paying attention to your current number of Soul Shards. If you, for instance, have 4 Shards, it WILL consume 4 Shards.Call Dreadstalkers. This has a flat cost of 2 Soul Shards, and it's a very straight-forward spell. It does exactly what the tooltip says.(Please note that all of your standard demons (Imp, Felguard, Felhunter, etc) cost 1 Soul Shard to summon, and so does Infernal and Doomguard.)

Next step is taking a look at the talents I have chosen and the reason I chose those talents.The spec I have put together is as stated in the beginning not intended for maximum damage, but for a smooth leveling experience.Tier 1 Talent:Demonic Calling. Simple talent, Shadowbolt and Demonwrath has a chance to make Call Dreadstalkers cost 0 Shards. I chose this talent because I would rather spend my shards on Hand of Gul'dan, the reason for this is found in the next talent tier.Tier 2 Talent: Implosion, Suicide Imps, Kamikaze Krazies, call it whatever you like, your imps explode. At first glance you may think "But this spec is just about summoning as much demons as possible now, how is this a good choice?". It probably isn't a good choice in terms of raiding and endgame, but for leveling and short fights this talent provides amazing burst. The damage dealt by this spell is counted PER IMP. If you have 4 imps, it will be 4x(200% Spell Power) in damage to your target and all enemies close to the target. Tier 3 Talent: Demon Skin. This talent row has little impact on your gameplay. I chose this particular talent simply because it passively regenerates an absorb shield (even outside of combat) and because Soul Link Demonology Passive causes this absorb shield to passively heal you for a small amount.Tier 4 Talent:Hand of Doom. Choosing this talent over Power Trip was a choice made mostly to reduce the amount of time you need to spend putting up Doom on mobs while leveling, you'll spend less time preparing for fights and more time simply fighting, one more global cooldown free to cast Shadowbolt for a guaranteed Shard and more Hand of Gul'dan casts, which will mean smoother killing with Implosion.Tier 5 Talent:Dark Pact. This talent row has little impact on your gameplay. I chose this talent because the 'oh shit' value of this spell is better than slight boosts to mobility while questing/leveling. Tier 6 Talent:Grimoire of Synergy. After doing a lot of testing it seems all the grimoires are fairly equal in terms of damage, but Synergy marches ahead for this Suicide Imp spec. The damage dealt by Implosion is increased by this grimoires damage proc, and it procs way more often now. Synergy proc + 4ish imps + Implosion = Dead mob. (or mobs, if there are more of them around)Tier 7 Talent: Soul Conduit. Free shards to cast more Hand of Gul'dan. Simple as that.

To use this build for actually leveling, you will want to maintain Demonic Empowerment on your Felguard and your Dreadstalkers (maintaining this on imps is not very important for this particular build, as imps are summoned just to nuke stuff).With our Tier 1 Talent you will rarely need to spend Soul Shards on Call Dreadstalkers, and I rarely cast it if I don't have a proc from Demonic Calling. Your main focus is to generate shards with Shadowbolt, use those shards to summon imps with Hand of Gul'dan (the more the merrier, pay close attention to shards you may get refunded with Soul Conduit), and when you have a few imps and maybe a Synergy proc; Implosion and pick up your loot.


Behavioral Medicine, Chiefs/Directors/Department Heads
Work Setting:
University/4-Year College
Position Type:
This job has expired and you can't apply for it anymore. Start a new search.
Dean - College of Behavioral and Social Sciences
Share This Save job
The College of Behavioral and Social Sciences invites applications and nominations for the position of Dean. This position is located on the Statesboro campus.
Georgia Southern University is the state’s largest and most comprehensive center of higher education south of Atlanta. With 141 degree programs at the associate’s, bachelor’s, master’s, and doctoral levels, Georgia Southern is designated a Carnegie Doctoral/Research university and serves more than 27,000 students on three vibrant campuses— the Statesboro campus, the Armstrong campus in Savannah, and the Liberty campus in Hinesville. Georgia Southern offers an attractive campus environment that encourages learning, discovery, and personal growth. Nationally accredited academic programs prepare diverse scholars for leadership and service as working citizens.
Since 1906, the University’s hallmark has been a culture of engagement that bridges theory with practice, extends the learning environment beyond the classroom, and promotes student growth and life success. Central to the University’s mission is the faculty’s dedication to excellence in teaching and the development of a fertile learning environment exemplified by a free exchange of ideas, high academic expectations, and individual responsibility for academic achievement. Faculty, staff, and students embrace core values expressed through integrity, civility, kindness, collaboration, and a commitment to lifelong learning, wellness, and social responsibility.
Within this setting, the Dean will guide the College of Behavioral and Social Sciences and its interdisciplinary community of teacher-scholars toward a bold vision for the future dedicated to enhancing societal well-being and the quality of life of individuals, families, and communities across diverse environments and contexts.
Position Description. Reporting to the Provost and Vice President for Academic Affairs, the Dean serves as the College’s chief executive and academic officer with responsibility for the academic and outreach leadership of the College and management of its resources, including faculty and staff, physical facilities, and budget. The Dean will provide strategic vision and operational leadership to all aspects of its academic and scholarly programs, promote synergies within the College and the University, and encourage opportunities for distinctive programmatic innovation that provides transformative experiences for its students. The Dean will also be responsible for articulating the vision, mission, goals, and programs of the College to the University community, external stakeholders, and the public at large.
A PhD or terminal degree in an academic discipline from an accredited college or university and an outstanding record of scholarly achievement commensurate with appointment as full professor with tenure in one of the departments in the College
A record of distinguished research, teaching, and scholarly activities; administrative and/or leadership experience in a university setting
A demonstrated ability to lead and manage, including management of human and financial resources; the ability to work with faculty to develop a vision and plans for the future in an environment of shared governance; the ability to function well as part of the campus leadership team
A commitment to fostering and sustaining a culturally diverse academic environment; a demonstrated ability to relate effectively to a wide variety of people of diverse backgrounds, including an understanding and respect for cultural, ethnic, gender, sexuality, and individual differences
A demonstrated ability to think strategically and bring together diverse groups of interests to coalesce in a unified vision
The ability to communicate effectively to build and enhance relationships with the staff, community, and various constituent groups
A record of success and ability in recruiting and retaining talented and diverse faculty
A deep commitment to academic excellence, demonstrated ability for creative leadership and management, and the energy and vigor to translate ideas into action
The ability to inspire faculty to excel in teaching, research, and creative activities and to reward excellence in these areas
A demonstrated ability to act as a facilitator with faculty and staff, bringing together diverse ideas and people in a collaborative way
Superior listening, communication, and analytical skills
Integrity and high ethical standards
Must be authorized to work in the United States for the duration of employment without assistance from the institution
A track record of success in fundraising and securing private support from donors
A record of success in leading through innovative organizational change in a transparent and inclusive manner
Experience working in a multi-campus environment and addressing diverse stakeholder needs across the organization
A student-centered approach coupled with a history of providing students with a high-quality educational experience and aggressively addressing issues related to student success
Screening of applications will begin immediately and will continue until the position is filled. The preferred position starting date is June 2019. A complete application consists of a letter addressing the qualifications cited above; a curriculum vitae; and the names, addresses, telephone numbers, and email addresses of at least three professional references. Other documentation may be requested. Finalists will be required to submit to a background investigation.
Applications and letters of nomination should be submitted to:
Alberto Pimentel, Managing Partner
Storbeck/Pimentel & Associates
6512 Painter Avenue
Email: apsearch@storbeckpimentel.com
Refer to code “GSU-DeanCBSS” in subject line
More information about the institution is available through www.georgiasouthern.edu or https://cbss.georgiasouthern.edu. Georgia Southern University seeks to recruit individuals who are committed to working in diverse academic and professional communities and who are committed to excellence in teaching, scholarship, and professional service within the University and beyond. The names of applicants and nominees, vitae, and other non-evaluative information may be subject to public inspection under the Georgia Open Records Act. Georgia Southern University is an Affirmative Action, Equal Opportunity institution. Individuals who need reasonable accommodations under the ADA to participate in the search process should contact the Vice Provost.
Tenure-track Clinical Psychologist at Amherst College
Amherst College - Amherst, Massachusetts
The Department of Psychology at Amherst College invites applications for a tenure-track position in...
Dean, California School of Professional Psychology (San Diego or San Francisco Campus)
Alliant International University - San Francisco, California
Dean, California School of Professional Psychology (San Diego or San Francisco Campus)Alliant Intern...
Dean of Teachers College
Ball State University - Muncie, Indiana
Ball State University seeks a visionary, innovative leader committed to making a transformational im...
Open Rank, Tenure-Track Faculty in Psychological Sciences (Clinical Psychology )
University of Missouri - St. Louis - St. Louis, Missouri
Clinical Psychology Faculty (Open Rank, Tenure-Track) THE DEPARTMENT OF PSYCHOLOGICAL SCIENCES A...
Assistant/Associate Professor- Pediatric Behavioral Health
Rutgers- The State University of New Jersey - Piscataway, New Jersey
School Psychology/Pediatric Behavioral Health Position at Rutgers University for Fall 2020The School...
This job has expired and you can't apply for it anymore
Save for Future Use
APA Home
APA PsycNET®
© 2019 American Psychological Association
750 First St. NE, Washington, DC 20002-4242
Telephone: (800) 374-2721; (202) 336-5500
TDD/TTY: (202) 336-6123
Follow APA psycCareers


Added by Peter Amstutz almost 2 years ago. Updated about 1 year ago.
The left column of the dashboard used to have two panels, one for "running" processes and one for "recently completed" process. However, as part of the "work unit" changes, this was turned into a single "recent pipelines and processes" panel. Unfortunately, a long running (but not yet completed) process can get pushed off the bottom if other smaller processes complete in the mean time. I consider this a regression. It should prioritize for display tasks which are still running.
The original change described in this ticket sounds like a regression. What story was that associated with?


Grafa obtained Molded War Machine Grill.
Grafa obtained Corruption Borne Headlopper.
Frostymcfly obtained Charged Sandstone Band.
Frostymcfly obtained Breastplate of Arterial Protection.


Doctor of Education (EdD)

Program Info

Completed admission packets for the doctoral cohort that will begin each Fall are due in Enrollment Services by 4:30 p.m. on March 15 each respective year.

The MSU doctorate in education (EdD) is designed to meet the distinctive needs of P–12 practitioner-leaders by addressing the call put forth by the Southern Regional Education Board and others to ensure that there is a “quality leader in every school.” There are two main tracks in the proposed program. The program’s first track, focusing on P-12 Administrative Leadership, provides opportunities for P–12 educators to remain on the job and be involved in rigorous leadership training while conducting research designed to bring about improved student achievement in their schools. The second track of Educational Technology Leadership is designed for the educational leader to provide leadership and support of colleagues through instructional design, curriculum development, and educational technology implementation and integration.

This is a practitioner-based doctorate designed to provide advanced training for those P-12 and technology leaders on the job. The overall goal of the program is to improve the educational attainment of residents of the eastern region of Kentucky.

"The principle goal of education is to create men and women who are capable of doing new things, not simply of repeating what other generations have done; men and an women who are creative, inventive and discoverers who have minds which can be critical, can verify, and not accept everything they are offered."

Three completed
EdD Candidate Recommendation Forms
. At least three professional references from persons in a position to evaluate the applicant's potential for success in a doctoral program, at least one to be completed by immediate or up-line supervisor familiar with the candidate's leadership ability, or (for Ed. Tech strand) professional familiar with candidate's use of technology, instructional design, and training; others to be completed by professional colleagues or university faculty. Note: Please notify individuals completing the recommendation that they will be completing the form online. The URL for the recommendation form is
http://www.surveymonkey.com/s/FHP3WD8
.

Documentation of previous statistical methodology, research related coursework or evidence of use and application of data-informed decision making to determine possible need for statistical methodology coursework.

Admission REQUIREMENTS

Application Process

The application process will consist of completion of an application submitted to Enrollment Services at MSU with the accompanying items listed below in the application file. MSU EdD faculty members will initially review applications. Applicants who are considered likely potential candidates will be interviewed by an admissions committee composed of MSU EdD faculty members and educational partners. In order to choose the most outstanding applicants, the EdD admissions committee will make selections based on a holistic evaluation of the candidate's application file, including:

Recommendations must be received from at least three professional references from persons in a position to evaluate the applicant's potential for success in a doctoral program: at least one to be completed by immediate or up-line supervisor or (for Ed. Tech track) professional familiar with candidate's use of technology, instructional design, and training; others to be completed by professional colleagues or university faculty who are familiar with the applicant; (Applicants, please forward the following link to persons agreeing to provide a recommendation for you:
MSU EdD Recommendations
or (
www.surveymonkey.com/s/FHP3WD8
);

Documentation of previous statistical methodology, research related coursework or evidence of use and application of data-informed decision making to determine possible need for statistical methodology coursework.

Three completed
EdD Candidate Recommendation Forms
. At least three professional references from persons in a position to evaluate the applicant's potential for success in a doctoral program, at least one to be completed by immediate or up-line supervisor familiar with the candidate's leadership ability, or (for Ed. Tech strand) professional familiar with candidate's use of technology, instructional design, and training; others to be completed by professional colleagues or university faculty

Documentation of previous statistical methodology, research related coursework or evidence of use and application of data-informed decision making to determine possible need for statistical methodology coursework.

Admission Rubric

Admission Criteria

Minimal

1 point

Average

2 points

Outstanding

3 points

Score

Master's Degree in Education or related field from accredited institution: required

----------

-----------

----------------

yes/no

Graduate degree grade point average

Years of related professional/leadership or educational technology, instructional
design and training experience

Analytical Writing score or sample (Note: Candidates who do not have a GRE analytical writing score will be asked to submit an on-demand writing sample.)GRE analytical writing score of 2.0 or below: Displays serious weaknesses in analytical writing. The writing is seriously flawed in at least one of the following ways: serious lack of analysis or development; lack of organization; serious and frequent problems in sentence structure or language usage, with errors that obscure meaning. Writing is considered minimal.

GRE analytical writing score of 2.0 or below: Displays serious weaknesses in analytical writing. The writing is seriously flawed in at least one of the following ways: serious lack of analysis or development; lack of organization; serious and frequent problems in sentence structure or language usage, with errors that obscure meaning. Writing is considered minimal.

GRE analytical writing score of 2.5 to 3.0: Displays some competence in analytical writing skills, although the writing is flawed in at least one of the following ways: limited analysis or development, weak organization; weak control of sentence structure or language usage, with errors that often result in vagueness or lack of clarity. Writing is considered average to below average.

GRE analytical writing score of 3.5 or higher: provides competent analysis of complex ideas; develops and supports main points with relevant reasons and/or examples; is adequately organized; conveys meaning with reasonable clarity; demonstrates satisfactory control of sentence structure and language usage but may have some errors that affect clarity. Writing is considered excellent.

P-12 Administrative Leadership Track

Letter of introduction/interest

States professional goals, leadership style, and educational philosophy. A holistic evaluation will be made of the candidate's letter of introduction considering indications of dispositions, personal leadership philosophy, evidence of ability to improve student achievement using effective teaching/learning practices, written communication skills, and use of best practices. These criteria will be holistically scored to reflect leadership ability and potential as well as an assessment of the candidate's prospective success in the Ed. D. program.

Educational Technology Leadership Track

Letter of introduction/interest

States professional goals, experiences using and integrating technology in education, instructional design, or training, and leadership and educational philosophy including a focus on technology. A holistic evaluation will be made of the candidate's letter of introduction/ considering indications of dispositions, personal educational technology philosophy, evidence of ability to improve student achievement using effective teaching/learning practices, written communication skills, and use of best practices. These criteria will be holistically scored to reflect educational technology ability and potential as well as an assessment of the candidate's prospective success in the Ed. D. program.

Letter of Introduction/Interest Evaluation Criteria

A "minimal" score reflects evaluator concerns about the person's dispositions, stated beliefs, record of behaviors or potential for success in the program.

An "average" score is an indication that the evaluator believes the person's dispositions, stated beliefs, and record of behaviors indicate significant potential for success in the program.

An "outstanding" score is an indication that the evaluator believes the person's dispositions, stated beliefs, and record of behavior indicates a very high probability for success in the program.

Recommendation Forms

At least one to be completed by immediate or up-line supervisor; others to be completed by professional colleagues or university faculty who are familiar with the candidate's leadership ability.

Educational Technology Leadership Track

Three completed EdD Candidate Recommendation Forms. At least one to be completed by professional familiar with candidate's use of technology, instructional design, and training; others to be completed by professional colleagues or university faculty who are familiar with the candidate's leadership ability.

Recommendation Evaluation Criteria

A "minimal" score indicates that at least one of the recommendations reflects concerns about the person's dispositions, stated beliefs, record of behaviors or potential for success in the program.

An "average" score is an indication that none of the recommendations reflect any significant concerns about the person's dispositions, stated beliefs, and/or record of behaviors. Further, the recommendations should indicate significant potential for success in the program.

An "outstanding" score is an indication that the recommendation forms suggest the person's dispositions, stated beliefs, and record of behaviors point toward a very high probability for success in the program.

Resume/vita

The resume will be holistically evaluated to determine how the person's past educational and work experiences have established a basis for continued development of higher level leadership skills.

A "minimal" score indicates concerns about the person's past educational and work experiences as reflections of potential for success in the program.

An "average" score is an indication that the person's past educational and work experiences reflect significant potential for success in the program.

An "outstanding" score is an indication that the person's past educational and work experiences point toward a very high probability for success in the program.

Interviews

Individual and group interviews will be conducted with a minimum of two EdD faculty members. Applicants at a distance may be interviewed via audio/video technology solutions. A holistic evaluation will be made of the applicant during the interviews considering dispositions, personal leadership philosophy, evidence of ability to improve student achievement using effective student-centered teaching/learning practices, communication skills, use of best practices, and integrated use of technology. These dispositions, stated beliefs, and record of behaviors will be holistically scored to reflect leadership ability and potential as well as an assessment of the candidate's prospective success in the Ed. D. program.

A "minimal" score reflects faculty concerns about the applicant's dispositions, stated beliefs, record of behaviors or potential for success in the program.

An "average" score is an indication that faculty believe the applicant's dispositions, stated beliefs, and record of behaviors indicate significant potential for success in the program.

An "outstanding" score is an indication that evaluators believe the applicant's dispositions, stated beliefs, and record of behaviors indicate a very high probability for success in the program.


“Mapping Catholic Politics in Contemporary Italy,” (2016) editor and co-author of introduction (with Tom Bailey) of special volume, Journal of Modern Italian Studies, 21(3), 419-425.
“Regime Type, Religion-state Arrangements and Religious Markets in the Muslim World,” (2014) Sociology of Religion, 75(3), 367-394.
“Religious Democracy and Civilizational Politics: Comparing Political Islam and Political Catholicism,” Occasional Paper n. 12 Center for International and Regional Studies (CIRS) Georgetown University (2013).
“Public Religion, Democracy and Islam: Examining the Moderation Thesis in Algeria,” (2012) Comparative Politics, 44(2), 171-189.
“Two Propositions for the Future Study of Religion-State Arrangements,” Cosmopolis 1-2(2010).
“Ethnic Voting and the Quality of Democracy in sub–Saharan Africa,” authored with Robert Dowd, Afrobarometer Working Paper n. 92 (January 2008).
“Democrazia e Libertà Religiosa,” Jean Monnet Lecture, Università Milano-Bicocca, Milan, Italy (March 2017).
“Rethinking Political Catholicism in Italy,” paper presented at Rethinking Christian Democracy Conference hosted by the European University Institute, Fiesole, Italy (April 2014).
“Muslim Democratization and Power Realities: A Comparative Analysis of Islamist Political Constraint in Algeria, Turkey and Indonesia,” paper presented at Middle East Studies Association Conference, New Orleans, LA (October 2013).
“Promoting Religious Freedom and Peaceful Coexistence,” (Invited Participant) International Workshop hosted by Italian Ministry of Foreign Affairs and Istituto per gli Studi di Politica Internazionale, Rome, Italy (February 2013).
“Religious Democracy in the Mediterranean? Reflections on the Unsecular in Catholic and Muslim Societies,” paper presented at Religion and Democracy in Europe and the Arab World, International Conference held by the Lebanese American University-Adyan-Konrad Adenauer Stiftung, Beirut, Lebanon (November 2012).
“Gender and Religious Institutions in the Muslim Majority World,” paper presented at Middle East Studies Association Conference, Denver, Colorado (November 2012); and John Cabot University Political Science Colloquium, Rome, Italy (February 2013).
“Muslim Democracy as Christian Democracy? Comparative Explorations and Cross-Cultural Dialogue” (Invited Speaker) Istituto per gli Studi di Politica Internazionale and Ministero degli Affari Esteri, Trento, Italy (October 2012).
“Transnational Religious Actors” panel discussant at Societa Italiana di Scienze Politica Conference, Rome, Italy (September 2012).
“Religion-State Institutions and Patterns of Democracy,” (Invited Talk): Georgetown University School of Foreign Service Center for International and Regional Studies, Qatar (April 2012).
“Religious Markets in North Africa,” presented at Georgetown University School of Foreign Service International Politics (IPOL) seminar series, Qatar (April 2012).
“Political Religions and Religious Markets in North Africa,” presented at the European University Institute’s 13th Mediterranean Research Meeting, Florence, Italy (March 2012).
“Religion-state Arrangements and Attitudes towards Democracy in the Islamic World: Theory and Evidence from North Africa,” paper presented at the Middle East Studies Association Conference,” Washington, DC (November 2011).
“New Conversations on Bonhoeffer’s Theology,” University of Notre Dame Graduate Student Conference, Steering Committee Member (April 2011).
“Between Political Secularization and Religious Revival: Notes on Religion and Democratization,” (Invited Talk): Princeton Institute for International and Regional Studies (September 2010).
“Ethnicity, Religion and Democracy,” chair of panel held at the Midwest Political Science Association Conference, Chicago (April, 2010).
“Public Religion, Democracy and Islam: Examining the Moderation Thesis in Algeria,” paper presented at Middle East Studies Association Conference, Boston (November, 2009) and presented at the Midwest Political Science Association Conference, Chicago (April, 2010).
“Hostile Religions and Friendly Democracies: a Two-stage Model of Religious-democratic Change from Italy,” paper presented at Council for European Studies Conference, Chicago (March, 2008), Midwest Political Science Association Conference, Chicago (April, 2008) and Global International Studies Conference, Ljubljana, Slovenia (July, 2008).
“Risorgimento Religioso: On the Surprising Rise of Religiosity in Italy,” paper accepted for presentation (declined) at Council for European Studies Conference, Chicago (March, 2008).
“Religion, State and Democracy,” paper presented at American Political Science Association Conference, Chicago (August, 2007) and International Studies Association-West Conference, San Francisco (September, 2007).
“Ethnic Voting and the Quality of Democracy in sub-Saharan Africa,” paper presented at American Political Science Association Conference, Philadelphia (September, 2006) and International Studies Association Conference, Chicago (March, 2007).
Instructor, Department of Political Science, University of Notre Dame: “Religion and Global Politics” (Spring, 2011).
Academic Advisor, Nanovic Institute for European Studies (2007-2008).
Professor of the Year (John Cabot University, 2016).
Distinguished Article Award: “Honorable Mention” from the Association for the Sociology of Religion for “Regime Type, Religion-state Arrangements and Religious Markets in the Muslim World,” (2016).
International Studies Association-West Best Graduate Paper Award: “Religion, State and Democracy” (September, 2007).
Rhodes Scholar State Finalist (Minnesota, 2003, Oregon, 2002).
Gerhard Alumni Award for Service and Leadership (University of Portland, 2002).
College of Arts and Sciences Deans’ Award for best academic record (University of Portland, 2002).
Excellence Award in German and French Studies (Department of Romance and Germanic Languages, University of Portland, 2002).
Student of the Year (Associated Students of the University of Portland, 2000).
Reviewer for American Political Science Review, World Politics, Journal of Comparative Politics, Journal for the Scientific Study of Religion, Politics and Religion, Partecipazione e Conflitto, Democratization, Religion, State and Society, Journal of Church and State, Contemporary Politics, Sociology of Religion, Rowman and Littlefield, National Science Foundation.
Nativity House Project (Chicago), Board Member, (2010-present).
University of Notre Dame, Working Group on Islam in Contemporary Europe, Member (2009-11).
Committee for Graduate Student Family Policies, University of Notre Dame, member (2010).
Graduate Student Union, Quality of Life Committee, Chair, University of Notre Dame, (2009-2010).
University of Notre Dame Department of Political Science, International Relations Graduate Student Representative (2006-2007).
Student Newspaper Editor and Columnist: Common Sense (Notre Dame, 2005-2007) Observer (Johns Hopkins 2003-2005).
L’Arche : Live-in resident assistant in a L’Arche community home for adults with mental and physical disabilities (2002-2003, Pierrefonds, France); assistant and friend (2003-present, Bologna & Rome, Italy), board member (Rome, 2015-present).


"Kelly was great. Did exactly what I described. Expectations were exceeded"
"Karen at the Glenview, IL location is just great!!"
"Very friendly staff, good cut, good price "
"I've not had a single bad experience with Krista. I get a buzz cut & sometimes my beard trimmed, which you'd think is hard to mess up. However in the past I have had countless people leave random hairs uncut & I'd always have to check in the mirror when I got home to fix something. Krista has always been very careful to go over & check to be sure everything looks good before I leave. She's always paying attention to what she's doing while maintaining a conversation with me about whatever we are chatting about. I always have a very enjoyable experience & feel taken care of whenever I'd come in. Oh, and she recommended I get the Alpha Male beard oil months ago which I still use often. She's just great all around. Thanks for everything!"
"Very professional and nice, products are great, would highly recommend getting a haircut here"
"Leah N. was fantastic! Best haircut I have had in a while too. Did not take too long. Did not over due the small talk. Will definitely be back because of her. "
"Fast service with good haircut at place I can swing by after work and then go out for dinner and cocktails during the week"
"Good service, with little to no wait. "
"Your services are right to the point. I like the upfront check-in, meeting of the stylist and down to business in the chair. All your stylists know their craft well - all about hair, men's styling, grooming, etc. Great conversation too. With sports in background, one can't go wrong. Special shout out to Leah N (421) at the Glenview Sports Clips location. She does a fantastic job on my cut and style. I'm a a bit picky. When I find someone that cuts hair well, I'll go to that person for years. Leah is that person! Thank you Leah! Chad Cunningham "
"Leah( the manager )and Karen always greets and gives superior in their service . Every time when I walk in they both always have a smile!!!👍"


I'm getting no crank when I turn the key. The gauges fire up when the key is turned, it sounds like the fuel pump is making noise, but no click from the starter/solenoid and nothing but a beep when I turn the key.

I tested the battery, 12.7v, cleaned the posts (they were already clean), tested the solenoid 12.7v, and checked for error codes - I get code 12 which is "normal condition (diagnostics system is operational)" - (as an aside, *** is the point of this code?).

Here are my questions:

1)Could the battery could still be bad even though it says 12.7v?
2)Does 12.7v at the solenoid mean I can rule it out?
3)Could the ignition switch be the problem even though the key positions do respond appropriately?

I'm getting no crank when I turn the key. The gauges fire up when the key is turned, it sounds like the fuel pump is making noise, but no click from the starter/solenoid and nothing but a beep when I turn the key.

I tested the battery, 12.7v, cleaned the posts (they were already clean), tested the solenoid 12.7v, and checked for error codes - I get code 12 which is "normal condition (diagnostics system is operational)" - (as an aside, *** is the point of this code?).

Here are my questions:

1)Could the battery could still be bad even though it says 12.7v?
2)Does 12.7v at the solenoid mean I can rule it out?
3)Could the ignition switch be the problem even though the key positions do respond appropriately?

Thanks for the help guys

Hook up a charger on jump and rule in or out the battery,could be Solenoid not closing when the key switch /wire is hot. Cheap to replace I carry an extra solenoid in my tool box....

Try testing the battery voltage with a multimeter when you turn the key and see if it still stays at 12.7. Not sure you have the same problem as myself but I had a newish battery that dropped a cell. When I tested the battery by itself it would read over 12 volts but when put under load the voltage would drop down below 10 volts and would not start.

mr mastercraft, by "check ground at engine", what does that involve doing? when i was checking voltage at the solenoid i was using the engine ground as my negative. the engine ground looked good/very clean

carracer, is there any way to test the solenoid?

i should have said, originally the battery voltage was 12.3, would drop to 12.15 when i turned the key. after putting the battery on a trickle charge for a few hours voltage was 12.7.... that being said, i just realized the date code on the battery is august 2006. does it need to be replaced even though the voltage is still high? not sure how i can test amperage/capacity?

lanyard is good. that was one of my first thoughts...we've been through that one before

what does no click at the starter suggest? could the ignition switch be suspect in these types of problems?


The DailyMed website is a valuable website when it comes to chemical names, trade names, drug names and chemical structures.What is interesting is the quality of the information on the website. We were originally interested in using the website to expand our dictionary of drug names and associated chemical structures and exercising our text-mining tools to recognize chemical structures. In order to test our text-mining capabilities we had to examine every record for accuracy and appropriateness and to tune the algorithms. This amounted to over 3000 records. During this process we were able to review every chemical structure diagram and the appropriateness of these diagrams. As part of the process we were able to build a highly validated dataset of chemical structures and their chemical/trade/drug names. These will be exposed on ChemSpider in the near future.

For now lets examine the quality of information on Daily Med.

The website is advertised as:

“DailyMed provides high quality information about marketed drugs. This information includes FDA approved labels (package inserts). This Web site provides health information providers and the public with a standard, comprehensive, up-to-date, look-up and download resource of medication content and labeling as found in medication package inserts. ”

So, what type of materials can we find on Daily Med?

Look at Soltamox here. What do you think about the chemical structure image below? Do you think that was drawn with a structure drawing software package?

My favorite “not drawn by a chemist” chemical structure is the one for cefobid shown below.

Many chemical structures on DailyMed are imperfect. What is quite shocking is that many of these are not even drawn with structure drawing packages. There are other issues…more to come.

COMMENT: DailyMed is a delivery vehicle for content provided by vendors (I believe). The site is a valuable public service and is applauded. The hope is the work that we are doing on Daily Med will be of similar value and might encourage that some of the labels will be “cleaned up”

Can we import the records to Chemspider, clean them up here, and then re-export them back to DailyMed (will they allow it)? That last one (cefobid) is particularly bad, I can barely tell that it is one structure.

The DailyMed is constrained to present only the material in the label section that has been approved by the FDA. The content of those labels is the FDA approved information about the products. The drawings, as part of that label, cannot be altered by the National Library of Medicine. I would suggest you contact the folks at the FDA, or even the manufacturer, about them submitting to FDA higher quality structural drawings.
Unfortunately, even if Chemspider cleaned up the drawings and sent them back to me, I could not put them into the label.

Stuart, Thanks for the comments. I understand the constraints. I’ve discussed with the FDA already. I have no idea who to talk to at the manufacturers and don’t have the time or resources to figure that out I’m afraid.

I was involved in the early research of Daily Med as an outside solutions vendor. The approach the FDA took to the adoption of Daily Med was one of Centralized Innovation Diffusion (Roger’s, 1995). In my humble opinion, what this has caused is mandated industry adoption but not integration into the various industry wide systems that could benefit from the collection of this information. Our Daily Med, ISBN: 978-3-8383-1035-0 is a book that describes the Daily Med Innovation adoption based upon Roger’s Diffusion of Innovation.