/**
  * 微信消息接口入口
  * 所有发送到微信的消息都会推送到该操作
  * 所以,微信公众平台后台填写的api地址则为该操作的访问地址
  */
 public function index($id = '')
 {
     //调试
     try {
         $appid = 'wx58aebef2023e68cd';
         //AppID(应用ID)
         $token = 'E9E05045F594065909D2B5554A8F34CE';
         //微信后台填写的TOKEN
         $crypt = 'q6FPCUoCQWaOiR3UUe5RfQu8A7hlJcMW4BnNyH9z2il';
         //消息加密KEY(EncodingAESKey)
         /* 加载微信SDK */
         $wechat = new Wechat($token, $appid, $crypt);
         /* 获取请求信息 */
         $data = $wechat->request();
         if ($data && is_array($data)) {
             /**
              * 你可以在这里分析数据,决定要返回给用户什么样的信息
              * 接受到的信息类型有10种,分别使用下面10个常量标识
              * Wechat::MSG_TYPE_TEXT       //文本消息
              * Wechat::MSG_TYPE_IMAGE      //图片消息
              * Wechat::MSG_TYPE_VOICE      //音频消息
              * Wechat::MSG_TYPE_VIDEO      //视频消息
              * Wechat::MSG_TYPE_SHORTVIDEO //视频消息
              * Wechat::MSG_TYPE_MUSIC      //音乐消息
              * Wechat::MSG_TYPE_NEWS       //图文消息(推送过来的应该不存在这种类型,但是可以给用户回复该类型消息)
              * Wechat::MSG_TYPE_LOCATION   //位置消息
              * Wechat::MSG_TYPE_LINK       //连接消息
              * Wechat::MSG_TYPE_EVENT      //事件消息
              *
              * 事件消息又分为下面五种
              * Wechat::MSG_EVENT_SUBSCRIBE    //订阅
              * Wechat::MSG_EVENT_UNSUBSCRIBE  //取消订阅
              * Wechat::MSG_EVENT_SCAN         //二维码扫描
              * Wechat::MSG_EVENT_LOCATION     //报告位置
              * Wechat::MSG_EVENT_CLICK        //菜单点击
              */
             //记录微信推送过来的数据
             file_put_contents('./data.json', json_encode($data));
             /* 响应当前请求(自动回复) */
             //$wechat->response($content, $type);
             /**
              * 响应当前请求还有以下方法可以使用
              * 具体参数格式说明请参考文档
              * 
              * $wechat->replyText($text); //回复文本消息
              * $wechat->replyImage($media_id); //回复图片消息
              * $wechat->replyVoice($media_id); //回复音频消息
              * $wechat->replyVideo($media_id, $title, $discription); //回复视频消息
              * $wechat->replyMusic($title, $discription, $musicurl, $hqmusicurl, $thumb_media_id); //回复音乐消息
              * $wechat->replyNews($news, $news1, $news2, $news3); //回复多条图文消息
              * $wechat->replyNewsOnce($title, $discription, $url, $picurl); //回复单条图文消息
              * 
              */
             //执行Demo
             $this->demo($wechat, $data);
         }
     } catch (\Exception $e) {
         file_put_contents('./error.json', json_encode($e->getMessage()));
     }
 }
 public function enter()
 {
     $token = "dingdingCat";
     $wechat = new Wechat($token);
     $this->wechat = $wechat;
     $data = $wechat->request();
     if ($data && is_array($data)) {
         $this->MsgFormat($data);
         $this->Msg($wechat);
     }
     $this->wechat->customThrough();
 }
 /**
  * 微信消息接口入口
  * 所有发送到微信的消息都会推送到该操作
  * 所以,微信公众平台后台填写的api地址则为该操作的访问地址
  */
 public function index($id = '')
 {
     $token = '';
     //微信后台填写的TOKEN
     /* 加载微信SDK */
     $wechat = new Wechat($token);
     /* 获取请求信息 */
     $data = $wechat->request();
     if ($data && is_array($data)) {
         /**
          * 你可以在这里分析数据,决定要返回给用户什么样的信息
          * 接受到的信息类型有9种,分别使用下面九个常量标识
          * Wechat::MSG_TYPE_TEXT       //文本消息
          * Wechat::MSG_TYPE_IMAGE      //图片消息
          * Wechat::MSG_TYPE_VOICE      //音频消息
          * Wechat::MSG_TYPE_VIDEO      //视频消息
          * Wechat::MSG_TYPE_MUSIC      //音乐消息
          * Wechat::MSG_TYPE_NEWS       //图文消息(推送过来的应该不存在这种类型,但是可以给用户回复该类型消息)
          * Wechat::MSG_TYPE_LOCATION   //位置消息
          * Wechat::MSG_TYPE_LINK       //连接消息
          * Wechat::MSG_TYPE_EVENT      //事件消息
          *
          * 事件消息又分为下面五种
          * Wechat::MSG_EVENT_SUBSCRIBE          //订阅
          * Wechat::MSG_EVENT_SCAN               //二维码扫描
          * Wechat::MSG_EVENT_LOCATION           //报告位置
          * Wechat::MSG_EVENT_CLICK              //菜单点击
          * Wechat::MSG_EVENT_MASSSENDJOBFINISH  //群发消息成功
          */
         $content = '';
         //回复内容,回复不同类型消息,内容的格式有所不同
         $type = '';
         //回复消息的类型
         /* 响应当前请求(自动回复) */
         $wechat->response($content, $type);
         /**
          * 响应当前请求还有以下方法可以只使用
          * 具体参数格式说明请参考文档
          * 
          * $wechat->replyText($text); //回复文本消息
          * $wechat->replyImage($media_id); //回复图片消息
          * $wechat->replyVoice($media_id); //回复音频消息
          * $wechat->replyVideo($media_id, $title, $discription); //回复视频消息
          * $wechat->replyMusic($title, $discription, $musicurl, $hqmusicurl, $thumb_media_id); //回复音乐消息
          * $wechat->replyNews($news, $news1, $news2, $news3); //回复多条图文消息
          * $wechat->replyNewsOnce($title, $discription, $url, $picurl); //回复单条图文消息
          * 
          */
     }
 }
