text:
GameTask::GameTask()
    :m_dialogue(new umap_dialogue)
    ,m_taskDesc(new umap_taskDescription)
    ,m_taskAim(new umap_taskAim)
    ,m_taskReward(new umap_taskReward)
    ,m_goodsReward(new umap_goodsReward)
    ,m_taskProfile(new _umap_taskProfile)
    ,m_taskPremise(new umap_taskPremise)
{

}

GameTask::~GameTask()
{
    delete m_dialogue;
    delete m_taskDesc;
    delete m_taskAim;
    delete m_taskReward;
    delete m_goodsReward;
    delete m_taskPremise;
}

//请求任务
void GameTask::AskTask(TCPConnection::Pointer conn, hf_uint32 taskid)
{
    //判断任务条件,暂时只判断等级
    SessionMgr::SessionMap* smap = SessionMgr::Instance()->GetSession().get();
    STR_RoleBasicInfo* t_RoleBaseInfo = &(*smap)[conn].m_RoleBaseInfo;

    umap_taskProcess playerAcceptTask = (*smap)[conn].m_playerAcceptTask;

    _umap_taskProcess::iterator it = playerAcceptTask->find(taskid);
    if(it != playerAcceptTask->end()) //已经接取当前任务
    {
        return;
    }

    //得到该任务的任务要求
    umap_taskPremise::iterator task_it = m_taskPremise->find(taskid);
    if(task_it == m_taskPremise->end()) //发送的任务编号错误
    {
        return;
    }
    STR_PackAskResult t_askResult;
    t_askResult.TaskID = taskid;
    //判断接取条件,暂时只判断等级
    if(t_RoleBaseInfo->Level < task_it->second.Level)  //等级不符合
    {
        t_askResult.Result = RESULT_LEVEL;
        conn->Write_all(&t_askResult, sizeof(STR_PackAskResult));
        return;
    }

    t_askResult.Result = RESULT_SUCCESS;   //请求任务成功
    conn->Write_all(&t_askResult, sizeof(STR_PackAskResult));

    STR_TaskProcess t_taskProcess;
    umap_taskAim::iterator iter= m_taskAim->find(taskid);
    if(iter != m_taskAim->end())
    {
        hf_char* buff = (hf_char*)Server::GetInstance()->malloc();
        t_taskProcess.TaskID = taskid;
        for(vector<STR_TaskAim>::iterator aim_it = iter->second.begin(); aim_it != iter->second.end(); aim_it++) //一个任务可能有多个任务目标
        {
            t_taskProcess.AimID = aim_it->AimID;
            t_taskProcess.AimAmount = aim_it->Amount;
            t_taskProcess.ExeModeID = aim_it->ExeModeID;
            if(aim_it->ExeModeID == EXE_collect_goods) //收集物品任务
            {
                //将此物品加到任务物品中
                 _umap_taskGoods::iterator taskGoods_it = (*smap)[conn].m_taskGoods->find(aim_it->AimID);
                 if(taskGoods_it != (*smap)[conn].m_taskGoods->end())
                 {
                    taskGoods_it->second.push_back(taskid);
                 }
                 else
                 {
                     vector<hf_uint32> t_vec;
                     t_vec.push_back(taskid);
                     (*(*smap)[conn].m_taskGoods)[aim_it->AimID] = t_vec;
                 }
                 //此数量从背包查得
                 t_taskProcess.FinishCount = OperationGoods::GetThisGoodsCount(conn,aim_it->AimID);
            }
            else if(aim_it->ExeModeID == EXE_upgrade) //升级任务
            {
                t_taskProcess.FinishCount = (*smap)[conn].m_RoleBaseInfo.Level;
            }
            else  //EXE_attack_monster
            {
                t_taskProcess.FinishCount = 0;
            }

            //现在为多目标第一个目标创建,第二个目标直接添加
             _umap_taskProcess::iterator process_it = playerAcceptTask->find(taskid);
             if(process_it != playerAcceptTask->end())
             {
                 process_it->second.push_back(t_taskProcess);
             }
             else
             {
                 vector<STR_TaskProcess> vec_process;
                 vec_process.push_back(t_taskProcess);
                 (*playerAcceptTask)[taskid] = vec_process;
             }
             Server::GetInstance()->GetOperationPostgres()->PushUpdateTask((*smap)[conn].m_roleid, &t_taskProcess, PostInsert); //将新任务添加到list
             memcpy(buff + sizeof(STR_PackHead), &t_taskProcess, sizeof(STR_TaskProcess));
        }
        STR_PackHead t_packHead;
        t_packHead.Flag = FLAG_TaskProcess;
        t_packHead.Len = sizeof(STR_TaskProcess) * iter->second.size();
        memcpy(buff, &t_packHead, sizeof(STR_PackHead));
        conn->Write_all(buff, sizeof(STR_PackHead) + t_packHead.Len);
        Server::GetInstance()->free(buff);
    }
}

 //放弃任务
void GameTask::QuitTask(TCPConnection::Pointer conn, hf_uint32 taskid)
{
     //将任务添加到该角色的任务列表里,退出时将未完成的任务写进数据库。
    SessionMgr::SessionMap* smap = SessionMgr::Instance()->GetSession().get();
    umap_taskProcess playerAcceptTask = (*smap)[conn].m_playerAcceptTask;
    _umap_taskProcess::iterator it = playerAcceptTask->find(taskid);
    if(it != playerAcceptTask->end())
    {
        umap_taskGoods t_taskGoods = (*smap)[conn].m_taskGoods;
        for(vector<STR_TaskProcess>::iterator process_it = it->second.begin(); process_it != it->second.end(); process_it++)
        {
            //如果要删除任务的任务的执行方式为收集物品,则删除任务时需要更新玩家任务物品
            if(process_it->ExeModeID == EXE_collect_goods)
            {
                _umap_taskGoods::iterator taskGoods_it = t_taskGoods->find(process_it->AimID);
                if(taskGoods_it != t_taskGoods->end())
                {
                    for(vector<hf_uint32>::iterator iter = taskGoods_it->second.begin(); iter != taskGoods_it->second.end(); )
                    {
                        if(*iter == taskid)
                        {
                            vector<hf_uint32>::iterator _iter = iter;
                            iter++;
                            taskGoods_it->second.erase(_iter);
                        }
                    }
                    if(taskGoods_it->second.size() == 0)
                    {
                        t_taskGoods->erase(taskGoods_it);
                    }
                }
            }

            Server::GetInstance()->GetOperationPostgres()->PushUpdateTask((*smap)[conn].m_roleid, &(*process_it), PostDelete); //将任务从list中删除
        }
        playerAcceptTask->erase(it);
    }
}

//请求完成任务
void GameTask::AskFinishTask(TCPConnection::Pointer conn, STR_FinishTask* finishTask)
{
    SessionMgr::SessionMap* smap = SessionMgr::Instance()->GetSession().get();
    umap_taskProcess playerAcceptTask = (*smap)[conn].m_playerAcceptTask;
    _umap_taskProcess::iterator it = playerAcceptTask->find(finishTask->TaskID);
    if(it == playerAcceptTask->end()) //没接取当前任务
    {
        Server::GetInstance()->free(finishTask);
        return;
    }

    for(vector<STR_TaskProcess>::iterator process_it = it->second.begin(); process_it != it->second.end(); process_it++)
    {
        if(process_it->AimAmount != process_it->FinishCount)
            return;
    }

    vector<hf_uint32> reduceGoods;//用来保存任务完成时从背包删除的物品ID
    for(vector<STR_TaskProcess>::iterator process_it = it->second.begin(); process_it != it->second.end(); process_it++)
    {
        if(process_it->ExeModeID == EXE_collect_goods)
        {//在背包去掉目标数量的物品
            FinishCollectGoodsTask(conn, &(*process_it));
            reduceGoods.push_back(process_it->AimID);
        }
        if(!TaskFinishGoodsReward(conn, finishTask)) //物品奖励
        {
            Server::GetInstance()->free(finishTask);
            return;
        }
        TaskFinishTaskReward(conn, finishTask);  //任务奖励
        Server::GetInstance()->GetOperationPostgres()->PushUpdateTask((*smap)[conn].m_roleid, &(*process_it), PostDelete); //将任务从list中删除
    }

    for(vector<hf_uint32>::iterator reduce_it = reduceGoods.begin(); reduce_it != reduceGoods.end(); reduce_it++)
    {
        UpdateCollectGoodsTaskProcess(conn, *reduce_it);
    }
    (*smap)[conn].m_playerAcceptTask->erase(it);
    Server::GetInstance()->free(finishTask);
}

bool GameTask::TaskFinishGoodsReward(TCPConnection::Pointer conn, STR_FinishTask* finishTask)
{
    SessionMgr::SessionMap* smap = SessionMgr::Instance()->GetSession().get();
    umap_goodsReward::iterator goodsReward_it = m_goodsReward->find(finishTask->TaskID);
    if(goodsReward_it == m_goodsReward->end()) //没有物品奖励
    {
        return true;
    }
    hf_uint32 roleid = (*smap)[conn].m_roleid;
    hf_uint8   PosCount = 0;  //需要的空格子
    //判断能否放下
//    PosCount = goodsReward_it->second.size();
    for(vector<STR_PackGoodsReward>::iterator good_it = goodsReward_it->second.begin(); good_it != goodsReward_it->second.end(); good_it++)
    {
        if(EquTypeMinValue <= good_it->GoodsID && good_it->GoodsID <= EquTypeMaxValue) //装备
        {
            PosCount++;
        }
        else
        {
            PosCount = PosCount + good_it->Count/GOODSMAXCOUNT + 1;
        }
    }
    if(OperationGoods::UseEmptyPos(conn, PosCount) > 0) //空格子不够
    {
        STR_PackFinishTaskResult t_taskResult;
        t_taskResult.TaskID = finishTask->TaskID;
        t_taskResult.Result = FINISH_TASKFAIL;
        conn->Write_all(&t_taskResult, sizeof(STR_PackFinishTaskResult));
        return false;
    }

    hf_char* newGoodsBuff = (hf_char*)Server::GetInstance()->malloc();
    hf_char* equAttrBuff = (hf_char*)Server::GetInstance()->malloc();
    hf_uint8 goodsCount = 0;
    hf_uint8 equCount = 0;
    umap_roleGoods  playerGoods = (*smap)[conn].m_playerGoods;
    umap_roleEqu    playerEqu = (*smap)[conn].m_playerEqu;

    OperationPostgres* t_post = Server::GetInstance()->GetOperationPostgres();

    for(vector<STR_PackGoodsReward>::iterator good_it = goodsReward_it->second.begin(); good_it != goodsReward_it->second.end(); good_it++)
    {
        if(good_it->Type == DefaultGoods || finishTask->SelectGoodsID == good_it->GoodsID)
        {
            if(EquTypeMinValue <= good_it->GoodsID && good_it->GoodsID <= EquTypeMaxValue) //装备
            {
                STR_PlayerEqu t_equ;
                t_equ.goods.Count = 1;
                t_equ.goods.Position = OperationGoods::GetEmptyPos(conn);
                t_equ.goods.Source = Source_Task;
                t_equ.goods.GoodsID = OperationGoods::GetEquipmentID();
                t_equ.goods.TypeID = good_it->GoodsID; //可选装备奖励只有一件
                Server::GetInstance()->GetOperationGoods()->SetEquAttr(&t_equ.equAttr, t_equ.goods.TypeID);   //给新捡装备属性附初值
                t_equ.equAttr.EquID = t_equ.goods.GoodsID;

               (*playerEqu)[t_equ.goods.GoodsID] = t_equ;

                 memcpy(newGoodsBuff + sizeof(STR_PackHead) + goodsCount*sizeof(STR_Goods), &t_equ.goods, sizeof(STR_Goods));
                 goodsCount++;
                  t_post->PushUpdateGoods(roleid, &t_equ.goods, PostInsert); //将新买的物品添加到list
                 memcpy(equAttrBuff + sizeof(STR_PackHead) + equCount*sizeof(STR_Equipment), &t_equ.equAttr, sizeof(STR_Equipment));
                 equCount++;
                 t_post->PushUpdateEquAttr(roleid, &t_equ.equAttr, PostInsert); //将新买的物品添加到list
                 UpdateCollectGoodsTaskProcess(conn, t_equ.goods.TypeID);
            }
            else
            {
                STR_Goods t_goods;
                if(good_it->Type == DefaultGoods)
                {
                    t_goods.GoodsID = good_it->GoodsID;
                    t_goods.TypeID = good_it->GoodsID;
                }
                else
                {
                    t_goods.GoodsID = finishTask->SelectGoodsID;
                    t_goods.TypeID = finishTask->SelectGoodsID;
                }
                t_goods.Position = OperationGoods::GetEmptyPos(conn);
                t_goods.Source = Source_Task;
                for(hf_uint8 i = 0; i < good_it->Count/GOODSMAXCOUNT + 1; i++)
                {
                    if(good_it->Count - i*GOODSMAXCOUNT >= GOODSMAXCOUNT)
                        t_goods.Count = GOODSMAXCOUNT;
                    else
                        t_goods.Count = good_it->Count - i*GOODSMAXCOUNT;

                   memcpy(newGoodsBuff + sizeof(STR_PackHead) + goodsCount*sizeof(STR_Goods), &t_goods, sizeof(STR_Goods));
                   goodsCount++;
                   t_post->PushUpdateGoods(roleid, &t_goods, PostInsert); //将新买的物品添加到list
                   _umap_roleGoods::iterator playerGoods_it = playerGoods->find(t_goods.GoodsID);
                   if(playerGoods_it == playerGoods->end())
                   {
                       vector<STR_Goods> vec;
                       vec.push_back(t_goods);
                       (*playerGoods)[t_goods.GoodsID] = vec;
                   }
                   else
                   {
                       playerGoods_it->second.push_back(t_goods);
                   }
                   UpdateCollectGoodsTaskProcess(conn, t_goods.TypeID);
                }
            }
        }
    }
    STR_PackHead t_packHead;
    if(goodsCount)
    {
        t_packHead.Len = sizeof(STR_Goods) * goodsCount;
        t_packHead.Flag = FLAG_BagGoods;
        memcpy(newGoodsBuff, &t_packHead, sizeof(STR_PackHead));
        conn->Write_all(newGoodsBuff, sizeof(STR_PackHead) + t_packHead.Len);
    }
    if(equCount)
    {
        t_packHead.Len = sizeof(STR_Equipment) * equCount;
        t_packHead.Flag = FLAG_EquGoodsAttr;
        memcpy(equAttrBuff, &t_packHead, sizeof(STR_PackHead));
        conn->Write_all(equAttrBuff, sizeof(STR_PackHead) + t_packHead.Len);
    }
    Server::GetInstance()->free(newGoodsBuff);
    Server::GetInstance()->free(equAttrBuff);
    return true;
}

void GameTask::TaskFinishTaskReward(TCPConnection::Pointer conn, STR_FinishTask* finishTask)
{
    SessionMgr::SessionMap* smap = SessionMgr::Instance()->GetSession().get();
    umap_taskReward::iterator taskReward_it = m_taskReward->find(finishTask->TaskID);
    if(taskReward_it != m_taskReward->end())  //任务奖励
    {
        if(taskReward_it->second.Experience != 0) //经验
        {
            STR_PackRewardExperience t_RewardExp;
            t_RewardExp.ID = finishTask->TaskID;
            t_RewardExp.Experience = taskReward_it->second.Experience;
            conn->Write_all(&t_RewardExp, sizeof(STR_PackRewardExperience));

            STR_PackRoleExperience* t_RoleExp = &(*smap)[conn].m_roleExp;

            //玩家升级
            if(t_RoleExp->CurrentExp + t_RewardExp.Experience >= t_RoleExp->UpgradeExp)
            {
                t_RoleExp->Level += 1;
                Server::GetInstance()->GetOperationPostgres()->PushUpdateLevel((*smap)[conn].m_roleid, t_RoleExp->Level);
                t_RoleExp->CurrentExp = t_RoleExp->CurrentExp + t_RewardExp.Experience - t_RoleExp->UpgradeExp;
                t_RoleExp->UpgradeExp = GetUpgradeExprience(t_RoleExp->Level);
            }
            else
            {
                t_RoleExp->CurrentExp = t_RoleExp->CurrentExp + t_RewardExp.Experience;
            }
            Server::GetInstance()->GetOperationPostgres()->PushUpdateExp((*smap)[conn].m_roleid, t_RoleExp->UpgradeExp);
            conn->Write_all(t_RoleExp, sizeof(STR_PackRoleExperience));
        }
        if(taskReward_it->second.Money != 0) //金钱
        {
            STR_PlayerMoney* playerMoney = &(*((*smap)[conn].m_playerMoney))[Money_1];
            playerMoney->Count += taskReward_it->second.Money;
            Server::GetInstance()->GetOperationPostgres()->PushUpdateMoney((*smap)[conn].m_roleid, playerMoney);
            STR_PackPlayerMoney t_money(playerMoney);
            conn->Write_all(&t_money, sizeof(STR_PackPlayerMoney));
        }
    }
     STR_PackFinishTaskResult t_taskResult;
     t_taskResult.TaskID = finishTask->TaskID;
     t_taskResult.Result = FINISH_TASKSUCCESS;
     conn->Write_all(&t_taskResult, sizeof(STR_PackFinishTaskResult));
}

//请求完成收集物品任务
void GameTask::FinishCollectGoodsTask(TCPConnection::Pointer conn, STR_TaskProcess* taskProcess)
{
    SessionMgr::SessionMap* smap = SessionMgr::Instance()->GetSession().get();
    OperationPostgres* t_post = Server::GetInstance()->GetOperationPostgres();
    hf_char* buff = (hf_char*)Server::GetInstance()->malloc();

    hf_uint32 roleid = (*smap)[conn].m_roleid;
    STR_PackHead t_packHead;
    t_packHead.Flag = FLAG_TaskProcess;
    hf_uint32 i = 0;

    if(EquTypeMinValue <= taskProcess->AimID  && taskProcess->AimID <= EquTypeMaxValue) //装备
    {
        umap_roleEqu playerEqu = (*smap)[conn].m_playerEqu;
        for(_umap_roleEqu::iterator it = playerEqu->begin(); it != playerEqu->end(); it++)
        {
            if(it->second.goods.TypeID == taskProcess->AimID)
            {
                it->second.goods.Count = 0;
                memcpy(buff + sizeof(STR_PackHead) + i*sizeof(STR_Goods), &(it->second.goods), sizeof(STR_Goods));
                i++;
                t_post->PushUpdateGoods(roleid, &(it->second.goods), PostDelete);
                t_post->PushUpdateEquAttr(roleid, &(it->second.equAttr), PostDelete);
                _umap_roleEqu::iterator _it = it;
                playerEqu->erase(_it);
            }
            if(i == taskProcess->AimAmount)
            {
                break;
            }
        }
    }
    else  //其他物品
    {
        umap_roleGoods playerGoods = (*smap)[conn].m_playerGoods;
        _umap_roleGoods::iterator goods_it = playerGoods->find(taskProcess->AimID);
        if(goods_it != playerGoods->end())
        {
            hf_uint32 count = taskProcess->AimAmount;
            for(vector<STR_Goods>::iterator it = goods_it->second.begin(); it != goods_it->second.end(); it++)
            {
                if(it->Count > count)
                {
                    it->Count -= count;
                    memcpy(buff + sizeof(STR_PackHead) + i*sizeof(STR_Goods), &(*it), sizeof(STR_Goods));
                    i++;
                    t_post->PushUpdateGoods(roleid, &(*it), PostUpdate);
                    break;
                }
                else if(it->Count < count)
                {
                    it->Count = 0;
                    count -= it->Count;
                    memcpy(buff + sizeof(STR_PackHead) + i*sizeof(STR_Goods), &(*it), sizeof(STR_Goods));
                    i++;
                    t_post->PushUpdateGoods(roleid, &(*it), PostDelete);
                    vector<STR_Goods>::iterator _it = it;
                    goods_it->second.erase(_it);
                }
                else
                {
                    it->Count -= count;
                    memcpy(buff + sizeof(STR_PackHead) + i*sizeof(STR_Goods), &(*it), sizeof(STR_Goods));
                    i++;
                    t_post->PushUpdateGoods(roleid, &(*it), PostUpdate);
                    goods_it->second.erase(it);
                    break;
                }
            }
        }
        if(goods_it->second.size() == 0)
        {
            playerGoods->erase(goods_it);
        }
    }
    t_packHead.Len = sizeof(STR_TaskProcess)*i;
    memcpy(buff, &t_packHead, sizeof(STR_PackHead));
    conn->Write_all(buff, sizeof(STR_PackHead) + t_packHead.Len);
    Server::GetInstance()->free(buff);
}

 //请求任务对话
void GameTask::StartTaskDlg(TCPConnection::Pointer conn, hf_uint32 taskid)
{
    umap_dialogue::iterator it = (*m_dialogue).find(taskid);
    if(it != (*m_dialogue).end())
    {
        hf_char* buff = (hf_char*)Server::GetInstance()->malloc();
        STR_PackTaskDlg t_dlg= (*m_dialogue)[taskid];
        STR_PackHead t_packHead;
        t_packHead.Len =  t_dlg.StartLen + sizeof(t_dlg.TaskID);
        t_packHead.Flag = FLAG_StartTaskDlg;
        memcpy(buff, &t_packHead, sizeof(STR_PackHead));
        memcpy(buff + sizeof(STR_PackHead), &t_dlg.TaskID, sizeof(t_dlg.TaskID));
        memcpy(buff + sizeof(STR_PackHead) + sizeof(t_dlg.TaskID), t_dlg.StartDialogue, t_dlg.StartLen);

        conn->Write_all(buff, sizeof(STR_PackHead) + t_packHead.Len);
        Server::GetInstance()->free(buff);
    }
}

//请求任务结束对话
void GameTask::FinishTaskDlg(TCPConnection::Pointer conn, hf_uint32 taskid)
{
    umap_dialogue::iterator it = (*m_dialogue).find(taskid);
    if(it != (*m_dialogue).end())
    {
        hf_char* buff = (hf_char*)Server::GetInstance()->malloc();
        STR_PackTaskDlg t_dlg= (*m_dialogue)[taskid];
        STR_PackHead t_packHead;
        t_packHead.Len = t_dlg.FinishLen + sizeof(t_dlg.TaskID) ;
        t_packHead.Flag = FLAG_FinishTaskDlg;
        memcpy(buff, &t_packHead, sizeof(STR_PackHead));
        memcpy(buff + sizeof(STR_PackHead), &t_dlg.TaskID, sizeof(t_dlg.TaskID));
        memcpy(buff + sizeof(STR_PackHead) + sizeof(t_dlg.TaskID), t_dlg.FinishDialogue, t_dlg.FinishLen);

        conn->Write_all(buff, sizeof(STR_PackHead) + t_packHead.Len);
        Server::GetInstance()->free(buff);
    }
}
 //请求任务描述