示例#4
0
 public function index()
 {
     $token = 'ncvt_ea';
     //微信后台填写的TOKEN
     /* 加载微信SDK */
     $wechat = new Wechat($token);
     /* 获取请求信息 */
     $data = $wechat->request();
     echo "data" . $data;
     if ($data && is_array($data)) {
         /**
          * 你可以在这里分析数据,决定要返回给用户什么样的信息
          * 接受到的信息类型有9种,分别使用下面九个常量标识
          * Wechat::MSG_TYPE_TEXT       //文本消息
          * Wechat::MSG_TYPE_IMAGE      //图片消息
          * Wechat::MSG_TYPE_VOICE      //音频消息
          * Wechat::MSG_TYPE_VIDEO      //视频消息
          * Wechat::MSG_TYPE_MUSIC      //音乐消息
          * Wechat::MSG_TYPE_NEWS       //图文消息(推送过来的应该不存在这种类型,但是可以给用户回复该类型消息)
          * Wechat::MSG_TYPE_LOCATION   //位置消息
          * Wechat::MSG_TYPE_LINK       //连接消息
          * Wechat::MSG_TYPE_EVENT      //事件消息
          *
          * 事件消息又分为下面五种
          * Wechat::MSG_EVENT_SUBSCRIBE          //订阅
          * Wechat::MSG_EVENT_SCAN               //二维码扫描
          * Wechat::MSG_EVENT_LOCATION           //报告位置
          * Wechat::MSG_EVENT_CLICK              //菜单点击
          * Wechat::MSG_EVENT_MASSSENDJOBFINISH  //群发消息成功
          */
         //$wechat->replyText('其它消息');die();
         //$wechat->replyText($data["MsgType"]."  ".$data["Event"]);die();
         if ($data['MsgType'] == Wechat::MSG_TYPE_EVENT) {
             if ($data['Event'] == Wechat::MSG_EVENT_CLICK) {
                 if ($data['EventKey'] == "XSKB") {
                     //$wechat->replyNewsOnce("我的课表","我的课表内容","http://ncvteduwx.duapp.com/index.php/Home/Index/jrkb","");
                 }
             }
         } else {
             $wechat->replyText("欢迎关注南宁职业技术学院信息工程学院\n回复“帮助”获取更多信息。");
         }
     }
 }