void GameTask::TaskDescription(TCPConnection::Pointer conn, hf_uint32 taskid)
{
    umap_taskDescription::iterator it = (*m_taskDesc).find(taskid);
    if(it != (*m_taskDesc).end())
    {
        STR_PackTaskDescription t_desc= (*m_taskDesc)[taskid];
        conn->Write_all(&t_desc, sizeof(STR_PackTaskDescription));
    }
}

 //请求任务目标
void GameTask::TaskAim(TCPConnection::Pointer conn, hf_uint32 taskid)
{
    umap_taskAim::iterator it = m_taskAim->find(taskid);
    if(it != m_taskAim->end())
    {
        hf_char* buff = (hf_char*)Server::GetInstance()->malloc();
        for(vector<STR_TaskAim>::iterator iter = it->second.begin(); iter != it->second.end(); iter++)
        {
            memcpy(buff + sizeof(STR_PackHead), &(*iter), sizeof(STR_TaskAim));
        }
        STR_PackHead t_packHead;
        t_packHead.Flag = FLAG_TaskAim;
        t_packHead.Len = it->second.size();
        conn->Write_all(buff, sizeof(STR_PackHead) + t_packHead.Len);
        Server::GetInstance()->free(buff);
    }
}

 //请求任务奖励
void GameTask::TaskReward(TCPConnection::Pointer conn, hf_uint32 taskid)
{
    Server* srv = Server::GetInstance();
    hf_char* buff = (hf_char*)srv->malloc();
    STR_PackHead        t_packHead;
    t_packHead.Flag = FLAG_TaskReward;
    umap_taskReward::iterator it = (*m_taskReward).find(taskid);  //其他奖励
    if(it != (*m_taskReward).end())
    {
        memcpy(buff + sizeof(STR_PackHead), &(*m_taskReward)[taskid], sizeof(STR_PackTaskReward));
    }

    umap_goodsReward::iterator iter = (*m_goodsReward).find(taskid);  //奖励物品
    hf_uint8 i = 0;
    if(iter != (*m_goodsReward).end())
    {
        for(vector<STR_PackGoodsReward>::iterator itt = iter->second.begin(); itt != iter->second.end(); itt++)
        {
            memcpy(buff + sizeof(STR_PackHead) + sizeof(STR_PackTaskReward) + i*sizeof(STR_PackGoodsReward), &itt->GoodsID, sizeof(STR_PackGoodsReward));
            i++;
        }
    }
    t_packHead.Len = sizeof(STR_PackTaskReward) + i*sizeof(STR_PackGoodsReward);
    memcpy(buff, &t_packHead, sizeof(STR_PackHead));
    conn->Write_all(buff, sizeof(STR_PackHead) + t_packHead.Len);
    srv->free(buff);
}

 //发送已接取的任务进度,和任务概述
void GameTask::SendPlayerTaskProcess(TCPConnection::Pointer conn)
{
    Server* srv = Server::GetInstance();
     //根据任务条件和玩家信息判断玩家可接取的任务
    SessionMgr::SessionMap* smap = SessionMgr::Instance()->GetSession().get();
    umap_taskProcess playerAcceptTask = ((*smap)[conn]).m_playerAcceptTask;
    //查询任务进度
    StringBuilder builder;
    builder << "select * from t_playertaskprocess where roleid = " << (*smap)[conn].m_roleid << ";";
    Logger::GetLogger()->Debug(builder.str());
    if ( srv->getDiskDB()->GetPlayerTaskProcess(playerAcceptTask, (const hf_char*)builder.str()) < 0 )
    {
        Logger::GetLogger()->Error("Query playerAcceptTask error");
        return;
    }

    //发送已接取的任务进度
    if(playerAcceptTask->size() > 0)
    {
        umap_taskGoods taskGoods = (*smap)[conn].m_taskGoods;
        hf_char* buff = (hf_char*)srv->malloc();
        hf_char* probuff = (hf_char*)srv->malloc();
        hf_uint32 i = 0;
        hf_uint32 j = 0;
        for(_umap_taskProcess::iterator it = playerAcceptTask->begin();it != playerAcceptTask->end(); it++)
        {
            (*m_taskProfile)[it->first].Status = 2;
            memcpy(probuff + sizeof(STR_PackHead) + i*sizeof(STR_TaskProfile), &(*m_taskProfile)[it->first], sizeof(STR_TaskProfile));

            for(vector<STR_TaskProcess>::iterator iter = it->second.begin(); iter != it->second.end(); iter++)
            {
                memcpy(buff + sizeof(STR_PackHead) + j*sizeof(STR_TaskProcess), &(*iter), sizeof(STR_TaskProcess));
                j++;
                if(iter->ExeModeID == EXE_collect_goods)
                {
                    _umap_taskGoods::iterator taskGoods_it = taskGoods->find(iter->AimID);
                    if(taskGoods_it == taskGoods->end())
                    {
                        vector<hf_uint32> vec;
                        vec.push_back(iter->TaskID);
                        (*taskGoods)[iter->AimID] = vec;
                    }
                    else
                    {
                        taskGoods_it->second.push_back(iter->TaskID);
                    }
                }
            }
            i++;
        }

        STR_PackHead t_packHead;
        //发送玩家已经接取的任务的任务概述
        t_packHead.Flag = FLAG_TaskProfile;
        t_packHead.Len = sizeof(STR_TaskProfile) * i;
        memcpy(probuff, &t_packHead, sizeof(STR_PackHead));
        conn->Write_all(probuff, sizeof(STR_PackHead) + t_packHead.Len);

        t_packHead.Flag = FLAG_TaskProcess;
        t_packHead.Len = sizeof(STR_TaskProcess) * j;
        memcpy(buff, &t_packHead, sizeof(STR_PackHead));
        conn->Write_all(buff, sizeof(STR_PackHead) + t_packHead.Len);

        srv->free(buff);
        srv->free(probuff);
    }
}

//发送玩家可视范围内的任务
void GameTask::SendPlayerViewTask(TCPConnection::Pointer conn)
{
    //根据任务条件和玩家信息判断玩家可接取的任务
    SessionMgr::SessionMap* smap = SessionMgr::Instance()->GetSession().get();
    STR_RoleBasicInfo* t_RoleBaseInfo = &(*smap)[conn].m_RoleBaseInfo; //得到玩家信息
    umap_taskProcess playerAcceptTask = ((*smap)[conn]).m_playerAcceptTask;

    hf_int32 size = 0;
    Server* srv = Server::GetInstance();
    hf_char* buff = (hf_char*)srv->malloc();
    STR_PackHead t_packHead;
    //发送玩家所在地图上的任务
    for(_umap_taskProfile::iterator it = m_taskProfile->begin(); it != m_taskProfile->end(); it++)
    {
        _umap_taskProcess::iterator iter = playerAcceptTask->find(it->first);
        if(iter == playerAcceptTask->end()) //是否已接取
        {
            STR_TaskPremise t_taskpremise = (*m_taskPremise)[it->first];
            if(t_RoleBaseInfo->Level >= t_taskpremise.Level)  //等级符合
            {
                it->second.Status = 1;
                memcpy(buff + sizeof(STR_PackHead) + size*sizeof(STR_TaskProfile), &(*m_taskProfile)[it->first], sizeof(STR_TaskProfile));
                size++;
            }
        }
        if(size == (CHUNK_SIZE - sizeof(STR_PackHead))/sizeof(STR_TaskProfile))
        {
            t_packHead.Flag = FLAG_TaskProfile;
            t_packHead.Len = sizeof(STR_TaskProfile) * size;

            memcpy(buff, (hf_char*)&t_packHead, sizeof(STR_PackHead));
            //发送可接取的任务
            conn->Write_all(buff, sizeof(STR_PackHead) + t_packHead.Len);
            size = 0;
        }
    }

    if(size != (CHUNK_SIZE - sizeof(STR_PackHead))/sizeof(STR_TaskProfile) && size != 0)
    {
        t_packHead.Flag = FLAG_TaskProfile;
        t_packHead.Len = sizeof(STR_TaskProfile) * size;

        memcpy(buff, (hf_char*)&t_packHead, sizeof(STR_PackHead));
        //发送可接取的任务
        conn->Write_all(buff, sizeof(STR_PackHead) + t_packHead.Len);
    }
    srv->free(buff);
}

//查找此任务是否为任务进度里收集物品,如果是,更新任务进度
void GameTask::UpdateCollectGoodsTaskProcess(TCPConnection::Pointer conn, hf_uint32 goodstype)
{
    SessionMgr::SessionMap* smap = SessionMgr::Instance()->GetSession().get();
    umap_taskGoods taskGoods = (*smap)[conn].m_taskGoods;
    _umap_taskGoods::iterator it = taskGoods->find(goodstype);
    if(it == taskGoods->end())
    {
        return;
    }
    umap_taskProcess playerAcceptTask = ((*smap)[conn]).m_playerAcceptTask;
    hf_char* buff = (hf_char*)Server::GetInstance()->malloc();
    STR_PackHead t_packHead;
    t_packHead.Flag = FLAG_TaskProcess;
    t_packHead.Len = 0;

    for(vector<hf_uint32>::iterator task_it = it->second.begin(); task_it != it->second.end(); task_it++)
    {
        _umap_taskProcess::iterator process_it = playerAcceptTask->find(*task_it);
        if(process_it == playerAcceptTask->end())  //基本不会找不到,除非程序出错
        {
            continue;
        }
        hf_uint32 count = OperationGoods::GetThisGoodsCount(conn, goodstype);

        for(vector<STR_TaskProcess>::iterator iter = process_it->second.begin(); iter != process_it->second.end(); iter++)
        {
            if(iter->AimID == goodstype && iter->ExeModeID == EXE_collect_goods)
            {
                if(iter->FinishCount == iter->AimAmount && iter->FinishCount <= count)
                {
                    continue;
                }
                else if(iter->FinishCount > count)
                {
                    iter->FinishCount = iter->AimAmount;
                    Server::GetInstance()->GetOperationPostgres()->PushUpdateTask((*smap)[conn].m_roleid, &(*iter), PostUpdate);
                    memcpy(buff + sizeof(STR_PackHead), &(*iter), sizeof(STR_TaskProcess));
                    t_packHead.Len += sizeof(STR_TaskProcess);
                }
                else
                {
                    iter->FinishCount = count;
                     Server::GetInstance()->GetOperationPostgres()->PushUpdateTask((*smap)[conn].m_roleid, &(*iter), PostUpdate);
                    memcpy(buff + sizeof(STR_PackHead), &(*iter), sizeof(STR_TaskProcess));
                    t_packHead.Len += sizeof(STR_TaskProcess);
                }
            }
        }
    }
    memcpy(buff, &t_packHead, sizeof(STR_PackHead));
    conn->Write_all(buff, sizeof(STR_PackHead) + t_packHead.Len);
    Server::GetInstance()->free(buff);
}

//查找此任务是否为任务进度里打怪任务,如果是,更新任务进度
void GameTask::UpdateAttackMonsterTaskProcess(TCPConnection::Pointer conn, hf_uint32 monstertypeID)
{
    SessionMgr::SessionPointer smap =  SessionMgr::Instance()->GetSession();
    umap_taskProcess playerAcceptTask = ((*smap)[conn]).m_playerAcceptTask;
    hf_char* buff = (hf_char*)Server::GetInstance()->malloc();
    STR_PackHead t_packHead;
    t_packHead.Flag = FLAG_TaskProcess;
    t_packHead.Len = 0;
    for(_umap_taskProcess::iterator t_task = playerAcceptTask->begin(); t_task != playerAcceptTask->end(); t_task++)
    {
        for(vector<STR_TaskProcess>::iterator iter = t_task->second.begin(); iter != t_task->second.end(); iter++)
        {
            if(iter->AimID == monstertypeID && iter->ExeModeID == EXE_attack_monster && iter->FinishCount < iter->AimAmount)
            {
                if(iter->FinishCount == iter->AimAmount)
                {
                    break;
                }
                iter->FinishCount = iter->FinishCount + 1;
                 Server::GetInstance()->GetOperationPostgres()->PushUpdateTask((*smap)[conn].m_roleid, &(*iter), PostUpdate);
                memcpy(buff + sizeof(STR_PackHead), &(*iter), sizeof(STR_TaskProcess));
                t_packHead.Len += sizeof(STR_TaskProcess);
            }
        }
        memcpy(buff, &t_packHead, sizeof(STR_PackHead));
        conn->Write_all(buff, sizeof(STR_PackHead) + t_packHead.Len);
    }
    Server::GetInstance()->free(buff);
}

//将任务相关数据查虚保存到boost::unordered_map结构中,键值为任务编号,值为该任务的数据包,客户端查询某任务数据包时用任务编号查询相关数据包发送给客户端
void GameTask::QueryTaskData()
{
    DiskDBManager* t_db = Server::GetInstance()->getDiskDB();
    //查询任务对话
    if ( t_db->GetTaskDialogue(m_dialogue) < 0 )
    {
        Logger::GetLogger()->Error("Query TaskDialogue error");
        return;
    }

    //查询任务描述
    if ( t_db->GetTaskDescription(m_taskDesc) < 0 )
    {
        Logger::GetLogger()->Error("Query TaskDescription error");
        return;
    }

    //查询任务目标
    if ( t_db->GetTaskAim(m_taskAim) < 0 )
    {
        Logger::GetLogger()->Error("Query TaskAim error");
        return;
    }

    //查询任务奖励
    if ( t_db->GetTaskReward(m_taskReward) < 0 )
    {
        Logger::GetLogger()->Error("Query TaskReward error");
        return;
    }

    //查询物品奖励
    if ( t_db->GetGoodsReward(m_goodsReward) < 0 )
    {
        Logger::GetLogger()->Error("Query GoodsReward error");
        return;
    }

    //查询任务概述
    if ( t_db->GetTaskProfile(m_taskProfile) < 0 )
    {
        Logger::GetLogger()->Error("Query TaskProfile error");
        return;
    }

    //查询任务条件
    if( t_db->GetTaskPremise(m_taskPremise) < 0)
    {
        Logger::GetLogger()->Error("Query TaskPremise error");
    }
}

redpajama_set_name: RedPajamaGithub


Go To "The Body" of "Your Love Letter"
Go To "A Very Special Note" To "My Children"
"The Body" of "Your Love Letter"
Bawa. My Love You My Dearest Loving Son, Muhammad Abdul Qadir Muhaiyaddeen (Ral.), And All of My Dearest Loving Brothers and Sisters, And All of My Dearest Loving Sons and Daughters, and All of My Dearest Loving Grand Children, and Now All of My Dearest Loving Great Grand Children, if you like, and that is for sure. Amen.
Bawa. You Are All Such Very, Very, Very Good Children of God, As In Truth "The Jeweled Lights" of "My Eyes", if you like, and that is for sure. Amen.
Bawa. Thank You My Dearest Loving Son, Muhammad Abdul Qadir Muhaiyaddeen (Ral.) For "The Love and Salaams" That You Continue To Give To Our Dearest Loving Son, And Your Dearest Loving Brother, Shaikh Muhaiyaddeen (Ral.) In Whom "We Are Well Pleased" As Now "One", if you like, and that is for sure. Amen.
Bawa. And Thank You My Dearest Loving Son Muhammad Abdul Qadir Muhaiyaddeen (Ral.) For "The Love and Salaams" That You Continue To Give To Our Dearest Loving Son, And Your Dearest Loving Brother, Shaikh Muhaiyaddeen (Ral.) In Whom "We Are Well Pleased" As Now "One", if you like, and that is for sure. Amen.
Bawa. And Thank You My Dearest Loving Son Muhammad Abdul Qadir Muhaiyaddeen (Ral.) For "The Following Quotation" From Your Dearest Loving Father Bawa Muhaiyaddeen (Ral.) That You Sent To Our Dearest Loving Son, And Your Dearest Loving Brother, Shaikh Muhaiyaddeen (Ral.) In Whom "We Are Well Pleased" As Now "One", That Is, On June 19th, 2086, That Is, As "One Great" Example of "The Brotherly Unity" of "The Bawa Muhaiyaddeen Fellowship", Now For Your Age, Now For All Life, if you like, and that is for sure. Amen.
Bawa. Tawakkul Allah. Amen. As Now "One".
Bawa. We Have Used "This Bawa Quotation" To Start A New Web Site Called "Brotherly-Unity-Stories.Com" Which Will Focus On My Children Being "A Brotherhood" With "Mothers And Brothers", As Bawa Teaches Us, And Now As Our Dearest Loving Son, And Your Dearest Loving Brother, Shaikh Muhaiyaddeen (Ral.) In Whom "We Are Well Pleased" As Now "One", Is Teaching Us Again, if you like, and that is for sure. Amen.
Bawa. And "The First Brotherly-Unity Story" That We Are In The Process of Adding To The "Brotherly-Unity-Stories.Com" Web Site Is "The Story" of "Louie Goes A-Fishing", Which Is "A Story" About "The Great Transition" of Louie From "'God's Child" At "The Age" of 12 Years Old, Into "The Child" of "The Beast" For "The Rest" of "His Life" In "The World", That Is, Until God Intervened In "His Life" At 36 Years of Age, That Is, When He Was Embraced By Bawa Muhaiyaddeen (Ral.), if you like, and that is for sure. Amen.
Bawa. That Is, Which Is "A Story" About "The Great Transition" of Louie From "'God's Child" At "The Age" of 12 Years Old, Into "The Child" of "The Beast" For "The Rest" of "His Life" In "The World", That Is, When In Truth "The Black Snake" Swallows Louie, At "The Age" of 12 Years Old, As "The Black Snake" Has Swallowed All of My Children, At Puberty, Without Exception, Turning You Also Into "The Child" of "The Beast" For "The Rest" of "Your Life" In "The World", That Is, Until God Intervened In "Your Life" Also, if you like, and that is for sure. Amen.
(Bawa. That Is, "If You Are A Wise Child", Now For Our Age, And "Not Just A Foolish Child", Now For Our Age, As Bawa Teaches Us, And Now As Our Dearest Loving Son, And Your Dearest Loving Brother, Shaikh Muhaiyaddeen (Ral.), In Whom "We Are Well Pleased", Is Teaching Us Again, and that is for sure. Amen.
"Song 04" And Now "Song 05" of "The Song Version" of "Our True Story") of Our Dearest Loving Son, And Your Dearest Loving Brother, Shaikh Muhaiyaddeen (Ral.) [AKA "Louie"], In Whom "We Are Well Pleased" As Now "One", if you like, and that is for sure. Amen.
"The Invocation To The Guru", And "The Invocation To Allah") of Your Dearest Loving Father, Bawa Muhaiyaddeen (Ral.),[AKA "Bawa"], In Whom "We Are Well Pleased" As Now "One", if you like, and that is for sure. Amen.
"A Very Special Note" To "My Children"
Bawa. My Dearest Loving Children, In Truth Our Dearest Loving Son, And Your Dearest Loving Brother, Muhammad Abdul Qadir Muhaiyaddeen (Ral.), In Whom "We Are Well Pleased" As Now "One", Is Now Struggling With "The Understanding" of "This Bawa Quotation" (See Above) By Our Dearest Loving Son, And Your Dearest Loving Brother, Shaikh Muhaiyaddeen (Ral.) In Whom "We Are Well Pleased" As Now "One", if you like, and that is for sure. Amen.
Are "One", if you like, and that is for sure. Amen.
Bawa. That Is, With Him Yesterday Sending To Our Dearest Loving Son, And Your Dearest Loving Brother, Shaikh Muhaiyaddeen (Ral.) In Whom "We Are Well Pleased" As Now "One", In Truth The Following "Love Message", if you like, and that is for sure. Amen.
Bawa. So Like We Requested In Our Last Love Letter (In "Love Letter 61") To Our Dearest Loving Son, And Your Dearest Loving Brother, Thomas Muhaiyaddeen (Ral), That Is, Where We Requested That Each of You Sent Our Dearest Loving Son, And Your Dearest Loving Brother, Thomas Muhaiyaddeen (Ral) "A Love Letter" Sharing "A Little Bit" of "Your Story" With Him, And Invite Him, As We Did In "Love Letter 61" To Visit "The Mazar" (Shrine) of His Holiness, Shaikh M. R. Bawa Muhaiyaddeen (Ral.), So Too You Can Now Do The Same For Our Dearest Loving Son, And Your Dearest Loving Brother, Muhammad Abdul Qadir Muhaiyaddeen (Ral.) In Whom "We Are Well Pleased" As Now "One", if you like, and that is for sure. Amen.
Bawa. That Is, So Too You Can Now Do The Same For Our Dearest Loving Son, And Your Dearest Loving Brother, Muhammad Abdul Qadir Muhaiyaddeen (Ral.) In Whom "We Are Well Pleased" As Now "One", if you like, and that is for sure. Amen.
Bawa. That Is, With Each of You Sending Him An E-mail (That Is, At "michaelgreenarts@gmail.com") Sharing "A Little Bit" of "Your Life" With Him, As In Truth Our Dearest Loving Son, And Your Dearest Loving Brother, Shaikh Muhaiyaddeen (Ral.) In Whom "We Are Well Pleased" As Now "One", Has Been Sharing With Him For "The Last 41 Years", And "Your Understanding" of "This Bawa Quotation" (See Above), As Well As "Your Understanding" of "The Following", if you like, and that is for sure. Amen.
01. "Brotherly Unity Story 01" - "Louie Goes A-Fishing".
02. As Well As of "The Support Material" For It Called "Your Truth 101".
"In Truth "Your God" And "Your Beast" Are "One", if you like, and that is for sure. Amen.
"Learning To "Leave Yourself Home", if you like, and that is for sure. Amen.
Bawa. In Truth "That" Would Now Be "A Very Good Thing" To Do, if you like, and that is for sure. Amen.
Bawa. My Love You - My Dearest Loving Children - Shaikh Muhammad Rahim Bawa Muhaiyaddeen (may God be pleased with Him, and with Us, As Now "One"). Amen.