示例#5
0
 /**
  * 微信消息接口入口
  * 所有发送到微信的消息都会推送到该操作
  * 所以,微信公众平台后台填写的api地址则为该操作的访问地址
  */
 public function index($id = '')
 {
     define('APP_DEBUG', false);
     define('ENGINE_NAME', 'sae');
     //调试
     try {
         $appid = 'wx1b4f89570d3f4976';
         //AppID(应用ID)
         $token = 'kenkenken';
         //微信后台填写的TOKEN
         $crypt = 'vYJqlXzY8sWgw8QfiIVECnYSpCLI4Y0nRnSogB9fYP2';
         //消息加密KEY(EncodingAESKey)
         /* 加载微信SDK */
         $wechat = new Wechat($token, $appid, $crypt);
         /* 获取请求信息 */
         $data = $wechat->request();
         if ($data && is_array($data)) {
             /**
              * 你可以在这里分析数据,决定要返回给用户什么样的信息
              * 接受到的信息类型有10种,分别使用下面10个常量标识
              * Wechat::MSG_TYPE_TEXT       //文本消息
              * Wechat::MSG_TYPE_IMAGE      //图片消息
              * Wechat::MSG_TYPE_VOICE      //音频消息
              * Wechat::MSG_TYPE_VIDEO      //视频消息
              * Wechat::MSG_TYPE_SHORTVIDEO //视频消息
              * Wechat::MSG_TYPE_MUSIC      //音乐消息
              * Wechat::MSG_TYPE_NEWS       //图文消息(推送过来的应该不存在这种类型,但是可以给用户回复该类型消息)
              * Wechat::MSG_TYPE_LOCATION   //位置消息
              * Wechat::MSG_TYPE_LINK       //连接消息
              * Wechat::MSG_TYPE_EVENT      //事件消息
              *
              * 事件消息又分为下面五种
              * Wechat::MSG_EVENT_SUBSCRIBE    //订阅
              * Wechat::MSG_EVENT_UNSUBSCRIBE  //取消订阅
              * Wechat::MSG_EVENT_SCAN         //二维码扫描
              * Wechat::MSG_EVENT_LOCATION     //报告位置
              * Wechat::MSG_EVENT_CLICK        //菜单点击
              */
             //记录微信推送过来的数据
             file_put_contents('./data.json', json_encode($data));
             /* 响应当前请求(自动回复) */
             //$wechat->response($content, $type);
             /**
              * 响应当前请求还有以下方法可以使用
              * 具体参数格式说明请参考文档
              * 
              * $wechat->replyText($text); //回复文本消息
              * $wechat->replyImage($media_id); //回复图片消息
              * $wechat->replyVoice($media_id); //回复音频消息
              * $wechat->replyVideo($media_id, $title, $discription); //回复视频消息
              * $wechat->replyMusic($title, $discription, $musicurl, $hqmusicurl, $thumb_media_id); //回复音乐消息
              * $wechat->replyNews($news, $news1, $news2, $news3); //回复多条图文消息
              * $wechat->replyNewsOnce($title, $discription, $url, $picurl); //回复单条图文消息
              * 
              */
             //执行Demo
             $this->demo($wechat, $data);
         }
     } catch (\Exception $e) {
         file_put_contents('./error.json', json_encode($e->getMessage()));
     }
 }