The LancashireBMD site has details of some the births, marriages and deaths recorded at the Lancashire Registration District Office, and provides an easy mechanism to order certificates.
(a) the cost of a certificate is currently (April 2003) £7.00 - send a Sterling cheque payable to the Superintendent Registrar plus return postage or two International Reply Coupons.
(b) the reference numbers from the St Catherine's Index are of no value, but the year and quarter may reduce the amount of searching that the office has to perform.
(c) for marriage certificates, the precise place of marriage must be given.
(d) Civil Registration in England and Wales began on July 1st 1837.
The register office held details for events in Ribble Valley and some records for the closed offices of Clitheroe, Darwen & Nelson.
Details of the place names in the civil registration districts of Clitheroe can help in identifying the census returns to consult as they use a common structure.


text:
Justia Dockets & Filings Sixth Circuit Michigan Western District Taylor v. Commissioner of Social Security Filing 20
Taylor v. Commissioner of Social Security
OPINION affirming the Commissioner's decision; signed by Magistrate Judge Ellen S. Carmody (Magistrate Judge Ellen S. Carmody, jal)
UNITED STATES DISTRICT COURT WESTERN DISTRICT OF MICHIGAN SOUTHERN DIVISION MICHELLE TAYLOR, Plaintiff, Hon. Ellen S. Carmody v. Case No. 1:16-CV-679 COMMISSIONER OF SOCIAL SECURITY, Defendant. ______________________________________/ OPINION This is an action pursuant to Section 205(g) of the Social Security Act, 42 U.S.C. § 405(g), to review a final decision of the Commissioner of Social Security denying Plaintiff's claim for Disability Insurance Benefits (DIB) and Supplemental Security Income (SSI) under Titles II and XVI of the Social Security Act. The parties have agreed to proceed in this Court for all further proceedings, including an order of final judgment. (ECF No. 14). Section 405(g) limits the Court to a review of the administrative record and provides that if the Commissioner's decision is supported by substantial evidence it shall be conclusive. The Commissioner has found that Plaintiff is not disabled within the meaning of the Act. For the reasons stated below, the Court concludes that the Commissioner's decision is supported by substantial evidence. Commissioner's decision is affirmed. Accordingly, the STANDARD OF REVIEW The Court's jurisdiction is confined to a review of the Commissioner's decision and of the record made in the administrative hearing process. See Willbanks v. Sec'y of Health and Human Services, 847 F.2d 301, 303 (6th Cir. 1988). The scope of judicial review in a social security case is limited to determining whether the Commissioner applied the proper legal standards in making her decision and whether there exists in the record substantial evidence supporting that decision. See Brainard v. Sec'y of Health and Human Services, 889 F.2d 679, 681 (6th Cir. 1989). The Court may not conduct a de novo review of the case, resolve evidentiary conflicts, or decide questions of credibility. See Garner v. Heckler, 745 F.2d 383, 387 (6th Cir. 1984). It is the Commissioner who is charged with finding the facts relevant to an application for disability benefits, and her findings are conclusive provided they are supported by substantial evidence. See 42 U.S.C. § 405(g). Substantial evidence is more than a scintilla, but less than a preponderance. See Cohen v. Sec'y of Dep't of Health and Human Services, 964 F.2d 524, 528 (6th Cir. 1992) (citations omitted). It is such relevant evidence as a reasonable mind might accept as adequate to support a conclusion. See Richardson v. Perales, 402 U.S. 389, 401 (1971); Bogle v. Sullivan, 998 F.2d 342, 347 (6th Cir. 1993). In determining the substantiality of the evidence, the Court must consider the evidence on the record as a whole and take into account whatever in the record fairly detracts from its weight. See Richardson v. Sec'y of Health and Human Services, 735 F.2d 962, 963 (6th Cir. 1984). As has been widely recognized, the substantial evidence standard presupposes the existence of a zone within which the decision maker can properly rule either way, without judicial interference. See Mullen v. Bowen, 800 F.2d 535, 545 (6th Cir. 1986) (citation omitted). This 2 standard affords to the administrative decision maker considerable latitude, and indicates that a decision supported by substantial evidence will not be reversed simply because the evidence would have supported a contrary decision. See Bogle, 998 F.2d at 347; Mullen, 800 F.2d at 545. PROCEDURAL POSTURE Plaintiff was 39 years of age on her alleged disability onset date. (PageID.225). She successfully completed college and last worked as a secretary and dental assistant. (PageID.61, 154). Plaintiff applied for benefits on November 21, 2013, alleging that she had been disabled since November 4, 2007, due to lupus, ADHD, C3-C4 fusion, closed head injury, PTSD, and memory issues. (PageID.225-34, 313). Plaintiff's application was denied, after which time she requested a hearing before an Administrative Law Judge (ALJ). (PageID.91-222). On August 26, 2014, Plaintiff appeared before ALJ Richard Guida with testimony being offered by Plaintiff and a vocational expert. (PageID.51-89). In a written decision dated February 11, 2015, the ALJ determined that Plaintiff was not disabled. (PageID.140-56). The Appeals Council declined to review the ALJ's decision, rendering it the Commissioner's final decision in the matter. (PageID.41-43). Plaintiff subsequently initiated this action pursuant to 42 U.S.C. § 405(g), seeking judicial review of the ALJ's decision. Plaintiff's insured status expired on March 31, 2009. (PageID.142). Accordingly, to be eligible for Disability Insurance Benefits under Title II of the Social Security Act, Plaintiff must establish that she became disabled prior to the expiration of her insured status. See 42 U.S.C. § 423; Moon v. Sullivan, 923 F.2d 1175, 1182 (6th Cir. 1990). 3 RELEVANT MEDICAL HISTORY Treatment notes dated October 11, 2006, indicate that in light of conflicting laboratory test results there existed a "question" whether Plaintiff was properly diagnosed with lupus. (PageID.418). The results of an anti-nuclear antibodies (ANA) tests1 performed in December 2006 and January 2008, were both negative. (PageID.413, 417). On November 4, 2007, Plaintiff was riding on a pontoon boat when she "dove into the shallow water. . .hitting her head on the bottom." (PageID.478). Plaintiff suffered a "mild brain injury" as well as a fracture at C4-5 which necessitated fusion surgery. (PageID.471, 583, 585-86, 593-98). Treatment notes dated February 6, 2008, indicate that Plaintiff was "doing very well" with "very little pain." (PageID.646). Treatment notes dated March 18, 2008, indicate that Plaintiff was neurologically intact. (PageID480). Treatment notes dated April 17, 2008, note "embellishment" by Plaintiff "in multiple areas of functioning." (PageID.471). A May 6, 2008 examination revealed "no evidence of traumatic brain injury in [Plaintiff's] case." (PageID.465). X-rays of Plaintiff's cervical spine, taken on May 7, 2008, revealed "no evidence of instability." (PageID.656). Plaintiff was doing "extremely well" and was instructed that she "can return to normal activity." (PageID.645). The results of an October 21, 2010 physical examination were unremarkable. (PageID.693-94).On November 2, 2010, Plaintiff participated in an MRI examination of her cervical spine the results of which revealed "no acute abnormalities." (PageID.655). Treatment notes dated April 27, 2011, revealed no evidence that Plaintiff was experiencing cognitive or motor delay. (PageID.807). 1 An anti-nuclear antibody (ANA) test measures whether the body's immune system is attacking the body's normal tissues, a characteristic of auto-immune disorders. See Antinuclear Antibodies (ANA), available at http://www.webmd.com/arthritis/antinuclear-antibodies-ana#1 (last visited on June 30, 2017). An ANA test is used to determine if an individual is suffering from autoimmune disorders such as rheumatoid arthritis or lupus. Id. 4 Treatment notes dated August 3, 2012, reveal that Plaintiff was employed as a substitute teacher during the 2011-2012 school year. (PageID.986). Plaintiff's intellectual functioning was characterized as "above average." (PageID.989). On December 11, 2012, Plaintiff participated in an MRI examination of her cervical spine the results of which revealed "moderate" disc degeneration at C5-6, but was otherwise "normal" with no evidence of spinal cord or nerve root compression. (PageID.842). On November 1, 2013, Plaintiff reported that she was experiencing "a flareup of her lupus," but when Plaintiff was asked "what symptoms she was having that would suggest a flare up of lupus [Plaintiff] really could not answer that question." (PageID.877). The doctor reported that Plaintiff "really has no symptoms that would [at] all suggest anything to do with lupus." (PageID.877). Treatment notes dated February 3, 2014, indicate that Plaintiff's complaints are exaggerated and that she is instead "qualified and capable in several areas." (PageID.1047-53). Treatment notes dated February 11, 2014, indicate that Plaintiff was instructed to exercise five days weekly. (PageID.1019). The results of a May 15, 2014 ANA test were "equivocally positive." (PageID.1233). On June 27, 2014, Plaintiff participated in a functional capacity assessment at Mary Free Bed the results of which were consistent with the ALJ's RFC assessment. (PageID.1082-85). The results of a July 17, 2014 physical examination were unremarkable and revealed that Plaintiff's spine "looks pretty good." (PageID.1215-16). 5 ANALYSIS OF THE ALJ'S DECISION The social security regulations articulate a five-step sequential process for evaluating disability. See 20 C.F.R. §§ 404.1520(a-f), 416.920(a-f).2 If the Commissioner can make a dispositive finding at any point in the review, no further finding is required. See 20 C.F.R. §§ 404.1520(a), 416.920(a). The regulations also provide that if a claimant suffers from a nonexertional impairment as well as an exertional impairment, both are considered in determining her residual functional capacity. See 20 C.F.R. §§ 404.1545, 416.945. The burden of establishing the right to benefits rests squarely on Plaintiff's shoulders, and she can satisfy her burden by demonstrating that her impairments are so severe that she is unable to perform her previous work, and cannot, considering her age, education, and work experience, perform any other substantial gainful employment existing in significant numbers in the national economy. See 42 U.S.C. § 423(d)(2)(A); Cohen, 964 F.2d at 528. While the burden of proof shifts to the Commissioner at step five of the sequential evaluation process, Plaintiff bears the burden of proof through step four of the procedure, the point at which her residual functioning capacity (RFC) is determined. See Bowen v. Yuckert, 482 U.S. 137, 146 n.5 (1987); Walters v. Comm'r of Soc. Sec., 2 1. An individual who is working and engaging in substantial gainful activity will not be found to be "disabled" regardless of medical findings (20 C.F.R. §§ 404.1520(b), 416.920(b)); 2. An individual who does not have a "severe impairment" will not be found "disabled" (20 C.F.R. §§ 404.1520(c), 416.920(c)); 3. If an individual is not working and is suffering from a severe impairment which meets the duration requirement and which "meets or equals" a listed impairment in Appendix 1 of Subpart P of Regulations No. 4, a finding of "disabled" will be made without consideration of vocational factors. (20 C.F.R. §§ 404.1520(d), 416.920(d)); 4. If an individual is capable of performing her past relevant work, a finding of "not disabled" must be made (20 C.F.R. §§ 404.1520(e), 416.920(e)); 5. If an individual's impairment is so severe as to preclude the performance of past work, other factors including age, education, past work experience, and residual functional capacity must be considered to determine if other work can be performed (20 C.F.R. §§ 404.1520(f), 416.920(f)). 6 127 F.3d 525, 528 (6th Cir. 1997) (ALJ determines RFC at step four, at which point claimant bears the burden of proof). The ALJ determined that Plaintiff suffers from: (1) degenerative disc disease; (2) lupus; (3) anxiety disorder; (4) attention deficit hyperactivity disorder (ADHD); (5) personality disorder; (6) post-traumatic stress disorder (PTSD); and (7) major depressive disorder, severe impairments that whether considered alone or in combination with other impairments, failed to satisfy the requirements of any impairment identified in the Listing of Impairments detailed in 20 C.F.R., Part 404, Subpart P, Appendix 1. (PageID.143-48). With respect to Plaintiff's residual functional capacity, the ALJ found that Plaintiff retained the ability to perform light work subject to the following limitations: (1) she can only occasionally crawl, and climb ladders, ropes, and scaffolds; (2) she is limited to unskilled work with simple, routine, and repetitive tasks, involving only simple, work-related decisions, with few, if any, work place changes; and (3) she can have only occasional interaction with supervisors, co-workers, and the public. (PageID.148). The ALJ found that Plaintiff was unable to perform her past relevant work at which point the burden of proof shifted to the Commissioner to establish by substantial evidence that a significant number of jobs exist in the national economy which Plaintiff could perform, her limitations notwithstanding. See Richardson, 735 F.2d at 964. While the ALJ is not required to question a vocational expert on this issue, "a finding supported by substantial evidence that a claimant has the vocational qualifications to perform specific jobs" is needed to meet the burden. O'Banner v. Sec'y of Health and Human Services, 587 F.2d 321, 323 (6th Cir. 1978) (emphasis added). This standard requires more than mere intuition or conjecture by the ALJ that the claimant 7 can perform specific jobs in the national economy. See Richardson, 735 F.2d at 964. Accordingly, ALJs routinely question vocational experts in an attempt to determine whether there exist a significant number of jobs which a particular claimant can perform, her limitations notwithstanding. Such was the case here, as the ALJ questioned a vocational expert. The vocational expert testified that there existed approximately 249,000 in the national economy which an individual with Plaintiff's RFC could perform, such limitations notwithstanding. (PageID.84-85). This represents a significant number of jobs. See Born v. Sec'y of Health and Human Services, 923 F.2d 1168, 1174 (6th Cir. 1990); Hall v. Bowen, 837 F.2d 272, 274 (6th Cir. 1988); Martin v. Commissioner of Social Security, 170 Fed. Appx. 369, 374 (6th Cir., Mar. 1, 2006). The vocational expert further testified that if Plaintiff were limited to sedentary work, with the same additional limitations, there still existed approximately 159,000 in the national economy which Plaintiff could perform consistent with her RFC. (PageID.85-86). Accordingly, the ALJ concluded that Plaintiff was not entitled to disability benefits. I. The ALJ Properly Evaluated the Opinion Evidence On August 21, 2014, Dr. Rick Saier offered the opinion that Plaintiff was limited to an extent greater than that recognized by the ALJ. (PageID.1093-97). The ALJ afforded "little weight" to Dr. Saier's opinion. (PageID.152-53). Plaintiff argues that she is entitled to relief on the ground that the ALJ failed to articulate sufficient reasons for discounting the opinion of her treating physician. The treating physician doctrine recognizes that medical professionals who have a long history of caring for a claimant and her maladies generally possess significant insight into her 8 medical condition. See Barker v. Shalala, 40 F.3d 789, 794 (6th Cir. 1994). An ALJ must, therefore, give controlling weight to the opinion of a treating source if: (1) the opinion is "wellsupported by medically acceptable clinical and laboratory diagnostic techniques" and (2) the opinion "is not inconsistent with the other substantial evidence in the case record." Gayheart v. Commissioner of Social Security, 710 F.3d 365, 375-76 (6th Cir. 2013) (quoting 20 C.F.R. § 404.1527). Such deference is appropriate, however, only where the particular opinion "is based upon sufficient medical data." Miller v. Sec'y of Health and Human Services, 1991 WL 229979 at *2 (6th Cir., Nov. 7, 1991) (citing Shavers v. Sec'y of Health and Human Services, 839 F.2d 232, 235 n.1 (6th Cir. 1987)). The ALJ may reject the opinion of a treating physician where such is unsupported by the medical record, merely states a conclusion, or is contradicted by substantial medical evidence. See Cohen, 964 F.2d at 528; Miller v. Sec'y of Health and Human Services, 1991 WL 229979 at *2 (6th Cir., Nov. 7, 1991) (citing Shavers v. Sec'y of Health and Human Services, 839 F.2d 232, 235 n.1 (6th Cir. 1987)); Cutlip v. Sec'y of Health and Human Services, 25 F.3d 284, 286-87 (6th Cir. 1994). If an ALJ accords less than controlling weight to a treating source's opinion, the ALJ must "give good reasons" for doing so. Gayheart, 710 F.3d at 376. Such reasons must be "supported by the evidence in the case record, and must be sufficiently specific to make clear to any subsequent reviewers the weight the adjudicator gave to the treating source's medical opinion and the reasons for that weight." This requirement "ensures that the ALJ applies the treating physician rule and permits meaningful review of the ALJ's application of the rule." Id. (quoting Wilson v. Commissioner of Social Security, 378 F.3d 541, 544 (6th Cir. 2004)). Simply stating that the 9 physician's opinions "are not well-supported by any objective findings and are inconsistent with other credible evidence" is, without more, too "ambiguous" to permit meaningful review of the ALJ's assessment. Gayheart, 710 F.3d at 376-77. If the ALJ affords less than controlling weight to a treating physician's opinion, the ALJ must still determine the weight to be afforded such. Id. at 376. In doing so, the ALJ must consider the following factors: (1) length of the treatment relationship and frequency of the examination, (2) nature and extent of the treatment relationship, (3) supportability of the opinion, (4) consistency of the opinion with the record as a whole, (5) the specialization of the treating source, and (6) other relevant factors. Id. (citing 20 C.F.R. § 404.1527). While the ALJ is not required to explicitly discuss each of these factors, the record must nevertheless reflect that the ALJ considered those factors relevant to his assessment. See, e.g., Oldham v. Astrue, 509 F.3d 1254, 1258 (10th Cir. 2007); Undheim v. Barnhart, 214 Fed. Appx. 448, 450 (5th Cir., Jan. 19, 2007). While much of Dr. Saier's opinion is consistent with the ALJ's RFC assessment, it differs in several respects. Specifically, the doctor reported that during an 8-hour workday, Plaintiff can sit and stand/walk for only "about 2 hours" each. (PageID.1095). The doctor reported that Plaintiff can perform reaching, handling, and fingering activities for only 30-50 percent of the workday. (PageID.1096). The doctor also reported that Plaintiff would likely be absent from work "about three days per month" as a result of her impairments. (PageID.1097). As the ALJ accurately observed, Dr. Saier's contemporaneous treatment notes "contain no objective signs and findings to support his opinion." (PageID.1117-21, 1217-53). The ALJ also accurately noted that Dr. Saier's opinion was contradicted by the "absence of radiologic abnormalities." (PageID.593-98, 655-63, 697, 842, 1213-14). Finally, as the ALJ observed and the 10 evidence discussed above reveals, the findings and conclusions of other medical professionals simply do not support Dr. Saier's opinions. In sum, the ALJ's rationale for discounting Dr. Saier's opinions is supported by substantial evidence. Accordingly, this argument is rejected. II. Plaintiff does not Satisfy Section 14.02 of the Listing of Impairments The Listing of Impairments, detailed in 20 C.F.R., Part 404, Subpart P, Appendix 1, identifies various impairments which, if present to the severity detailed therein, result in a finding that the claimant is disabled. Specifically, Plaintiff argues that she satisfies Listing 14.02 regarding systemic lupus erythematosus (SLE). With respect to SLE, the Listing of Impairments provides: 1. Systemic lupus erythematosus (14.02). a. General. Systemic lupus erythematosus (SLE) is a chronic inflammatory disease that can affect any organ or body system. It is frequently, but not always, accompanied by constitutional symptoms or signs (severe fatigue, fever, malaise, involuntary weight loss). Major organ or body system involvement can include: Respiratory (pleuritis, pneumonitis), cardiovascular (endocarditis, myocarditis, pericarditis, vasculitis), renal (glomerulonephritis), hematologic (anemia, leukopenia, thrombocytopenia), skin (photosensitivity), neurologic (seizures), mental (anxiety, fluctuating cognition ("lupus fog"), mood disorders, organic brain syndrome, psychosis), or immune system disorders (inflammatory arthritis). Immunologically, there is an array of circulating serum auto-antibodies and pro– and anti-coagulant proteins that may occur in a highly variable pattern. b. Documentation of SLE. Generally, but not always, the medical evidence will show that your SLE satisfies the criteria in the current "Criteria for the Classification of Systemic Lupus Erythematosus" by the American College of Rheumatology found in the 11 most recent edition of the Primer on the Rheumatic Diseases published by the Arthritis Foundation.3 20 C.F.R. § Pt. 404, Subpt. P, App. 1, 14.00(D)(1). More specifically, to satisfy this particular Listing a claimant must establish the following: A. Involvement of two or more organs/body systems, with: 1. One of the organs/body systems involved to at least a moderate level of severity; and 2. At least two of the constitutional symptoms or signs (severe fatigue, fever, malaise, or involuntary weight loss). or B. Repeated manifestations of SLE, with at least two of the constitutional symptoms or signs (severe fatigue, fever, malaise, or involuntary weight loss) and one of the following at the marked level: 1. Limitation of activities of daily living. 2. Limitation in maintaining social functioning. 3. Limitation in completing tasks in a timely manner due to deficiencies in concentration, persistence, or pace. 20 C.F.R. § Pt. 404, Subpt. P, App. 1, 14.00(J)(3). 3 The ALJ stated that this standard "include[s] 11 criteria, four of which must be present to make a positive diagnosis." (PageID.144). Neither party disputes the accuracy of this conclusion. 12 Plaintiff asserts that she satisfies the requires of § 14.02(A). The ALJ found that while Plaintiff satisfied the requirements of subsection (A)(1), she did not satisfy subsection (A)(2). Specifically, the ALJ found that Plaintiff experienced only one of the listed "constitutional symptoms or signs," severe fatigue. Plaintiff argues that she also experienced fever, thus satisfying the Listing's requirements. The Court is not persuaded. To satisfy this particular aspect of the Listing, Plaintiff must demonstrate that she experienced fever to a significant degree for more than a transitory length of time. See, e.g., Sanders o.b.o. K.S. v. Commissioner of Social Security, 2017 WL 955401 at *6 (N.D. Ind., Mar. 13, 2017) ("fevers are not defined by the listing, but courts have found that listing-level severity was not met where the claimant suffered from only periodic fevers and did not suffer from fevers to an extreme degree or for any prolonged period [of] time"); Osborn v. Astrue, 2010 WL 3769112 at *8 (S.D. Ohio, Aug. 19, 2010) ("the Listing requires that Plaintiff show documented constitutional symptoms of severe fatigue, fever, malaise, and weight loss"). Furthermore, Plaintiff bears the burden to demonstrate that she satisfies the requirements of a listed impairment. See Kirby v. Comm'r of Soc. Sec., 2002 WL 1315617 at *1 (6th Cir., June 14, 2002). The ALJ observed that Plaintiff "reported experiencing fevers on a few occasions throughout seven years of medical records." (PageID.145). This is consistent with the observations of Plaintiff's treating physician, Dr. Saier, who reported that Plaintiff only periodically experienced fevers. (PageID.1094). Plaintiff has failed to identify any evidence that she experienced fevers with the frequency and severity necessary to satisfy the Listing. On the other hand, the record is replete with notations that Plaintiff was not experiencing a fever. (PageID.465, 480, 545, 577, 613, 730, 13 753, 900, 909). The Court concludes, therefore, that Plaintiff has failed to satisfy her burden that she meets the requirements of the Listing in question. III. The ALJ's Step Five Determination is Supported by Substantial Evidence As previously noted, the ALJ questioned a vocational expert at the administrative hearing to determine whether there existed a significant number of jobs which Plaintiff could perform consistent with her RFC. In responding to the ALJ's hypothetical questions, the vocational expert, relying on the Dictionary of Occupational Titles (DOT), identified several jobs which Plaintiff would be able to perform. (PageID.84-86). However, in estimating the number of such jobs which existed, the vocational expert relied on the Bureau of Labor Statistics' Standard Occupational Classification (SOC). (PageID.86-87). The vocational expert testified that the DOT codes are a "subset" of the SOC codes. (PageID.87). Plaintiff contends that because the DOT codes are a "subset" of the SOC codes, the vocational expert's reliance on the latter to estimate the number of jobs which she could still perform resulted in an inaccurate overestimation of how many such jobs existed. Stated differently, Plaintiff argues that because there does not exist perfect symmetry between the categories of jobs identified in the DOT and SOC it was improper for the ALJ to rely on the vocational expert's testimony and, therefore, the ALJ's analysis at Step 5 of the sequential process is not supported by substantial evidence. The Court is not persuaded. The Fourth Circuit's decision in Guiton v. Colvin, 546 Fed. Appx. 137 (4th Cir., Nov. 7, 2013), is both instructive and persuasive. In that case, the court faced the same issue advanced by Plaintiff, a vocational expert relied on the DOT to identify jobs which a claimant could perform 14 consistent with his RFC, but relied on a different, more inclusive, source to estimate the number of such jobs which existed. Id. at 140-43. As the court recognized, "there is apparently no data, updated on a regular basis, available through either a public or private source, that reports numbers of jobs by DOT code number." Id. at 142. As the Court further recognized: if we required a VE to produce job statistics specific to the DOT-coded occupations a claimant can perform, it is unlikely that the Commissioner would ever succeed in satisfying her burden. This cannot be the result the regulations intend. Indeed, that the data Guiton requests does not exist "is a sign that [Guiton] expects too much," and like the Seventh Circuit, we decline to "impose impossible burdens on the VE." In this case, the VE cited the existence of 26,330 jobs in North Carolina and 825,000 jobs in the United States that Guiton could perform. Even assuming these numbers were overinclusive, far smaller figures would still suffice to satisfy the Commissioner's burden. We hold that the job numbers the VE provided, although perhaps somewhat imprecise, were sufficiently reliable to support the ALJ's conclusion. Id. at 142-43 (internal citations omitted). The Court first notes that while Plaintiff, by way of the vocational expert's testimony, has established that the DOT codes are a "subset" of the SOC codes, Plaintiff has presented no evidence that there exists a relevant or appreciable difference in the number of jobs which exist under the DOT and SOC codes in question.4 Moreover, even if the Court assumes that there exists appreciable dissymmetry between the number of jobs which exist under the subject DOT and SOC codes, Plaintiff still falls short. As noted above, the vocational expert testified in this matter that there existed approximately 249,000 in the national economy which an individual with Plaintiff's 4 The Court recognizes that Plaintiff's attempts to explore this issue at the administrative hearing were thwarted by the ALJ. (PageID.87). However, such did not prevent Plaintiff from introducing such evidence in this Court. 15 RFC could perform, such limitations notwithstanding. While this estimation may be somewhat imprecise, Plaintiff has failed to demonstrate that such imprecision either calls into question the ALJ's reliance on the vocational expert's testimony or results in a less than significant number of jobs which she can perform consistent with her RFC. Thus, the Court finds no error in the fact that the vocational expert relied on the DOT to identify jobs which Plaintiff could perform and relied on the SOC to estimate how many such jobs existed. CONCLUSION For the reasons articulated herein, the Court concludes that the ALJ's decision is supported by substantial evidence. Accordingly, the Commissioner's decision is affirmed. A judgment consistent with this opinion will enter. Date: July 10, 2017 /s/ Ellen S. Carmody ELLEN S. CARMODY United States Magistrate Judge 16

redpajama_set_name: RedPajamaCommonCrawl


If your average day includes at least one cup of coffee, you belong to a group that includes 54 percent of Americans 18 years of age or older. It's unclear, however, what percentage of coffee drinkers experience side effects of their drink's caffeine, given that everyone responds to caffeine differently. Caffeine can lead to a multitude of side effects, including a shortness of breath.
A common side effect of caffeine consumption, either through coffee or another caffeinated beverage such as soda or tea, is an accelerated heart rate. If your heart rate is accelerated, one of the symptoms of this condition can be a shortness of breath. Shortness of breath can be the result of a variety of situations, including asthma and anxiety. Consult your doctor to ensure your shortness of breath is indeed related to your caffeine consumption because it might a sign of something more serious. Consider reducing your intake of caffeine to avoid this issue. Tapering off your caffeine consumption, rather than quitting suddenly, can reduce the risk of withdrawal symptoms.


text:
Why Bullet Points are Killing the Art of Communication
Communication as we know it has been pruned, cropped, repackaged and resold. Letters and phone calls have been overthrown by texts, emails and social media commentary. Bullets have moved in and taken over all content remotely educational or informational. Those little black dots now pervade every type of format, from business plans to TV ads to blogs. They're short and sweet, eyes on the eyes, and deliver good amounts of information with little reading effort. Perfect for those on the go, bullets let you do a quick skim and you've got the gist. In a world dominated by the convenience factor, bullets just make sense. They're nothing if not economical.
But what if sacrificing the element of story is doing you, the reader, a disservice? I, for one, would like to officially pledge my allegiance to the anti-bullet point army. Call me old-fashioned, but I'm from the camp that honors the architecture of a well-formed sentence. The team that feels a sense of satisfaction after reading a paragraph that the writer has taken his or her time for get just right. We die-hard grammar lovers understand the power that humor, character and emotional appeal has in eliciting a response from the reader, and acknowledge the fact that bullet points are a poor substitute for story.
In his piece How PowerPoint is killing critical thought posted on The Guardian.com, author Andrew Smith claimed that, "Bullet point-ization of information is making us stupid and irresponsible" and that the tool is actually "destructive of deep thought."
Smith's assault on bullet points used in Power Point presentations is particularly astute:
"Bullet points enforce a rigidly hierarchical authority, which has not necessarily been earned. One either accepts them in toto, or not at all. And by the time any faulty logic is identified, the screen has been replaced by a new one as the speaker breezes on, safe in the knowledge that yet another waits in the wings. With everyone focused on screens, no one — least of all the speaker — is internalizing the argument in a way that tests its strength."
In Communication Genius, 40 Insights from the Science of Communicating, author Tony Buon says, "Bullet points encourage sloppy and lazy writing. They are too generic, particularly when dealing with complex issues."
My disdain for bullet points arises, too, from the fact that they don't really do the job they're supposed to be doing. Since the perceived convenience of bullet points may actually be working against the writer, if his aim is to get the reader to remember, we may be better off without them. As was observed in the book The Strategy Pathfinder: Core Concepts and Live Cases, "Psychologists have established that lists are much harder to remember than stories… People mainly remember the first and last items on a list but not the rest of it. Also, lists enable 'selective memory' as people tend to select the individual points they like and focus on those, forgetting about the whole and the many integrated parts that make this up."
Then there's the famous 3M case study written by the company's founders, telling the tale of how Gordon Shaw had the "aha" moment upon realizing that the company's business plans "failed to reflect deep thought or inspire commitment." He pinned their bullet point-riddled pages as glorified to-do lists that "failed to explain the logic or rationale of winning in the marketplace" and identified them as a big part of 3M's lack of progress. As Mr. Shaw put it in his essay Strategic Stories: How 3M is Rewriting Business Planning, "Bullet points leave critical relationships unspecified and subsequently, do not inspire thinking or commitment." Today, team members instead craft business plans based off strategic narratives to "clarify the thinking behind their plans but also to capture the imagination and the excitement of the people in their organization." Right on.
3M's current story-intensive culture is often blamed for their ongoing success, and, as Mr. Shaw discovered, "When people locate themselves in these strategic stories, their sense of commitment and involvement is enhanced." Ultimately, that's what I'm aiming for as a writer, to hook an uninvolved passer-by, to get them to imagine themselves in my story, whether it be a website or 30-second commercial. The bullet point cheapens the message, so I'll use them in a pinch, or if a client requests them, but they won't be my tool of choice, or my shortcut.
Shaw and partners also drew the line between the truncated format of bullets and their failure to contribute thought to a content-driven piece like a business plan: "…writing is thinking. Bullets allow us to skip the thinking step, genially tricking ourselves into supposing that we have planned when, in fact, we've only listed some good things to do. Bullet lists encourage us to be intellectually lazy…" In my opinion, there's just no room for laziness in writing, not when every word counts.
As a final thought, I'll share the words of the decorated military personality Brigadier General McMaster, who in his assault of the Power Point presentation as an "internal threat," was quoted as saying this in regards to those little black points of contention: "It's dangerous because it can create the illusion of understanding and the illusion of control. Some problems are not bullet-izable."
copyright: Roadbully / 123RF Stock Photo


text:
Editing {{tableName}} record {{recordId}}

          <form role="form">

              Text
              <input type="text" class="form-control" placeholder="Enter ..."/>

              Text Disabled
              <input type="text" class="form-control" placeholder="Enter ..." disabled/>

              Textarea
              <textarea class="form-control" rows="3" placeholder="Enter ..."></textarea>

              Textarea Disabled
              <textarea class="form-control" rows="3" placeholder="Enter ..." disabled></textarea>

               Input with success
              <input type="text" class="form-control" id="inputSuccess" placeholder="Enter ..."/>

               Input with warning
              <input type="text" class="form-control" id="inputWarning" placeholder="Enter ..."/>

               Input with error
              <input type="text" class="form-control" id="inputError" placeholder="Enter ..."/>

                  <input type="checkbox"/>
                  Checkbox 1

                  <input type="checkbox"/>
                  Checkbox 2

                  <input type="checkbox" disabled/>
                  Checkbox disabled

                  <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>
                  Option one is this and that—be sure to include why it's great

                  <input type="radio" name="optionsRadios" id="optionsRadios2" value="option2">
                  Option two can be something else and selecting it will deselect option one

                  <input type="radio" name="optionsRadios" id="optionsRadios3" value="option3" disabled/>
                  Option three is disabled

              Select
              <select class="form-control">
                <option>option 1</option>
                <option>option 2</option>
                <option>option 3</option>
                <option>option 4</option>
                <option>option 5</option>
              </select>

              Select Disabled
              <select class="form-control" disabled>
                <option>option 1</option>
                <option>option 2</option>
                <option>option 3</option>
                <option>option 4</option>
                <option>option 5</option>
              </select>

              Select Multiple
              <select multiple class="form-control">
                <option>option 1</option>
                <option>option 2</option>
                <option>option 3</option>
                <option>option 4</option>
                <option>option 5</option>
              </select>

              Select Multiple Disabled
              <select multiple class="form-control" disabled>
                <option>option 1</option>
                <option>option 2</option>
                <option>option 3</option>
                <option>option 4</option>
                <option>option 5</option>
              </select>

          </form>

Input masks

          Date masks:

            <input type="text" class="form-control" data-inputmask="'alias': 'dd/mm/yyyy'" data-mask/>

            <input type="text" class="form-control" data-inputmask="'alias': 'mm/dd/yyyy'" data-mask/>

          US phone mask:

            <input type="text" class="form-control" data-inputmask='"mask": "(999) 999-9999"' data-mask/>

          Intl US phone mask:

            <input type="text" class="form-control" data-inputmask="'mask': ['999-999-9999 [x99999]', '+099 99 99 9999[9]-9999']" data-mask/>

          IP mask:

            <input type="text" class="form-control" data-inputmask="'alias': 'ip'" data-mask/>

Date picker

          Date range:

            <input type="text" class="form-control" datepicker-popup="{{format}}" ng-model="dt" is-open="opened" datepicker-options="dateOptions" ng-required="true" close-text="Close" ng-click="open($event)"/>

              <button type="button" class="btn btn-default" ng-click="open($event)"></button>


Halloween is this week, and we are sharing how we celebrate over on the PetCo community blog! Come read the ways we include Baby the Maltese in our Halloween celebrations, and maybe find some fun ways to include your pets in the fun too!
This entry was posted in dogs, holidays, our pets. Bookmark the permalink.


text:
Home > Systems & Applications > Lamps & Luminaires > Carmanah Releases New High Performance Price-Competitive Solar LED Outdoor Streetlights
Products, Materials + Tools | Jan 26, 2011
Carmanah Releases New High Performance Price-Competitive Solar LED Outdoor Streetlights
Carmanah Technologies announced today the launch of the EG300-series solar LED outdoor streetlight; a new generation of solar-LED lighting systems designed to meet the specific roadway performance features required for customers in global sun-belt regions where core infrastructure development is underway, including regions such as Latin American and the Caribbean.
Carmanah's EG300-series is designed to provide high lumen performance at a competitive price
The EG300-series is designed to provide high lumen performance at a competitive price to support solar lighting adoption in rapidly growing non-North American markets. Operating completely free of the grid, the EG300 solar streetlight is well-positioned for markets with developing roadway infrastructure where standalone solar lighting can offer a more cost effective alternative over hard-wired lighting systems. In situations where the electrical grid is costly, unreliable or non-existent, the EG300 becomes a viable cost-saving lighting alternative; delivering the light output equivalent to a 200-watt metal halide light (used for standard streetlight settings). The EG300-series includes two product sizes which power up to two LED fixtures. These fixtures are available in standard IES distribution types, are dark-sky friendly, and feature excellent uniformity.
Complementing Carmanah's portfolio of distinctively designed solar lighting systems, the EG300-series streetlight features a streamlined form-factor that enables rapid installation and protects the system from environmental harm, including public vandalism or theft. Engineered to withstand extreme environmental conditions; including hurricane-level winds, tropical heat and humidity, and heavy precipitation, the EG300-series lights offer a reliable solution for illuminating large-scale municipal, commercial, institutional or industrial roadways and parking area applications.
Also consistent with Carmanah's solar lighting product portfolio, the new EG300-series has sophisticated lighting controls which include adaptive lighting capabilities and operating profiles that allow specifiers to tailor light output for the requirements of a specific application. Operating profiles can deliver pre-determined light levels throughout the night to match business hours or vehicle and pedestrian activity. Lighting controls and profiles ensure the lights are activated only when required, which conserves energy and allows for brighter illumination, as well as a smaller system size and overall lower total system and project cost. The EG300-series includes a limited 3 year warranty.
"The EG300-series represents the latest progression in sophisticated solar lighting technologies and leverages established strategic local partnerships to target growing non-North American markets." Carmanah CEO, Ted Lattimore, comments. The EG300-series is available immediately in Latin America, Mexico, and the Caribbean Islands. For more information, visit http://www.carmanah.com/.
About Carmanah Technologies Corporation:
As one of the most trusted names in solar technology, Carmanah has earned a reputation for delivering strong and effective products for industrial applications worldwide. Industry proven to perform reliably in some of the world's harshest environments, Carmanah solar LED lights and solar power systems provide a durable, dependable and cost effective energy alternative. Carmanah is a publicly traded company, with common shares listed on the Toronto Stock Exchange under the symbol "CMH". For more information, visit carmanah.com.


Chicken Caesar Salad with Cannellini Beans and Avocado – healthy, gluten free salad. The salad is rich in natural fats, fiber, protein, and makes a great lunch or dinner!
Cannellini beans (or any white beans) + avocado + Caesar dressing make this salad so very creamy – you'll love it! The addition of grilled chicken turns this salad into a delicious, satisfying main-course meal!
Use cannellini beans (from the can) or other cooked white beans.
Use store-bought Caesar salad. If you want to make it from scratch, here are 2 great recipes: this Caesar salad dressing is without anchovies and this one is with anchovies.
Use grilled chicken or rotisserie chicken.
Chicken Caesar Salad with Cannellini Beans and Avocado – healthy, gluten free salad. Cannellini and avocados add so much natural creaminess to this salad.
Combine lettuce (torn into small pieces), beans (rinsed and drained), sliced avocado and the cheese in a large bowl.
Toss with dressing, top with grilled and sliced chicken breast, and serve immediately.


Last season, Seattle Repertory Theatre co-premiered the new musical, Come From Away! Now, the show is preparing for its Broadway opening.
Come From Away is coming back to Seattle! To celebrate the return of this beloved show, Seattle Rep is hosting a drawing to win a Seattle Staycation, which includes two tickets to Opening Night of Come From Away at The 5th Avenue Theatre (October 12, 2018), a one-night stay at the Inn at the Market, and a $200 restaurant gift card to The Metropolitan Grill.
To enter, fill out the form below by June 23, 2018. Drawing will be held on June 29, 2018. No purchase necessary to enter.
* Drawing will be on March 20, 2017. * No purchase necessary to enter.


text:
The first community of Sisters of Our Lady of Mount Carmel originated in Tours, France near the Loire River in 1824, where a young novice named Julie Thérèse Chevrel joined the order in 1825. They endured adversity and were plagued by financial crisis and religious persecution spawned by France's July Revolution of 1830. Out of concern for their future, Mother St. Paul Bazire, one of the co-foundresses, predicted that Thérèse, who later became Superior at age 22, would cross the sea and the community would survive in a new country.
The Sisters arrived in Louisiana on Nov. 2, 1833. The bishop invited them to administer a free school for young ladies of color in New Orleans. Upon their arrival, however, Sisters Thérèse and Augustin Clerc were sent to Plattenville to re-open a school. They later returned to New Orleans and in 1840 they opened a boarding and day school on Governor Nichols Street, the beginning of Mount Carmel Academy, which was incorporated into Orleans Parish in 1858 and the State of Louisiana in 1896. From 1869-1919, the Carmelite Sisters ran an orphanage at Royal and Piety Streets that grew into a major facility for Civil War orphans, yellow fever victims, and victims of abuse and poverty.
In 1926 the Sisters moved their congregation and school from the French Quarter to the Lakefront. Mother Clare Coady's administration was set against the backdrop of the early twentieth century and encompassed the First World War, the changing social norms of the 1920s, and the downward economic spiral of the Great Depression. Her ability to respond to the evolving requirements of Catholic education built the foundation for the present-day Mount Carmel Academy, whose mission is to provide young women the opportunity to develop their God-given talents through academic excellence and co-curricular programs, as well as to empower them to develop zeal for their faith with a commitment to prayer and service. Among her many achievements, Mother Clare instituted professional training for teachers and accredited high school programs. In 1926, she chose the developing Lakeview area to build a four-story building, which provided a residence for the Sisters and housed a day and boarding school, a novitiate, and a Catholic Normal School to train teachers. The motherhouse remains home for the Sisters today and houses Cub Corner Pre School, a child development program that opened in 1987.
In the years following, there have only been four principals at Mount Carmel Academy: Sister Mary Angela Duplantis (1926-1955), Sister Mary Grace Danos (1955-1980), Sister Camille Anne Campbell (1980-2014), and Beth Ann Simno (2014-present). The school began to grow under Sisters Mary Angela and Mary Grace; it became accredited by the Southern Association of Colleges and Secondary Schools (SACS) in 1959. In 1976, Sister Mary Grace built a three-story building with space for a library, the Fitzmorris Performing Arts Center, and the Instruction Materials Center and in 1980, began the LeBlanc-Savoy Fine Arts Building. Enrollment, which was 16 in 1926, grew from 800 in 1980 to 1246 in 2016 under the direction of Sister Camille Anne Campbell, who became principal in 1980 and continues to serve as president. Sister Camille Anne Campbell added a three-story classroom building in 1995 to accommodate increasing enrollment. In 2002, the school added an eighth grade program, and in 2004 built the four-story Mother Clare Coady Classroom Building. The 36,000 square foot Mother Thérèse Chevrel Assembly Center opened in May 2005.
When 10 feet of water flooded the school in the aftermath of Hurricane Katrina in August 2005, it did not defeat the community. The school's administrators arranged for a well to be drilled on the campus enabling them to have water in the months of clean-up. Mount Carmel Academy cleansed buildings with clean, fresh water and planted grass and flowers in a desolated area. The school was opened in just five months, and became a beacon of hope in the storm-ravaged neighborhood.
Today, Mount Carmel continues the mission of the first Carmelite Sisters while under the direction of President Sister Camille Anne Campbell and Beth Ann Simno, the first lay principal. Ms. Simno successfully implemented at 1:1 Apple MacBook Air program and a Faculty Learning Lab. In the 2016-2017 school year, the Phyllis M. Taylor Maker Lab became the newest addition to the state-of-the-art school, providing a space where students are encouraged to collaborate, innovate, and create using the Design Cycle which encompasses all subjects.
Mount Carmel Academy is founded on the value of spiritual growth for each student, teacher, staff member, and parent. The school remains faithful to the teachings of the Catholic Church and continues to stay on the cutting edge of educational change in order to graduate young ladies who will promote a just and peaceful world relying on the grace of God.


Every single problem with your washer will just make your life more difficult. Why should you make your days hard when you can avoid issues with the assistance of our Manotick Washing Machine Repair professional teams! We stand by and are ready to solve any problem related to any washer for either commercial or home use. Our work is accurate and exceptional since it is based on the good knowledge of our technicians. We excel in troubleshooting and washing machine repair service, have the capacity to install any type of washer and you can be sure that our expertise will always surpass your expectations.
Appliance Repair Manotick has marvelous teams. Our excellence as trained professionals will be to the benefit of each customer. We do care to assist you properly and that's why our dedication to our job and the future of washing machines never stops. Our training is your assurance that each service is conducted with the best specifications. Call us for washer installation or for any problems you have with your current appliance! Let us show you what we can do for you and how quickly can remove problems out of the door of your home or business.
We repair washing machines designed for home and commercial use. Nothing escapes our knowledge. We fix the hardest problem and we fix it fast and well. You can depend on us for same day repairs and on the efficiency of each and every technician of our company. We excel in Washing Machine Repair in Manotick for the simple reason that we keep our mind on your problem, are fully focused and tremendously knowledgeable. Every washer in Manotick will have the best service and every client will have immediate assistance! We work with the best tools available in Ontario, are on time and our washer service will free you from problems.