示例#6
0
 /**
  * 微信消息接口入口
  * 所有发送到微信的消息都会推送到该操作
  * 所以,微信公众平台后台填写的api地址则为该操作的访问地址
  */
 public function index($id = '')
 {
     $this->flat_model = D("Common/WechatFlat");
     $this->flat = $this->flat_model->where("wt_use=1")->find();
     //调试
     try {
         $appid = $this->flat['wt_appid'];
         //AppID(应用ID)
         $token = $this->flat['wt_token'];
         //微信后台填写的TOKEN
         $crypt = $this->flat['wt_crypt'];
         //消息加密KEY(EncodingAESKey)
         /* 加载微信SDK */
         $wechat = new Wechat($token, $appid, $crypt);
         /* 获取请求信息 */
         $data = $wechat->request();
         if ($data && is_array($data)) {
             /**
              * 你可以在这里分析数据,决定要返回给用户什么样的信息
              * 接受到的信息类型有10种,分别使用下面10个常量标识
              * Wechat::MSG_TYPE_TEXT       //文本消息
              * Wechat::MSG_TYPE_IMAGE      //图片消息
              * Wechat::MSG_TYPE_VOICE      //音频消息
              * Wechat::MSG_TYPE_VIDEO      //视频消息
              * Wechat::MSG_TYPE_SHORTVIDEO //视频消息
              * Wechat::MSG_TYPE_MUSIC      //音乐消息
              * Wechat::MSG_TYPE_NEWS       //图文消息(推送过来的应该不存在这种类型,但是可以给用户回复该类型消息)
              * Wechat::MSG_TYPE_LOCATION   //位置消息
              * Wechat::MSG_TYPE_LINK       //连接消息
              * Wechat::MSG_TYPE_EVENT      //事件消息
              *
              * 事件消息又分为下面五种
              * Wechat::MSG_EVENT_SUBSCRIBE    //订阅
              * Wechat::MSG_EVENT_UNSUBSCRIBE  //取消订阅
              * Wechat::MSG_EVENT_SCAN         //二维码扫描
              * Wechat::MSG_EVENT_LOCATION     //报告位置
              * Wechat::MSG_EVENT_CLICK        //菜单点击
              */
             //记录微信推送过来的数据
             //file_put_contents('./data.json', json_encode($data));
             $this->saveMessage($data);
             /* 响应当前请求(自动回复) */
             //$wechat->response($content, $type);
             /**
              * 响应当前请求还有以下方法可以使用
              * 具体参数格式说明请参考文档
              * 
              * $wechat->replyText($text); //回复文本消息
              * $wechat->replyImage($media_id); //回复图片消息
              * $wechat->replyVoice($media_id); //回复音频消息
              * $wechat->replyVideo($media_id, $title, $discription); //回复视频消息
              * $wechat->replyMusic($title, $discription, $musicurl, $hqmusicurl, $thumb_media_id); //回复音乐消息
              * $wechat->replyNews($news, $news1, $news2, $news3); //回复多条图文消息
              * $wechat->replyNewsOnce($title, $discription, $url, $picurl); //回复单条图文消息
              * 
              */
             //response
             $this->response($wechat, $data);
         }
     } catch (\Exception $e) {
         file_put_contents('./error.json', json_encode($e->getMessage()));
     }
 }
示例#7
0
 /**
  * 微信消息接口入口
  * 所有发送到微信的消息都会推送到该操作
  * 所以,微信公众平台后台填写的api地址则为该操作的访问地址
  */
 public function index()
 {
     $token = 'maimaimai';
     //微信后台填写的TOKEN
     /* 加载微信SDK */
     $wechat = new Wechat($token);
     /* 获取请求信息 */
     $data = $wechat->request();
     if ($data && is_array($data)) {
         $wx_info = C('wx_info2');
         $Auth = new WechatAuth($wx_info['AppID'], $wx_info['Secret'], S('access_token2'));
         switch ($data['MsgType']) {
             case Wechat::MSG_TYPE_EVENT:
                 switch ($data['Event']) {
                     case Wechat::MSG_EVENT_SUBSCRIBE:
                         // 来源openid
                         $form_openid = $data['FromUserName'];
                         //获取来源者信息
                         $form = $Auth->userInfo($form_openid);
                         $old_wx['nickname'] = $form['nickname'];
                         $old_wx['sex'] = $form['sex'];
                         $old_wx['city'] = $form['city'];
                         $old_wx['province'] = $form['province'];
                         $result = M('wx_user')->where($old_wx)->find();
                         //判断
                         if ($result) {
                             $form['yyg_openid'] = $result['openid'];
                         }
                         $db = M('wx_jzq_user')->where(array('openid' => $form['openid']))->Find();
                         if (!$db) {
                             M('wx_jzq_user')->where(array('openid' => $form['openid']))->delete();
                             M('wx_jzq_user')->add($form);
                         }
                         $wechat->replyText("欢迎!发送<查询>可以查询邀请送红包活动信息");
                 }
                 break;
             case Wechat::MSG_TYPE_TEXT:
                 switch ($data['Content']) {
                     case '查询':
                         $re = M('wx_jzq_user')->where(array('openid' => $form['openid']))->Find();
                         if ($re['openid'] = !null && ($re['yyg_openid'] = !null)) {
                             $m = M('wx_user')->where(array('openid' => $re['yyg_openid']))->find();
                             if ($m['fahongbao'] != 0) {
                                 $wechat->replyText("明天准备收红包");
                                 break;
                             } else {
                                 $wechat->replyText("邀请人数不足,请努力");
                                 break;
                             }
                         } else {
                             $form_openid = $data['FromUserName'];
                             //获取来源者信息
                             $form = $Auth->userInfo($form_openid);
                             $old_wx['nickname'] = $form['nickname'];
                             $old_wx['sex'] = $form['sex'];
                             $old_wx['city'] = $form['city'];
                             $old_wx['province'] = $form['province'];
                             //判断
                             $result = M('wx_user')->where($old_wx)->find();
                             if ($result) {
                                 $form['yyg_openid'] = $result['openid'];
                             }
                             $db = M('wx_jzq_user')->where(array('openid' => $form['openid']))->Find();
                             if (!$db) {
                                 M('wx_jzq_user')->where(array('openid' => $form['openid']))->delete();
                                 M('wx_jzq_user')->add($form);
                             }
                             if ($db['yyg_openid'] == null) {
                                 $wechat->replyText("请再次查询");
                                 break;
                             }
                             break;
                         }
                 }
                 break;
         }
     }
 }
 /**
  * 微信消息接口入口
  * 所有发送到微信的消息都会推送到该操作
  * 所以,微信公众平台后台填写的api地址则为该操作的访问地址
  */
 public function index()
 {
     $token = C('WEIXIN.TOKEN');
     //微信后台填写的TOKEN
     /* 加载微信SDK */
     $this->wc = $wechat = new Wechat($token);
     /* 获取请求信息 */
     $data = $wechat->request();
     slog($data);
     if ($data && is_array($data)) {
         switch ($data['MsgType']) {
             //事件
             case Wechat::MSG_TYPE_EVENT:
                 switch ($data['Event']) {
                     case Wechat::MSG_EVENT_SUBSCRIBE:
                         $wechat->replyText('欢迎关注freelog, 你可以留言引号内内容获得本账号的某些服务比如: 回复"听大白", 会收到一条语音消息, 回复“看视频”,会收到JobDeer官方介绍视频,回复"看图片",看到一个Jobdeer的三行广告,回复“推荐文章”,收到一个推荐的图文消息,回复“功能菜单”,收到欢迎文本');
                         break;
                         //退订
                     //退订
                     case Wechat::MSG_EVENT_UNSUBSCRIBE:
                         # TODO  添加微信消息记录日志里去
                         break;
                 }
                 break;
             case Wechat::MSG_TYPE_TEXT:
                 $this->onText($data['Content']);
                 break;
             default:
                 $user_send_types = array(Wechat::MSG_TYPE_IMAGE, Wechat::MSG_TYPE_VOICE, Wechat::MSG_TYPE_VIDEO, Wechat::MSG_TYPE_SHORTVIDEO, Wechat::MSG_TYPE_MUSIC);
                 if (in_array($data['MsgType'], $user_send_types)) {
                     $wechat->replyText('用户传了媒体消息' . $data['MsgType'] . "媒体id为:{$data['MediaId']}");
                 } else {
                     $wechat->response('其他功能尚在开发中', Wechat::MSG_TYPE_TEXT);
                 }
                 break;
         }
         /**
          * 你可以在这里分析数据,决定要返回给用户什么样的信息
          * 接受到的信息类型有10种,分别使用下面10个常量标识
          * Wechat::MSG_TYPE_TEXT       //文本消息
          * Wechat::MSG_TYPE_IMAGE      //图片消息
          * Wechat::MSG_TYPE_VOICE      //音频消息
          * Wechat::MSG_TYPE_VIDEO      //视频消息
          * Wechat::MSG_TYPE_SHORTVIDEO //视频消息
          * Wechat::MSG_TYPE_MUSIC      //音乐消息
          * Wechat::MSG_TYPE_NEWS       //图文消息(推送过来的应该不存在这种类型,但是可以给用户回复该类型消息)
          * Wechat::MSG_TYPE_LOCATION   //位置消息
          * Wechat::MSG_TYPE_LINK       //连接消息
          * Wechat::MSG_TYPE_EVENT      //事件消息
          *
          * 事件消息又分为下面五种
          * Wechat::MSG_EVENT_SUBSCRIBE    //订阅
          * Wechat::MSG_EVENT_UNSUBSCRIBE  //取消订阅
          * Wechat::MSG_EVENT_SCAN         //二维码扫描
          * Wechat::MSG_EVENT_LOCATION     //报告位置
          * Wechat::MSG_EVENT_CLICK        //菜单点击
          */
         $content = '这里是Freelog';
         //回复内容,回复不同类型消息,内容的格式有所不同
         $type = Wechat::MSG_TYPE_TEXT;
         //回复消息的类型
         /* 响应当前请求(自动回复) */
         $wechat->response($content, $type);
         /**
          * 响应当前请求还有以下方法可以只使用
          * 具体参数格式说明请参考文档
          *
          * $wechat->replyText($text); //回复文本消息
          * $wechat->replyImage($media_id); //回复图片消息
          * $wechat->replyVoice($media_id); //回复音频消息
          * $wechat->replyVideo($media_id, $title, $discription); //回复视频消息
          * $wechat->replyMusic($title, $discription, $musicurl, $hqmusicurl, $thumb_media_id); //回复音乐消息
          * $wechat->replyNews($news, $news1, $news2, $news3); //回复多条图文消息
          * $wechat->replyNewsOnce($title, $discription, $url, $picurl); //回复单条图文消息
          *
          */
     }
 }
示例#9
0
 public function index()
 {
     //define('APP_DEBUG', false);
     //define('ENGINE_NAME','sae');
     traceHttp();
     $token = 'token';
     //微信后台填写的TOKEN
     //调试
     if (isset($_GET['echostr'])) {
         $this->valid();
     } else {
         //$this->responseMsg();
         vendor('Weixinpay.WxPayJsApiPay');
         $appid = \WxPayConfig::APPID;
         $crypt = \WxPayConfig::APPSECRET;
         /* 加载微信SDK */
         $wechat = new Wechat($token, $appid, $crypt);
         /* 获取请求信息 */
         $data = $wechat->request();
         if ($data && is_array($data)) {
             /**
              * 你可以在这里分析数据,决定要返回给用户什么样的信息
              * 接受到的信息类型有10种,分别使用下面10个常量标识
              * Wechat::MSG_TYPE_TEXT       //文本消息
              * Wechat::MSG_TYPE_IMAGE      //图片消息
              * Wechat::MSG_TYPE_VOICE      //音频消息
              * Wechat::MSG_TYPE_VIDEO      //视频消息
              * Wechat::MSG_TYPE_SHORTVIDEO //视频消息
              * Wechat::MSG_TYPE_MUSIC      //音乐消息
              * Wechat::MSG_TYPE_NEWS       //图文消息(推送过来的应该不存在这种类型,但是可以给用户回复该类型消息)
              * Wechat::MSG_TYPE_LOCATION   //位置消息
              * Wechat::MSG_TYPE_LINK       //连接消息
              * Wechat::MSG_TYPE_EVENT      //事件消息
              *
              * 事件消息又分为下面五种
              * Wechat::MSG_EVENT_SUBSCRIBE    //订阅
              * Wechat::MSG_EVENT_UNSUBSCRIBE  //取消订阅
              * Wechat::MSG_EVENT_SCAN         //二维码扫描
              * Wechat::MSG_EVENT_LOCATION     //报告位置
              * Wechat::MSG_EVENT_CLICK        //菜单点击
              */
             //记录微信推送过来的数据
             file_put_contents('./data.json', json_encode($data));
             /* 响应当前请求(自动回复) */
             //$wechat->response($content, $type);
             /**
              * 响应当前请求还有以下方法可以使用
              * 具体参数格式说明请参考文档
              * 
              * $wechat->replyText($text); //回复文本消息
              * $wechat->replyImage($media_id); //回复图片消息
              * $wechat->replyVoice($media_id); //回复音频消息
              * $wechat->replyVideo($media_id, $title, $discription); //回复视频消息
              * $wechat->replyMusic($title, $discription, $musicurl, $hqmusicurl, $thumb_media_id); //回复音乐消息
              * $wechat->replyNews($news, $news1, $news2, $news3); //回复多条图文消息
              * $wechat->replyNewsOnce($title, $discription, $url, $picurl); //回复单条图文消息
              * 
              */
             //执行Demo
             $this->demo($wechat, $data);
         }
     }
 }