├── src ├── config │ ├── .gitkeep │ └── wechat.php ├── controllers │ ├── .gitkeep │ └── WechatController.php ├── Cooper │ └── Wechat │ │ ├── Facades │ │ ├── WeChatClient.php │ │ └── WeChatServer.php │ │ ├── WechatServiceProvider.php │ │ ├── WeChatServer.php │ │ ├── WeChatClient.php │ │ └── WeChatEmoji.php ├── routes.php ├── filters.php └── _ide_helper_for_wechat.php ├── .gitignore ├── .travis.yml ├── phpunit.xml ├── composer.json └── README.md /src/config/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/controllers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /vendor 2 | /public 3 | /tests 4 | composer.phar 5 | composer.lock 6 | .DS_Store -------------------------------------------------------------------------------- /src/config/wechat.php: -------------------------------------------------------------------------------- 1 | 'token', 5 | 'appId' => 'appId', 6 | 'appSecret' => 'appSecret', 7 | ); 8 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | php: 4 | - 5.3 5 | - 5.4 6 | - 5.5 7 | - 5.6 8 | - hhvm 9 | 10 | before_script: 11 | - composer self-update 12 | - composer install --prefer-source --no-interaction --dev 13 | 14 | script: phpunit 15 | -------------------------------------------------------------------------------- /src/Cooper/Wechat/Facades/WeChatClient.php: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 15 | ./tests/ 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cooper/wechat", 3 | "keywords": ["laravel", "weixin", "wechat"], 4 | "license": "MIT", 5 | "description": "Wechat SDK for Laravel 4", 6 | "authors": [ 7 | { 8 | "name": "cooper", 9 | "email": "myxiaoao@gmail.com" 10 | } 11 | ], 12 | "require": { 13 | "php": ">=5.4.0", 14 | "illuminate/support": "4.2.*" 15 | }, 16 | "autoload": { 17 | "classmap": [ 18 | "src/controllers" 19 | ], 20 | "psr-0": { 21 | "Cooper\\Wechat\\": "src/" 22 | } 23 | }, 24 | "minimum-stability": "stable" 25 | } 26 | -------------------------------------------------------------------------------- /src/controllers/WechatController.php: -------------------------------------------------------------------------------- 1 | weChatServer = $weChatServer; 23 | } 24 | 25 | /** 26 | * 测试微信功能 27 | */ 28 | function test() 29 | { 30 | dd($this->weChatServer->getMessage()); 31 | 32 | //echo WeChatServer::getXml4Txt('abc'); 33 | 34 | exit; 35 | } 36 | 37 | } -------------------------------------------------------------------------------- /src/routes.php: -------------------------------------------------------------------------------- 1 | 'wechat.test', 12 | 'uses' => 'Cooper\Wechat\Controllers\WechatController@test', 13 | )); 14 | 15 | //测试 Facade 16 | Route::any('/weixin',function(){ 17 | 18 | // //获取接收到的消息 19 | // $message = WeChatServer::getMessage(); 20 | // return $message; 21 | 22 | // //获取消息发送者的用户id 23 | // $userId = WeChatServer::getFromUserId(); 24 | // return $userId; 25 | 26 | // //获取接收消息的公众账户appId 27 | // $appId = WeChatServer::getAppId(); 28 | // return $appId; 29 | 30 | // //创建用来发送给用户的信息 31 | // $text = 'hellow laravel facades'; 32 | // $response = WeChatServer::getXml4Txt($text); 33 | // return $response; 34 | 35 | 36 | //测试 37 | $userId = WeChatServer::getFromUserId(); 38 | $sendTextMsg =WeChatClient::sendTextMsg($userId,'hello laravel'); 39 | dd($sendTextMsg); 40 | 41 | 42 | 43 | }); 44 | -------------------------------------------------------------------------------- /src/Cooper/Wechat/WechatServiceProvider.php: -------------------------------------------------------------------------------- 1 | package('cooper/wechat'); 22 | 23 | // 加载路由 24 | // 25 | include __DIR__ .'/../../routes.php'; 26 | 27 | // 加载过滤数据 28 | // 29 | include __DIR__ .'/../../filters.php'; 30 | } 31 | 32 | /** 33 | * Register the service provider. 34 | * 35 | * @return void 36 | */ 37 | public function register() 38 | { 39 | $this->app->bind('wechatserver', 'Cooper\Wechat\WeChatServer'); 40 | $this->app->bind('wechatclient', 'Cooper\Wechat\WeChatClient'); 41 | } 42 | 43 | /** 44 | * Get the services provided by the provider. 45 | * 46 | * @return array 47 | */ 48 | public function provides() 49 | { 50 | return array('wechat'); 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /src/filters.php: -------------------------------------------------------------------------------- 1 | array()`添加 26 | 27 | ``` 28 | 'WeChatServer' => 'Cooper\Wechat\Facades\WeChatServer', 29 | 'WeChatClient' => 'Cooper\Wechat\Facades\WeChatClient', 30 | 31 | ``` 32 | 33 | 执行 `php artisan config:publish cooper/wechat` ,然后修改 `app/config/packages/cooper/wechat` 中的配置文件 `wechat.php` 。 34 | 35 | 把微信公众号的 `Token` `appId` `appSecret` 改为对应的。 36 | 37 | ##2、使用 38 | 39 | * 命名空间加载类: 40 | 41 | `use \Cooper\Wechat\WeChatServer` 可以传参 `Token`,不传则使用`wechat.php`配置的参数。 42 | 43 | `use \Cooper\Wechat\WeChatClient` 可以传参 `appId` `appSecret` , 不传同上。 44 | 45 | * 不用命名空间加载,和new, 直接按照静态方式使用`WeChatServer`,`WeChatClient`: 46 | 47 | ``` 48 | Route::any('/weixin',function(){ 49 | 50 | //获取接收到的消息 51 | $message = WeChatServer::getMessage(); 52 | return $message; 53 | }) 54 | 55 | ``` 56 | 57 | ##3、类(说明) 58 | 59 | ###WeChatServer 主要实现的是“被动”接收消息和处理功能,如被动接收文本消息及回复,被动接收语音消息及回复等。 60 | 61 | * getMessage 获取微信推送过来消息数据 62 | 63 | ``` 64 | $message = WeChatServer::getMessage(); 65 | //$message为数组, 66 | //例如,用户在扫描二维码后,将获得的消息格式如下 67 | //[ 68 | // 'from' => '微信用户的open_id', 69 | // 'to' => '公众账号的原始id', 70 | // 'time' =>'消息创建的时的时间戳', 71 | // 'datetime'=> '日期', 72 | // 'type' => 'event', 73 | // 'event' => 'scan', 74 | // 'key' => 'qrcode中包含的scene_id', 75 | // 'ticket' => '用来换取qrcode的ticket' 76 | //] 77 | 78 | ``` 79 | 80 | 81 | * 被动响应消息(静态方法) 82 | 83 | ``` 84 | Route::any('/weixin',function(){ 85 | 86 | $text = 'hello laravel'; 87 | $response = WeChatServer::getXml4Txt($text); 88 | return $response; 89 | 90 | }); 91 | 92 | ``` 93 | 94 | * getXml4Txt 生成用于回复文本消息XML 95 | * getXml4ImgByMid 生成用于回复图片消息XML 96 | * getXml4VoiceByMid 生成用于回复音频消息XML 97 | * getXml4VideoByMid 生成用于回复视频消息XML 98 | * getXml4MusicByUrl 生成用于回复音乐消息XML 99 | * getXml4RichMsgByArray 生成用于回复图文消息XML 100 | 101 | * getFromUserId 获取发送者的openId 102 | 103 | ``` 104 | $userId = WeChatServer::getFromUserId(); 105 | 106 | ``` 107 | * getAppId 获取接收到消息的公众账户的id 108 | 109 | ``` 110 | $appId = WeChatServer::getAppId(); 111 | 112 | ``` 113 | 114 | 115 | ###WeChatClient 主要实现的是“主动”请求功能,如发送客服消息,群发消息,创建菜单,创建二维码等。 116 | 117 | * error (静态方法)返回错误信息对应的描述 118 | * checkIsSuc (静态方法)判断结果状态 119 | 120 | 获取access token 121 | 122 | * getAccessToken 获取AccessToken 123 | * setAccessToken 设置AccessToken 124 | 125 | 上传下载多媒体文件 126 | 127 | * upload 上传多媒体文件 128 | * download 下载多媒体文件 129 | 130 | 自定义菜单 131 | 132 | * getMenu 获取自定义菜单 133 | * deleteMenu 删除自定义菜单 134 | * setMenu 设置自定义菜单 135 | 136 | 发送客服消息 137 | 138 | ``` 139 | //通过WeChatServer 获取发送消息的用户的openId 140 | $userId = WeChatServer::getFromUserId(); 141 | 142 | //做一些数据处理操作.... 143 | //时间流逝.... 144 | //得到结果 145 | $text = 'Some results'; 146 | 147 | //以文本方式发送 148 | $sendTextMsg =WeChatClient::sendTextMsg($userId,$text); 149 | 150 | dd($sendTextMsg);//在实际环境返回布尔值,在debug='true'时返组装好的字符串 151 | ``` 152 | 153 | * sendTextMsg 发送文本消息 154 | * sendImgMsg 发送图片消息 155 | * sendVoice 发送语音消息 156 | * sendVideo 发送视频消息 157 | * sendMusic 发送音乐消息 158 | * sendRichMsg 发送图文消息 159 | 160 | 用户管理 161 | 162 | * createGroup 创建分组 163 | * renameGroup 修改分组名 164 | * getAllGroups 查询所有分组 165 | * moveUserById 移动用户分组 166 | * getGroupidByUserid 查询用户所在分组 167 | * getUserInfoById 获取用户基本信息 168 | * getFollowersList 获取关注者列表 169 | 170 | 网页授权获取用户基本信息(顺序执行) 171 | 172 | * getOAuthConnectUri 用户同意授权,获取code 173 | * getAccessTokenByCode 通过code换取网页授权access_token 174 | * refreshAccessTocken 刷新access_token(如果需要) 175 | * getUserInfoByAuth 拉取用户信息(需scope为 snsapi_userinfo) 176 | 177 | 生成带参数的二维码 178 | 179 | * getQrcodeImgByTicket 通过ticket换取二维码 180 | * getQrcodeTicket 创建二维码ticket 181 | 182 | ``` 183 | Route::any('/weixin',function(){ 184 | //生成长久二维码 185 | $option['scene_id'=>'1314520']; 186 | //如需要临时二维码10分钟 187 | //$option['scene_id'=>'13131','expire'=>600]; 188 | $code_ticket = WeChatClient::getQrcodeTicket($option); 189 | //使用Response::make相应二维码到页面 190 | return Response::make( WeChatClient::getQrcodeImgByTicket($code_ticket), 200, [ 191 | "Content-type"=>"image/jpg" 192 | ]); 193 | }); 194 | ``` 195 | 196 | 微信JS-SDK使用说明 197 | 198 | * getSignature 获得配置参数,传入 `url` 参数即可生成,`url` 建议按照微信官方示例代码生成,如下 199 | ``` 200 | $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"; 201 | $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; 202 | ``` 203 | 或使用拼接方式 204 | ``` 205 | $url = 'http://host/'; 206 | $input = Input::all(); 207 | if (!empty($input)) { 208 | $url .= '?'; 209 | foreach ($input as $key => $val) { 210 | $url .= "$key=$val&"; 211 | } 212 | $url = substr($url, 0, -1); 213 | } 214 | ``` 215 | 216 | ##4、测试 217 | 218 | 安装 Chrome 插件 219 | 220 | [Postman - REST Client](https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm) 221 | 222 | Url后面添加 `debug=true` 即可跳过验证: 223 | 224 | ``` 225 | http://localhost:8000/weixin?debug=true 226 | ``` 227 | 228 | ##5、环境 229 | PHP >= 5.4 230 | Laravel >= 4.2 231 | 232 | ##6、License 233 | This is free software distributed under the terms of the MIT license 234 | -------------------------------------------------------------------------------- /src/_ide_helper_for_wechat.php: -------------------------------------------------------------------------------- 1 | _token = $token; 49 | } 50 | else 51 | { 52 | $this->_token = Config::get('wechat::wechat.Token'); 53 | } 54 | 55 | $this->accessDataPush(); 56 | } 57 | 58 | /** 59 | * 获取发送用户的Id 60 | * 61 | * @return mixed 62 | */ 63 | public function getFromUserId() 64 | { 65 | return self::$_from_id; 66 | } 67 | 68 | /** 69 | * 获取接收消息的微信服务号 70 | * 71 | * @return mixed 72 | */ 73 | public function getAppId() 74 | { 75 | return self::$_my_id; 76 | } 77 | /** 78 | * 获取消息数据 79 | * 80 | * @return array 81 | */ 82 | public function getMessage() 83 | { 84 | return $this->message; 85 | } 86 | 87 | 88 | /** 89 | * 验证微信来源 90 | * 91 | * @return bool 92 | */ 93 | private function _checkSignature() 94 | { 95 | $signature = Input::get('signature'); 96 | $timestamp = Input::get('timestamp'); 97 | $nonce = Input::get('nonce'); 98 | 99 | $token = $this->_token; 100 | $tmpArr = array( 101 | $token, 102 | $timestamp, 103 | $nonce 104 | ); 105 | 106 | sort($tmpArr, SORT_STRING); 107 | $tmpStr = implode($tmpArr); 108 | $tmpStr = sha1($tmpStr); 109 | 110 | return $tmpStr == $signature; 111 | } 112 | 113 | /** 114 | * 转换微信消息为数组 115 | * 116 | * @param $postObj 117 | * 118 | * @return array 119 | */ 120 | private function _handlePostObj($postObj) 121 | { 122 | $MsgType = strtolower((string)$postObj->MsgType); 123 | 124 | $result = array( 125 | 'from' => self::$_from_id = (string)htmlspecialchars($postObj->FromUserName), 126 | 'to' => self::$_my_id = (string)htmlspecialchars($postObj->ToUserName), 127 | 'time' => (int)$postObj->CreateTime, 128 | // 时间戳 129 | 'datetime' => date('Y-m-d H:i:s', (int)$postObj->CreateTime), 130 | // timestamp 格式时间 131 | 'type' => (string)$MsgType 132 | ); 133 | 134 | // 消息ID 135 | // 136 | if (property_exists($postObj, 'MsgId')) 137 | { 138 | $result['id'] = (int)$postObj->MsgId; 139 | } 140 | 141 | // 消息类型 142 | // 143 | switch ($result['type']) 144 | { 145 | case 'text': 146 | $result['content'] = (string)$postObj->Content; // Content 消息内容 147 | break; 148 | 149 | case 'location': 150 | $result['X'] = (float)$postObj->Location_X; // Location_X 地理位置纬度 151 | $result['Y'] = (float)$postObj->Location_Y; // Location_Y 地理位置经度 152 | $result['S'] = (float)$postObj->Scale; // Scale 地图缩放大小 153 | $result['I'] = (string)$postObj->Label; // Label 地理位置信息 154 | break; 155 | 156 | case 'image': 157 | $result['url'] = (string)$postObj->PicUrl; // PicUrl 图片链接,开发者可以用HTTP GET获取 158 | $result['mid'] = (string)$postObj->MediaId; // MediaId 图片消息媒体id,可以调用多媒体文件下载接口拉取数据。 159 | break; 160 | 161 | case 'video': 162 | $result['mid'] = (string)$postObj->MediaId; // MediaId 图片消息媒体id,可以调用多媒体文件下载接口拉取数据。 163 | $result['thumbmid'] = (string)$postObj->ThumbMediaId; // ThumbMediaId 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。 164 | break; 165 | 166 | case 'link': 167 | $result['title'] = (string)$postObj->Title; 168 | $result['desc'] = (string)$postObj->Description; 169 | $result['url'] = (string)$postObj->Url; 170 | break; 171 | 172 | case 'voice': 173 | $result['mid'] = (string)$postObj->MediaId; 174 | $result['format'] = (string)$postObj->Format; 175 | if (property_exists($postObj, 'Recognition')) 176 | { 177 | $result['txt'] = (string)$postObj->Recognition; 178 | } 179 | break; 180 | 181 | case 'event': 182 | $result['event'] = strtolower((string)$postObj->Event); 183 | switch ($result['event']) 184 | { 185 | 186 | case 'subscribe': 187 | case 'scan': 188 | if (property_exists($postObj, 'EventKey')) 189 | { 190 | $result['key'] = str_replace( 191 | 'qrscene_', '', (string)$postObj->EventKey 192 | ); 193 | $result['ticket'] = (string)$postObj->Ticket; 194 | } 195 | break; 196 | 197 | case 'location': 198 | $result['la'] = (string)$postObj->Latitude; 199 | $result['lo'] = (string)$postObj->Longitude; 200 | $result['p'] = (string)$postObj->Precision; 201 | break; 202 | 203 | case 'click': 204 | $result['key'] = (string)$postObj->EventKey; 205 | break; 206 | } 207 | } 208 | 209 | return $result; 210 | } 211 | 212 | /** 213 | * 获取微信消息 214 | */ 215 | private function accessDataPush() 216 | { 217 | // 调试模式关闭验证 218 | // 219 | if (Input::get('debug') != 'true' && !$this->_checkSignature()) 220 | { 221 | header('HTTP/1.1 404 Not Found'); 222 | header('Status: 404 Not Found'); 223 | 224 | die('404 Not Found'); 225 | } 226 | 227 | // 响应微信发送的Token验证 228 | // 229 | if (Input::get('echostr')) 230 | { 231 | echo preg_replace('/[^a-z0-9]/i', '', Input::get('echostr')); 232 | exit; 233 | } 234 | 235 | // 获取微信POST数据 236 | // 237 | $postdata = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : file_get_contents("php://input"); 238 | 239 | if ($postdata) 240 | { 241 | $postObj = simplexml_load_string($postdata, 'SimpleXMLElement', LIBXML_NOCDATA); 242 | 243 | $this->message = $this->_handlePostObj($postObj); 244 | } 245 | } 246 | 247 | /** 248 | * 获取文本消息XML 249 | * 250 | * @param $txt 251 | * 252 | * @return string 253 | */ 254 | public static function getXml4Txt($txt) 255 | { 256 | $xml = '' 257 | . ''; 258 | 259 | return self::_format2xml(sprintf($xml, $txt)); 260 | } 261 | 262 | /** 263 | * 获取图片消息XML 264 | * 265 | * @param $mid 266 | * 267 | * @return string 268 | */ 269 | public static function getXml4ImgByMid($mid) 270 | { 271 | $xml = '' 272 | . '' 273 | . '' 274 | . ''; 275 | 276 | return self::_format2xml(sprintf($xml, $mid)); 277 | } 278 | 279 | /** 280 | * 获取音频消息XML 281 | * 282 | * @param $mid 283 | * 284 | * @return string 285 | */ 286 | public static function getXml4VoiceByMid($mid) 287 | { 288 | $xml = '' 289 | . '' 290 | . '' 291 | . ''; 292 | 293 | return self::_format2xml(sprintf($xml, $mid)); 294 | } 295 | 296 | /** 297 | * 获取视频消息XML 298 | * 299 | * @param $mid 300 | * @param $title 301 | * @param string $desc 302 | * 303 | * @return string 304 | */ 305 | public static function getXml4VideoByMid($mid, $title, $desc = '') 306 | { 307 | $desc = '' !== $desc ? $desc : $title; 308 | $xml = '' 309 | . ''; 314 | 315 | return self::_format2xml(sprintf($xml, $mid, $title, $desc)); 316 | } 317 | 318 | /** 319 | * 获取音乐消息XML 320 | * 321 | * @param $url 322 | * @param $thumbmid 323 | * @param $title 324 | * @param string $desc 325 | * @param string $hqurl 326 | * 327 | * @return string 328 | */ 329 | public static function getXml4MusicByUrl($url, $thumbmid, $title, $desc = '', $hqurl = '') 330 | { 331 | $xml = '' 332 | . '' 333 | . '<![CDATA[%s]]>' 334 | . '' 335 | . '' 336 | . '' 337 | . '' 338 | . ''; 339 | 340 | return self::_format2xml(sprintf($xml, $title, '' === $desc ? $title : $desc, $url, $hqurl ? $hqurl : $url, $thumbmid)); 341 | } 342 | 343 | /** 344 | * 获取图文消息XML 345 | * 346 | * @param $list 347 | * 348 | * @return string 349 | */ 350 | public static function getXml4RichMsgByArray($list) 351 | { 352 | $max = 10; 353 | $i = 0; 354 | $ii = count($list); 355 | $list_xml = ''; 356 | 357 | while ($i < $ii && $i < $max) 358 | { 359 | $item = $list[$i++]; 360 | $list_xml .= 361 | sprintf( 362 | '' 363 | . '<![CDATA[%s]]> ' 364 | . '' 365 | . '' 366 | . '' 367 | . '', $item['title'], $item['desc'], $item['pic'], $item['url'] 368 | ); 369 | } 370 | 371 | $xml = '' 372 | . '%s' 373 | . '%s'; 374 | 375 | return self::_format2xml(sprintf($xml, $i, $list_xml)); 376 | } 377 | 378 | /** 379 | * XML基础模板 380 | * 381 | * @param $nodes 382 | * 383 | * @return string 384 | */ 385 | private static function _format2xml($nodes) 386 | { 387 | $xml = '' 388 | . '' 389 | . '' 390 | . '%s' 391 | . '%s' 392 | . ''; 393 | 394 | return sprintf($xml, self::$_from_id, self::$_my_id, time(), $nodes); 395 | } 396 | } 397 | -------------------------------------------------------------------------------- /src/Cooper/Wechat/WeChatClient.php: -------------------------------------------------------------------------------- 1 | '系统繁忙', 24 | '0' => '请求成功', 25 | '40001' => '获取access_token时AppSecret错误,或者access_token无效', 26 | '40002' => '不合法的凭证类型', 27 | '40003' => '不合法的OpenID', 28 | '40004' => '不合法的媒体文件类型', 29 | '40005' => '不合法的文件类型', 30 | '40006' => '不合法的文件大小', 31 | '40007' => '不合法的媒体文件id', 32 | '40008' => '不合法的消息类型', 33 | '40009' => '不合法的图片文件大小', 34 | '40010' => '不合法的语音文件大小', 35 | '40011' => '不合法的视频文件大小', 36 | '40012' => '不合法的缩略图文件大小', 37 | '40013' => '不合法的APPID', 38 | '40014' => '不合法的access_token', 39 | '40015' => '不合法的菜单类型', 40 | '40016' => '不合法的按钮个数', 41 | '40017' => '不合法的按钮个数', 42 | '40018' => '不合法的按钮名字长度', 43 | '40019' => '不合法的按钮KEY长度', 44 | '40020' => '不合法的按钮URL长度', 45 | '40021' => '不合法的菜单版本号', 46 | '40022' => '不合法的子菜单级数', 47 | '40023' => '不合法的子菜单按钮个数', 48 | '40024' => '不合法的子菜单按钮类型', 49 | '40025' => '不合法的子菜单按钮名字长度', 50 | '40026' => '不合法的子菜单按钮KEY长度', 51 | '40027' => '不合法的子菜单按钮URL长度', 52 | '40028' => '不合法的自定义菜单使用用户', 53 | '40029' => '不合法的oauth_code', 54 | '40030' => '不合法的refresh_token', 55 | '40031' => '不合法的openid列表', 56 | '40032' => '不合法的openid列表长度', 57 | '40033' => '不合法的请求字符,不能包含\uxxxx格式的字符', 58 | '40035' => '不合法的参数', 59 | '40038' => '不合法的请求格式', 60 | '40039' => '不合法的URL长度', 61 | '40050' => '不合法的分组id', 62 | '40051' => '分组名字不合法', 63 | '41001' => '缺少access_token参数', 64 | '41002' => '缺少appid参数', 65 | '41003' => '缺少refresh_token参数', 66 | '41004' => '缺少secret参数', 67 | '41005' => '缺少多媒体文件数据', 68 | '41006' => '缺少media_id参数', 69 | '41007' => '缺少子菜单数据', 70 | '41008' => '缺少oauth code', 71 | '41009' => '缺少openid', 72 | '42001' => 'access_token超时', 73 | '42002' => 'refresh_token超时', 74 | '42003' => 'oauth_code超时', 75 | '43001' => '需要GET请求', 76 | '43002' => '需要POST请求', 77 | '43003' => '需要HTTPS请求', 78 | '43004' => '需要接收者关注', 79 | '43005' => '需要好友关系', 80 | '44001' => '多媒体文件为空', 81 | '44002' => 'POST的数据包为空', 82 | '44003' => '图文消息内容为空', 83 | '44004' => '文本消息内容为空', 84 | '45001' => '多媒体文件大小超过限制', 85 | '45002' => '消息内容超过限制', 86 | '45003' => '标题字段超过限制', 87 | '45004' => '描述字段超过限制', 88 | '45005' => '链接字段超过限制', 89 | '45006' => '图片链接字段超过限制', 90 | '45007' => '语音播放时间超过限制', 91 | '45008' => '图文消息超过限制', 92 | '45009' => '接口调用超过限制', 93 | '45010' => '创建菜单个数超过限制', 94 | '45015' => '回复时间超过限制', 95 | '45016' => '系统分组,不允许修改', 96 | '45017' => '分组名字过长', 97 | '45018' => '分组数量超过上限', 98 | '46001' => '不存在媒体数据', 99 | '46002' => '不存在的菜单版本', 100 | '46003' => '不存在的菜单数据', 101 | '46004' => '不存在的用户', 102 | '47001' => '解析JSON/XML内容错误', 103 | '48001' => 'api功能未授权', 104 | '50001' => '用户未授权该api', 105 | ); 106 | 107 | public static $_USERINFO_LANG = 'en'; 108 | 109 | private $_appid; 110 | 111 | private $_appsecret; 112 | 113 | private static $_accessTokenCache = array(); 114 | 115 | private static $_jsapiTicketCache = array(); 116 | 117 | private static $ERROR_LOGS = array(); 118 | 119 | private static $ERROR_NO = 0; 120 | 121 | /** 122 | * 构造函数 设置appid、appsecret 123 | * 124 | * @param string $appid 125 | * @param string $appsecret 126 | */ 127 | public function __construct($appid = '', $appsecret = '') 128 | { 129 | if ($appsecret && $appid) 130 | { 131 | $this->_appid = $appid; 132 | $this->_appsecret = $appsecret; 133 | } 134 | else 135 | { 136 | $this->_appid = Config::get('wechat::wechat.appId'); 137 | $this->_appsecret = Config::get('wechat::wechat.appSecret'); 138 | } 139 | } 140 | 141 | /** 142 | * 处理错误信息 143 | * 144 | * @return int 145 | */ 146 | public static function error() 147 | { 148 | return self::$ERRCODE_MAP[self::$ERROR_NO] ? self::$ERRCODE_MAP[self::$ERROR_NO] : self::$ERROR_NO; 149 | } 150 | 151 | /** 152 | * 判断结果状态 153 | * 154 | * @param $res 155 | * 156 | * @return bool 157 | */ 158 | public static function checkIsSuc($res) 159 | { 160 | $result = TRUE; 161 | 162 | if (is_string($res)) 163 | { 164 | $res = json_decode($res, TRUE); 165 | } 166 | 167 | if (isset($res['errcode']) && (0 !== (int)$res['errcode'])) 168 | { 169 | array_push(self::$ERROR_LOGS, $res); 170 | $result = FALSE; 171 | self::$ERROR_NO = $res['errcode']; 172 | } 173 | 174 | return $result; 175 | } 176 | 177 | /** 178 | * 模拟GET 179 | * 180 | * @param $url 181 | * 182 | * @return string 183 | */ 184 | private static function get($url) 185 | { 186 | $ch = curl_init(); 187 | curl_setopt($ch, CURLOPT_URL, $url); 188 | # curl_setopt($ch, CURLOPT_HEADER, 1); 189 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 190 | 191 | curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 192 | curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 193 | 194 | if (!curl_exec($ch)) 195 | { 196 | error_log(curl_error($ch)); 197 | $data = ''; 198 | } 199 | else 200 | { 201 | $data = curl_multi_getcontent($ch); 202 | } 203 | curl_close($ch); 204 | 205 | return $data; 206 | } 207 | 208 | /** 209 | * 模拟POST 210 | * 211 | * @param $url 212 | * @param $data 213 | * 214 | * @return mixed|string 215 | */ 216 | private static function post($url, $data) 217 | { 218 | if (!function_exists('curl_init')) 219 | { 220 | return ''; 221 | } 222 | 223 | $ch = curl_init(); 224 | curl_setopt($ch, CURLOPT_URL, $url); 225 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 226 | # curl_setopt( $ch, CURLOPT_HEADER, 1); 227 | 228 | curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 229 | curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 230 | 231 | curl_setopt($ch, CURLOPT_POST, 1); 232 | curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 233 | $data = curl_exec($ch); 234 | if (!$data) 235 | { 236 | error_log(curl_error($ch)); 237 | } 238 | curl_close($ch); 239 | 240 | return $data; 241 | } 242 | 243 | /** 244 | * 获取 AccessToken 245 | * 246 | * @param int $tokenOnly 247 | * @param int $nocache 248 | * 249 | * @return array|null 250 | */ 251 | public function getAccessToken($tokenOnly = 1, $nocache = 0) 252 | { 253 | $myTokenInfo = NULL; 254 | $appid = $this->_appid; 255 | $appsecret = $this->_appsecret; 256 | $cachename = 'wechatat_' . $appid; 257 | 258 | if ($nocache || empty(self::$_accessTokenCache[$appid])) 259 | { 260 | self::$_accessTokenCache[$appid] = Cache::get($cachename); 261 | } 262 | 263 | if (!empty(self::$_accessTokenCache[$appid])) 264 | { 265 | $myTokenInfo = self::$_accessTokenCache[$appid]; 266 | if (time() < $myTokenInfo['expiration']) 267 | { 268 | return $tokenOnly ? $myTokenInfo['token'] : $myTokenInfo; 269 | } 270 | } 271 | 272 | $url = self::$_URL_API_ROOT . "/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret"; 273 | 274 | $json = self::get($url); 275 | $res = json_decode($json, TRUE); 276 | 277 | if (self::checkIsSuc($res)) 278 | { 279 | self::$_accessTokenCache[$appid] = $myTokenInfo = array( 280 | 'token' => $res['access_token'], 281 | 'expiration' => time() + (int)$res['expires_in'] 282 | ); 283 | 284 | Cache::put($cachename, $myTokenInfo, ((int)$res['expires_in'] / 60)); 285 | } 286 | 287 | return $tokenOnly ? $myTokenInfo['token'] : $myTokenInfo; 288 | } 289 | 290 | /** 291 | * 设置 AccessToken 292 | * 293 | * @param $tokenInfo 294 | */ 295 | public function setAccessToken($tokenInfo) 296 | { 297 | if ($tokenInfo) 298 | { 299 | $appid = $this->_appid; 300 | self::$_accessTokenCache[$appid] = array( 301 | 'token' => $tokenInfo['token'], 302 | 'expire' => $tokenInfo['expire'] 303 | ); 304 | } 305 | } 306 | 307 | /** 308 | * 生成随机字符串 309 | * @param int $length 310 | * @return string 311 | */ 312 | private function _createNonceStr($length = 16) { 313 | $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; 314 | $str = ""; 315 | for ($i = 0; $i < $length; $i++) { 316 | $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); 317 | } 318 | return $str; 319 | } 320 | 321 | /** 322 | * 获取jsapi_ticket 323 | * @param int $ticketOnly 324 | * @param int $nocache 325 | * @return array|null 326 | */ 327 | private function _getJSticket($ticketOnly = 1, $nocache = 0) 328 | { 329 | $jsTicketInfo = NULL; 330 | $appid = $this->_appid; 331 | $cachename = 'wechatat_jsapi_ticket_' . $appid; 332 | 333 | if ($nocache || empty(self::$_accessTokenCache[$appid])) 334 | { 335 | self::$_jsapiTicketCache[$appid] = Cache::get($cachename); 336 | } 337 | 338 | if (!empty(self::$_jsapiTicketCache[$appid])) 339 | { 340 | $jsTicketInfo = self::$_jsapiTicketCache[$appid]; 341 | if (time() < $jsTicketInfo['expiration']) 342 | { 343 | return $ticketOnly ? $jsTicketInfo['ticket'] : $jsTicketInfo; 344 | } 345 | } 346 | 347 | $access_token = $this->getAccessToken(); 348 | $url = self::$_URL_API_ROOT . "/cgi-bin/ticket/getticket?access_token=$access_token&type=jsapi"; 349 | $res = json_decode(self::get($url), TRUE); 350 | 351 | if (self::checkIsSuc($res)) 352 | { 353 | self::$_jsapiTicketCache[$appid] = $jsTicketInfo = array( 354 | 'ticket' => $res['ticket'], 355 | 'expiration' => time() + (int)$res['expires_in'] 356 | ); 357 | 358 | Cache::put($cachename, $jsTicketInfo, ((int)$res['expires_in'] / 60)); 359 | } 360 | 361 | return NULL; 362 | } 363 | 364 | /** 365 | * [getSignature description] 366 | * @param string $url 367 | * @return array 368 | */ 369 | public function getSignature($url) 370 | { 371 | $nonceStr = $this->_createNonceStr(); 372 | $timestamp = time(); 373 | 374 | $str = "jsapi_ticket=" . $this->_getJSticket(); 375 | $str .= "&noncestr=" . $nonceStr; 376 | $str .= "×tamp=" . $timestamp; 377 | $str .= "&url=" . $url; 378 | $signature = sha1($str); 379 | return ["signature"=>$signature,"noncestr"=>$nonceStr,"timestamp"=>$timestamp,"url"=>$url]; 380 | } 381 | 382 | /** 383 | * 上传多媒体文件 384 | * 385 | * @param $type 386 | * @param $file_path 387 | * @param int $mediaidOnly 388 | * 389 | * @return mixed|null 390 | */ 391 | public function upload($type, $file_path, $mediaidOnly = 1) 392 | { 393 | $access_token = $this->getAccessToken(); 394 | $url = self::$_URL_FILE_API_ROOT . "/cgi-bin/media/upload?access_token=$access_token&type=$type"; 395 | 396 | $res = self::post($url, array('media' => "@$file_path")); 397 | $res = json_decode($res, TRUE); 398 | 399 | if (self::checkIsSuc($res)) 400 | { 401 | return $mediaidOnly ? $res['media_id'] : $res; 402 | } 403 | 404 | return NULL; 405 | } 406 | 407 | /** 408 | * 下载多媒体文件 409 | * 410 | * @param $mid 411 | * 412 | * @return string 413 | */ 414 | public function download($mid) 415 | { 416 | $access_token = $this->getAccessToken(); 417 | $url = self::$_URL_FILE_API_ROOT . "/cgi-bin/media/get?access_token=$access_token&media_id=$mid"; 418 | 419 | return self::get($url); 420 | } 421 | 422 | /** 423 | * 获取自定义菜单 424 | * 425 | * @return mixed|null 426 | */ 427 | public function getMenu() 428 | { 429 | $access_token = $this->getAccessToken(); 430 | $url = self::$_URL_API_ROOT . "/cgi-bin/menu/get?access_token=$access_token"; 431 | 432 | $json = self::get($url); 433 | 434 | $res = json_decode($json, TRUE); 435 | if (self::checkIsSuc($res)) 436 | { 437 | return $res; 438 | } 439 | 440 | return NULL; 441 | } 442 | 443 | /** 444 | * 删除自定义菜单 445 | * 446 | * @return bool 447 | */ 448 | public function deleteMenu() 449 | { 450 | $access_token = $this->getAccessToken(); 451 | $url = self::$_URL_API_ROOT . "/cgi-bin/menu/delete?access_token=$access_token"; 452 | 453 | $res = self::get($url); 454 | 455 | return self::checkIsSuc($res); 456 | } 457 | 458 | /** 459 | * 设置自定义菜单 460 | * 461 | * @param $myMenu 462 | * 463 | * @return bool 464 | */ 465 | public function setMenu($myMenu) 466 | { 467 | $access_token = $this->getAccessToken(); 468 | $url = self::$_URL_API_ROOT . "/cgi-bin/menu/create?access_token=$access_token"; 469 | 470 | if (defined('JSON_UNESCAPED_UNICODE')) 471 | { 472 | $json = is_string($myMenu) ? $myMenu : json_encode($myMenu, JSON_UNESCAPED_UNICODE); 473 | } 474 | else 475 | { 476 | $json = is_string($myMenu) ? $myMenu : json_encode($myMenu); 477 | } 478 | 479 | $json = urldecode($json); 480 | $res = self::post($url, $json); 481 | 482 | return self::checkIsSuc($res); 483 | } 484 | 485 | /** 486 | * 发送信息 487 | * 488 | * @param $to 489 | * @param $type 490 | * @param $data 491 | * 492 | * @return bool 493 | */ 494 | private function _send($to, $type, $data) 495 | { 496 | 497 | $json = json_encode( 498 | array( 499 | 'touser' => $to, 500 | 'msgtype' => $type, 501 | $type => $data 502 | ), JSON_UNESCAPED_UNICODE 503 | ); 504 | //如果是debug状态下,直接返回内容 505 | if(Input::get('debug') == 'true') return $json; 506 | 507 | $access_token = $this->getAccessToken(); 508 | $url = self::$_URL_API_ROOT . "/cgi-bin/message/custom/send?access_token=$access_token"; 509 | 510 | $res = self::post($url, $json); 511 | 512 | return self::checkIsSuc($res); 513 | } 514 | 515 | /** 516 | * 发送文本消息(发送客服消息) 517 | * 518 | * @param $to 519 | * @param $msg 520 | * 521 | * @return bool 522 | */ 523 | public function sendTextMsg($to, $msg) 524 | { 525 | return $this->_send($to, 'text', array('content' => $msg)); 526 | } 527 | 528 | /** 529 | * 发送图片消息(发送客服消息) 530 | * 531 | * @param $to 532 | * @param $mid 533 | * 534 | * @return bool 535 | */ 536 | public function sendImgMsg($to, $mid) 537 | { 538 | return $this->_send($to, 'image', array('media_id' => $mid)); 539 | } 540 | 541 | /** 542 | * 发送语音消息(发送客服消息) 543 | * 544 | * @param $to 545 | * @param $mid 546 | * 547 | * @return bool 548 | */ 549 | public function sendVoice($to, $mid) 550 | { 551 | return $this->_send($to, 'voice', array('media_id' => $mid)); 552 | } 553 | 554 | /** 555 | * 发送视频消息(发送客服消息) 556 | * 557 | * @param $to 558 | * @param $mid 559 | * @param $title 560 | * @param $desc 561 | * 562 | * @return bool 563 | */ 564 | public function sendVideo($to, $mid, $title, $desc) 565 | { 566 | return $this->_send($to, 'video', array( 567 | 'media_id' => $mid, 568 | 'title' => $title, 569 | 'description' => $desc 570 | )); 571 | } 572 | 573 | /** 574 | * 发送音乐消息(发送客服消息) 575 | * 576 | * @param $to 577 | * @param $url 578 | * @param $mid 579 | * @param $thumb_mid 580 | * @param $title 581 | * @param string $desc 582 | * @param string $hq_url 583 | * 584 | * @return bool 585 | */ 586 | public function sendMusic($to, $url, $mid, $thumb_mid, $title, $desc = '', $hq_url = '') 587 | { 588 | return $this->_send($to, 'music', array( 589 | 'media_id' => $mid, 590 | 'title' => $title, 591 | 'description' => $desc || $title, 592 | 'musicurl' => $url, 593 | 'thumb_media_id' => $thumb_mid, 594 | 'hqmusicurl' => $hq_url || $url 595 | )); 596 | } 597 | 598 | 599 | /** 600 | * @param $to 关注者openId 601 | * @param $jumpUrl 点击跳转地址 602 | * @param $template_id 模板ID 603 | * @param array $data 模板数据 604 | * @return bool|string 605 | */ 606 | public function sendTemplate($to,$jumpUrl,$template_id,$data=array(),$defaultTopColor='#FF0000'){ 607 | $json = json_encode( 608 | array( 609 | 'touser' => $to, 610 | 'template_id' => $template_id, 611 | "url" => $jumpUrl, 612 | "topcolor" => $defaultTopColor, 613 | 'data' => $data, 614 | ) 615 | ); 616 | //如果是debug状态下,直接返回内容 617 | if(Input::get('debug') == 'true') return $json; 618 | 619 | $access_token = $this->getAccessToken(); 620 | $url = self::$_URL_API_ROOT . "/cgi-bin/message/template/send?access_token=$access_token"; 621 | $res = self::post($url, $json); 622 | return self::checkIsSuc($res); 623 | } 624 | 625 | /** 626 | * 图文数据数组 627 | * 628 | * @param $articles 629 | * 630 | * @return array 631 | */ 632 | static private function _filterForRichMsg($articles) 633 | { 634 | $i = 0; 635 | $ii = len($articles); 636 | $result = array(); 637 | while ($i < $ii) 638 | { 639 | $currentArticle = $articles[$i++]; 640 | try 641 | { 642 | array_push($result, array( 643 | 'title' => $currentArticle['title'], 644 | 'description' => $currentArticle['desc'], 645 | 'url' => $currentArticle['url'], 646 | 'picurl' => $currentArticle['thumb_url'] 647 | )); 648 | } 649 | catch (Exception $e) 650 | { 651 | 652 | } 653 | } 654 | 655 | return $result; 656 | } 657 | 658 | /** 659 | * 发送图文消息(发送客服消息) 660 | * 661 | * @param $to 662 | * @param $articles 663 | * 664 | * @return bool 665 | */ 666 | public function sendRichMsg($to, $articles) 667 | { 668 | return $this->_send($to, 'news', array( 669 | 'articles' => self::_filterForRichMsg($articles) 670 | )); 671 | } 672 | 673 | /** 674 | * 创建分组 675 | * 676 | * @param $name 677 | * 678 | * @return null 679 | */ 680 | public function createGroup($name) 681 | { 682 | $access_token = $this->getAccessToken(); 683 | $url = self::$_URL_API_ROOT . "/cgi-bin/groups/create?access_token=$access_token"; 684 | 685 | $res = self::post($url, json_encode(array( 686 | 'group' => array('name' => $name) 687 | ))); 688 | 689 | $res = json_decode($res, TRUE); 690 | 691 | return self::checkIsSuc($res) ? $res['group']['id'] : NULL; 692 | } 693 | 694 | /** 695 | * 修改分组名 696 | * 697 | * @param $gid 698 | * @param $name 699 | * 700 | * @return bool 701 | */ 702 | public function renameGroup($gid, $name) 703 | { 704 | $access_token = $this->getAccessToken(); 705 | $url = self::$_URL_API_ROOT . "/cgi-bin/groups/update?access_token=$access_token"; 706 | 707 | $res = self::post($url, json_encode(array( 708 | 'group' => array( 709 | 'id' => $gid, 710 | 'name' => $name 711 | ) 712 | ))); 713 | 714 | $res = json_decode($res, TRUE); 715 | 716 | return self::checkIsSuc($res); 717 | } 718 | 719 | /** 720 | * 查询所有分组 721 | * 722 | * @return null 723 | */ 724 | public function getAllGroups() 725 | { 726 | $access_token = $this->getAccessToken(); 727 | $url = self::$_URL_API_ROOT . "/cgi-bin/groups/get?access_token=$access_token"; 728 | 729 | $res = self::get($url); 730 | // echo $res; 731 | $res = json_decode($res, TRUE); 732 | 733 | return self::checkIsSuc($res) ? $res['groups'] : NULL; 734 | } 735 | 736 | /** 737 | * 移动用户分组 738 | * 739 | * @param $uid 740 | * @param $gid 741 | * 742 | * @return bool 743 | */ 744 | public function moveUserById($uid, $gid) 745 | { 746 | $access_token = $this->getAccessToken(); 747 | $url = self::$_URL_API_ROOT . "/cgi-bin/groups/members/update?access_token=$access_token"; 748 | 749 | $res = self::post( 750 | $url, json_encode( 751 | array( 752 | 'openid' => $uid, 753 | 'to_groupid' => $gid 754 | ) 755 | ) 756 | ); 757 | 758 | $res = json_decode($res, TRUE); 759 | 760 | return self::checkIsSuc($res); 761 | } 762 | 763 | /** 764 | * 查询用户所在分组 通过用户的OpenID查询其所在的GroupID。 765 | * 766 | * @param $uid 767 | * 768 | * @return null 769 | */ 770 | public function getGroupidByUserid($uid) 771 | { 772 | $access_token = $this->getAccessToken(); 773 | $url = self::$_URL_API_ROOT . "/cgi-bin/groups/getid?access_token=$access_token"; 774 | 775 | $res = self::post($url, json_encode(array( 776 | 'openid' => $uid 777 | ))); 778 | 779 | $res = json_decode($res, TRUE); 780 | 781 | return self::checkIsSuc($res) ? $res['groupid'] : NULL; 782 | } 783 | 784 | /** 785 | * 根据用户ID 获取用户基本信息 786 | * 787 | * @param $uid 788 | * @param string $lang 789 | * 790 | * @return mixed|null 791 | */ 792 | public function getUserInfoById($uid, $lang = '') 793 | { 794 | if (!$lang) 795 | { 796 | $lang = self::$_USERINFO_LANG; 797 | } 798 | $access_token = $this->getAccessToken(); 799 | $url = self::$_URL_API_ROOT . "/cgi-bin/user/info?access_token=$access_token&openid=$uid&lang=$lang"; 800 | 801 | $res = json_decode(self::get($url), TRUE); 802 | 803 | return self::checkIsSuc($res) ? $res : NULL; 804 | } 805 | 806 | /** 807 | * 获取关注者列表 808 | * 809 | * @param string $next_id 810 | * 811 | * @return array|null 812 | */ 813 | public function getFollowersList($next_id = '') 814 | { 815 | $access_token = $this->getAccessToken(); 816 | $extend = ''; 817 | if ($next_id) 818 | { 819 | $extend = "&next_openid=$next_id"; 820 | } 821 | $url = self::$_URL_API_ROOT . "/cgi-bin/user/get?access_token=${access_token}$extend"; 822 | 823 | $res = json_decode( 824 | self::get($url), TRUE 825 | ); 826 | 827 | return self::checkIsSuc($res) ? array( 828 | 'total' => $res['total'], 829 | 'list' => $res['data']['openid'], 830 | 'next_id' => isset($res['next_openid']) ? $res['next_openid'] : NULL 831 | ) : NULL; 832 | } 833 | 834 | /** 835 | * 1、用户同意授权,获取code。 836 | * 837 | * @param $redirect_uri 838 | * @param string $state 839 | * @param string $scope 840 | * 841 | * @return string 842 | */ 843 | public function getOAuthConnectUri($redirect_uri, $state = '', $scope = 'snsapi_base') 844 | { 845 | $redirect_uri = urlencode($redirect_uri); 846 | $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->_appid}&redirect_uri={$redirect_uri}&response_type=code&scope={$scope}&state={$state}#wechat_redirect"; 847 | 848 | return $url; 849 | } 850 | 851 | /** 852 | * 2、通过code换取网页授权access_token 853 | * 854 | * @param $code 855 | * 856 | * @return mixed 857 | */ 858 | public function getAccessTokenByCode($code) 859 | { 860 | $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$this->_appid}&secret={$this->_appsecret}&code=$code&grant_type=authorization_code"; 861 | $res = json_decode(self::get($url), TRUE); 862 | 863 | return $res; 864 | } 865 | 866 | /** 867 | * 3、刷新access_token(如果需要) 868 | * 869 | * @param $refresh_token 870 | * 871 | * @return mixed 872 | */ 873 | public function refreshAccessTocken($refresh_token) 874 | { 875 | $url = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid={$this->_appid}&grant_type=refresh_token&refresh_token=$refresh_token"; 876 | $res = json_decode(self::get($url), TRUE); 877 | 878 | return $res; 879 | } 880 | 881 | /** 882 | * 4、拉取用户信息(需scope为 snsapi_userinfo) 883 | * 884 | * @param $access_token 885 | * @param $openid 886 | * @param string $lang 887 | * 888 | * @return mixed 889 | */ 890 | public function getUserInfoByAuth($access_token, $openid, $lang = 'zh_CN') 891 | { 892 | $url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=$lang"; 893 | $res = json_decode(self::get($url), TRUE); 894 | 895 | return $res; 896 | } 897 | 898 | /** 899 | * 获取二维码 900 | * 901 | * @param $ticket 902 | * 903 | * @return string 904 | */ 905 | public static function getQrcodeImgByTicket($ticket) 906 | { 907 | return self::get(self::getQrcodeImgUrlByTicket($ticket)); 908 | } 909 | 910 | /** 911 | * 通过ticket换取二维码 912 | * 913 | * @param $ticket 914 | * 915 | * @return string 916 | */ 917 | public static function getQrcodeImgUrlByTicket($ticket) 918 | { 919 | $ticket = urlencode($ticket); 920 | 921 | return self::$_URL_QR_ROOT . "/cgi-bin/showqrcode?ticket=$ticket"; 922 | } 923 | 924 | /** 925 | * 创建二维码ticket 926 | * 927 | * @param array $options 928 | * 929 | * @return array|null 930 | */ 931 | public function getQrcodeTicket($options = array()) 932 | { 933 | $access_token = $this->getAccessToken(); 934 | 935 | $scene_id = isset($options['scene_id']) ? (int)$options['scene_id'] : 0; 936 | $expire = isset($options['expire']) ? (int)$options['expire'] : 0; 937 | $ticketOnly = isset($options['ticketOnly']) ? $options['ticketOnly'] : 1; 938 | 939 | $url = self::$_URL_API_ROOT . "/cgi-bin/qrcode/create?access_token=$access_token"; 940 | $data = array( 941 | 'action_name' => 'QR_LIMIT_SCENE', 942 | 'action_info' => array( 943 | 'scene' => array( 944 | 'scene_id' => $scene_id 945 | ) 946 | ) 947 | ); 948 | if ($expire) 949 | { 950 | $data['expire_seconds'] = $expire; 951 | $data['action_name'] = 'QR_SCENE'; 952 | } 953 | 954 | if ($data['action_name'] == 'QR_LIMIT_SCENE' && $scene_id > 100000) 955 | { 956 | $data['action_info']['scene']['scene_id'] = self::$_QRCODE_TICKET_DEFAULT_ID; 957 | } 958 | 959 | $data = json_encode($data); 960 | 961 | $res = self::post($url, $data); 962 | $res = json_decode($res, TRUE); 963 | 964 | if (self::checkIsSuc($res)) 965 | { 966 | return $ticketOnly ? $res['ticket'] : array( 967 | 'ticket' => $res['ticket'], 968 | 'expire' => $res['expire_seconds'] 969 | ); 970 | } 971 | 972 | return NULL; 973 | } 974 | } 975 | -------------------------------------------------------------------------------- /src/Cooper/Wechat/WeChatEmoji.php: -------------------------------------------------------------------------------- 1 | \xe4\xba\xba<)", 188 | "\xee\x99\xa3", 189 | "\xee\x99\xa4", 190 | "\xee\x99\xa5", 191 | "\xee\x99\xa6", 192 | "\xee\x99\xa7", 193 | "\xee\x99\xa8", 194 | "\xee\x99\xa9", 195 | "\xee\x99\xa9\xee\x9b\xaf", 196 | "\xee\x99\xaa", 197 | "\xee\x9c\xbe", 198 | "[\xe6\x95\x99\xe4\xbc\x9a]", 199 | "[\xe5\x99\xb4\xe6\xb0\xb4]", 200 | "[\xe3\x83\x87\xe3\x83\x91\xe3\x83\xbc\xe3\x83\x88]", 201 | "[\xe5\x9f\x8e]", 202 | "[\xe5\xb7\xa5\xe5\xa0\xb4]", 203 | "\xee\x99\xa1", 204 | "\xee\x9d\x8b", 205 | "\xee\x9d\x80", 206 | "[\xe6\x9d\xb1\xe4\xba\xac\xe3\x82\xbf\xe3\x83\xaf\xe3\x83\xbc]", 207 | "[\xe8\x87\xaa\xe7\x94\xb1\xe3\x81\xae\xe5\xa5\xb3\xe7\xa5\x9e]", 208 | "[\xe6\x97\xa5\xe6\x9c\xac\xe5\x9c\xb0\xe5\x9b\xb3]", 209 | "[\xe3\x83\xa2\xe3\x82\xa2\xe3\x82\xa4]", 210 | "\xee\x9a\x99", 211 | "\xee\x99\xb4", 212 | "[\xe3\x83\x96\xe3\x83\xbc\xe3\x83\x84]", 213 | "\xee\x9a\x9a", 214 | "\xee\x9c\x8e", 215 | "\xee\x9c\x91", 216 | "\xee\x9c\x9a", 217 | "[\xe3\x83\x8d\xe3\x82\xaf\xe3\x82\xbf\xe3\x82\xa4]", 218 | "[\xe5\xb8\xbd\xe5\xad\x90]", 219 | "[\xe3\x83\x89\xe3\x83\xac\xe3\x82\xb9]", 220 | "[\xe7\x9d\x80\xe7\x89\xa9]", 221 | "[\xe3\x83\x93\xe3\x82\xad\xe3\x83\x8b]", 222 | "\xee\x9c\x8f", 223 | "\xee\x9a\x82", 224 | "\xee\x9a\xad", 225 | "\xee\x9c\x95", 226 | "[$\xef\xbf\xa5]", 227 | "[\xe6\xa0\xaa\xe4\xbe\xa1]", 228 | "[\xe3\x82\xab\xe3\x83\xbc\xe3\x83\x89]", 229 | "\xee\x9b\x96", 230 | "[\xe9\xa3\x9b\xe3\x82\x93\xe3\x81\xa7\xe3\x81\x84\xe3\x81\x8f\xe3\x81\x8a\xe9\x87\x91]", 231 | "[\xe4\xb8\xad\xe5\x9b\xbd]", 232 | "[\xe3\x83\x89\xe3\x82\xa4\xe3\x83\x84]", 233 | "[\xe3\x82\xb9\xe3\x83\x9a\xe3\x82\xa4\xe3\x83\xb3]", 234 | "[\xe3\x83\x95\xe3\x83\xa9\xe3\x83\xb3\xe3\x82\xb9]", 235 | "[\xe3\x82\xa4\xe3\x82\xae\xe3\x83\xaa\xe3\x82\xb9]", 236 | "[\xe3\x82\xa4\xe3\x82\xbf\xe3\x83\xaa\xe3\x82\xa2]", 237 | "[\xe6\x97\xa5\xe3\x81\xae\xe4\xb8\xb8]", 238 | "[\xe9\x9f\x93\xe5\x9b\xbd]", 239 | "[\xe3\x83\xad\xe3\x82\xb7\xe3\x82\xa2]", 240 | "[USA]", 241 | "[\xe7\x82\x8e]", 242 | "\xee\x9b\xbb", 243 | "\xee\x9c\x98", 244 | "[\xe3\x83\x8f\xe3\x83\xb3\xe3\x83\x9e\xe3\x83\xbc]", 245 | "[\xe3\x83\x8d\xe3\x82\xb8]", 246 | "[\xe5\x8c\x85\xe4\xb8\x81]", 247 | "[\xe3\x83\x94\xe3\x82\xb9\xe3\x83\x88\xe3\x83\xab]", 248 | "[\xe5\x8d\xa0\xe3\x81\x84]", 249 | "[\xe8\x8b\xa5\xe8\x91\x89\xe3\x83\x9e\xe3\x83\xbc\xe3\x82\xaf]", 250 | "[\xe6\xb3\xa8\xe5\xb0\x84]", 251 | "[\xe8\x96\xac]", 252 | "[A]", 253 | "[B]", 254 | "[AB]", 255 | "[O]", 256 | "\xee\x9a\x84", 257 | "\xee\x9a\x85", 258 | "\xee\x9a\x86", 259 | "\xee\x9a\xa4", 260 | "[\xe3\x82\xb5\xe3\x83\xb3\xe3\x82\xbf]", 261 | "[\xe7\xa5\x9d\xe6\x97\xa5]", 262 | "[\xe8\x8a\xb1\xe7\x81\xab]", 263 | "[\xe9\xa2\xa8\xe8\x88\xb9]", 264 | "[\xe3\x82\xaf\xe3\x83\xa9\xe3\x83\x83\xe3\x82\xab\xe3\x83\xbc]", 265 | "[\xe9\x96\x80\xe6\x9d\xbe]", 266 | "[\xe3\x81\xb2\xe3\x81\xaa\xe7\xa5\xad\xe3\x82\x8a]", 267 | "[\xe5\x8d\x92\xe6\xa5\xad\xe5\xbc\x8f]", 268 | "[\xe3\x83\xa9\xe3\x83\xb3\xe3\x83\x89\xe3\x82\xbb\xe3\x83\xab]", 269 | "[\xe3\x81\x93\xe3\x81\x84\xe3\x81\xae\xe3\x81\xbc\xe3\x82\x8a]", 270 | "[\xe7\xb7\x9a\xe9\xa6\x99\xe8\x8a\xb1\xe7\x81\xab]", 271 | "[\xe9\xa2\xa8\xe9\x88\xb4]", 272 | "[\xe3\x83\x8f\xe3\x83\xad\xe3\x82\xa6\xe3\x82\xa3\xe3\x83\xb3]", 273 | "[\xe3\x82\xaa\xe3\x83\xa1\xe3\x83\x87\xe3\x83\x88\xe3\x82\xa6]", 274 | "[\xe4\xb8\x83\xe5\xa4\x95]", 275 | "[\xe3\x81\x8a\xe6\x9c\x88\xe8\xa6\x8b]", 276 | "\xee\x99\x9a", 277 | "\xee\x9a\x87", 278 | "\xee\x9a\x88", 279 | "\xee\x9b\x8e", 280 | "\xee\x9a\x89", 281 | "\xee\x9b\x90", 282 | "\xee\x9b\x93", 283 | "\xee\x9b\x8f", 284 | "[\xe6\x96\xb0\xe8\x81\x9e]", 285 | "[\xe3\x82\xb9\xe3\x83\x94\xe3\x83\xbc\xe3\x82\xab]", 286 | "[\xe3\x83\xa1\xe3\x82\xac\xe3\x83\x9b\xe3\x83\xb3]", 287 | "[\xe3\x82\xa2\xe3\x83\xb3\xe3\x83\x86\xe3\x83\x8a]", 288 | "[\xe9\x80\x81\xe4\xbf\xa1BOX]", 289 | "[\xe5\x8f\x97\xe4\xbf\xa1BOX]", 290 | "[ABCD]", 291 | "[abcd]", 292 | "[1234]", 293 | "[\xe8\xa8\x98\xe5\x8f\xb7]", 294 | "[ABC]", 295 | "\xee\x9a\xae", 296 | "\xee\x9a\xb2", 297 | "\xee\x9c\x96", 298 | "\xee\x9c\x99", 299 | "\xee\x9c\xb0", 300 | "[MD]", 301 | "[\xe3\x83\x95\xe3\x83\xad\xe3\x83\x83\xe3\x83\x94\xe3\x83\xbc]", 302 | "\xee\x9a\x8c", 303 | "[\xe7\x94\xbb\xe3\x81\xb3\xe3\x82\x87\xe3\x81\x86]", 304 | "[\xe3\x82\xab\xe3\x83\xac\xe3\x83\xb3\xe3\x83\x80\xe3\x83\xbc]", 305 | "[\xe3\x83\x95\xe3\x82\xa9\xe3\x83\xab\xe3\x83\x80]", 306 | "\xee\x9a\x83", 307 | "[\xe5\x90\x8d\xe6\x9c\xad]", 308 | "\xee\x9c\x8a", 309 | "[\xe3\x82\xb0\xe3\x83\xa9\xe3\x83\x95]", 310 | "[\xe5\xae\x9a\xe8\xa6\x8f]", 311 | "[\xe4\xb8\x89\xe8\xa7\x92\xe5\xae\x9a\xe8\xa6\x8f]", 312 | "\xee\x99\x92", 313 | "\xee\x99\x93", 314 | "\xee\x99\x94", 315 | "\xee\x99\x95", 316 | "\xee\x99\x96", 317 | "\xee\x99\x97", 318 | "\xee\x99\x98", 319 | "\xee\x99\x99", 320 | "\xee\x9c\x92", 321 | "\xee\x9c\xb3", 322 | "[\xe3\x83\x88\xe3\x83\xad\xe3\x83\x95\xe3\x82\xa3\xe3\x83\xbc]", 323 | "[\xe3\x83\x95\xe3\x83\x83\xe3\x83\x88\xe3\x83\x9c\xe3\x83\xbc\xe3\x83\xab]", 324 | "[\xe6\xb0\xb4\xe6\xb3\xb3]", 325 | "\xee\x99\x9b", 326 | "\xee\x99\x9c", 327 | "\xee\x99\x9d", 328 | "\xee\x99\x9e", 329 | "\xee\x99\x9f", 330 | "\xee\x99\xa0", 331 | "[\xe3\x83\x90\xe3\x82\xb9\xe5\x81\x9c]", 332 | "\xee\x99\xa2", 333 | "\xee\x9a\xa3", 334 | "[\xe9\xa7\x85]", 335 | "[\xe3\x83\xad\xe3\x82\xb1\xe3\x83\x83\xe3\x83\x88]", 336 | "[\xe3\x83\x88\xe3\x83\xa9\xe3\x83\x83\xe3\x82\xaf]", 337 | "[\xe6\xb6\x88\xe9\x98\xb2\xe8\xbb\x8a]", 338 | "[\xe6\x95\x91\xe6\x80\xa5\xe8\xbb\x8a]", 339 | "[\xe3\x83\x91\xe3\x83\x88\xe3\x82\xab\xe3\x83\xbc]", 340 | "\xee\x99\xab", 341 | "\xee\x99\xac", 342 | "\xee\x99\xad", 343 | "[\xe5\xb7\xa5\xe4\xba\x8b\xe4\xb8\xad]", 344 | "\xee\x9b\xb7", 345 | "[\xe3\x82\xad\xe3\x83\xa3\xe3\x83\xb3\xe3\x83\x97]", 346 | "\xee\x99\xb9", 347 | "[\xe8\xa6\xb3\xe8\xa6\xa7\xe8\xbb\x8a]", 348 | "[\xe3\x82\xb8\xe3\x82\xa7\xe3\x83\x83\xe3\x83\x88\xe3\x82\xb3\xe3\x83\xbc\xe3\x82\xb9\xe3\x82\xbf\xe3\x83\xbc]", 349 | "\xee\x99\xb6", 350 | "\xee\x99\xb7", 351 | "\xee\x99\xba", 352 | "\xee\x99\xbb", 353 | "\xee\x99\xbc", 354 | "\xee\x99\xbd", 355 | "\xee\x99\xbe", 356 | "\xee\x9a\xac", 357 | "[\xe6\xbc\x94\xe5\x8a\x87]", 358 | "\xee\x9a\x8b", 359 | "[\xe9\xba\xbb\xe9\x9b\x80]", 360 | "[\xe7\x9a\x84\xe4\xb8\xad]", 361 | "[777]", 362 | "[\xe3\x83\x93\xe3\x83\xaa\xe3\x83\xa4\xe3\x83\xbc\xe3\x83\x89]", 363 | "[\xe3\x82\xb5\xe3\x82\xa4\xe3\x82\xb3\xe3\x83\xad]", 364 | "[\xe3\x83\x9c\xe3\x83\xbc\xe3\x83\xaa\xe3\x83\xb3\xe3\x82\xb0]", 365 | "[\xe8\x8a\xb1\xe6\x9c\xad]", 366 | "[\xe3\x82\xb8\xe3\x83\xa7\xe3\x83\xbc\xe3\x82\xab\xe3\x83\xbc]", 367 | "\xee\x9b\xb6", 368 | "\xee\x9b\xbf", 369 | "[\xe3\x82\xb5\xe3\x83\x83\xe3\x82\xaf\xe3\x82\xb9]", 370 | "[\xe3\x82\xae\xe3\x82\xbf\xe3\x83\xbc]", 371 | "[\xe3\x83\x94\xe3\x82\xa2\xe3\x83\x8e]", 372 | "[\xe3\x83\x88\xe3\x83\xa9\xe3\x83\xb3\xe3\x83\x9a\xe3\x83\x83\xe3\x83\x88]", 373 | "[\xe3\x83\x90\xe3\x82\xa4\xe3\x82\xaa\xe3\x83\xaa\xe3\x83\xb3]", 374 | "[\xe6\xad\x8c\xe8\xa8\x98\xe5\x8f\xb7]", 375 | "\xee\x9a\x81", 376 | "\xee\x9a\x8a", 377 | "[\xe3\x83\xa9\xe3\x82\xb8\xe3\x82\xaa]", 378 | "[\xe3\x83\x93\xe3\x83\x87\xe3\x82\xaa]", 379 | "\xee\x9c\x97", 380 | "\xee\x9c\x9b", 381 | "[\xe8\x8a\xb1\xe6\x9d\x9f]", 382 | "\xee\x9b\xad", 383 | "[\xe7\xb5\x90\xe5\xa9\x9a\xe5\xbc\x8f]", 384 | "[18\xe7\xa6\x81]", 385 | "\xee\x9c\xb1", 386 | "\xee\x9c\xb6", 387 | "\xee\x9c\xb2", 388 | "[\xef\xbd\x89]", 389 | "\xee\x9b\xa0", 390 | "\xee\x9b\xa2", 391 | "\xee\x9b\xa3", 392 | "\xee\x9b\xa4", 393 | "\xee\x9b\xa5", 394 | "\xee\x9b\xa6", 395 | "\xee\x9b\xa7", 396 | "\xee\x9b\xa8", 397 | "\xee\x9b\xa9", 398 | "\xee\x9b\xaa", 399 | "\xee\x9b\xab", 400 | "[10]", 401 | "[\xe3\x83\x90\xe3\x83\xaa3]", 402 | "[\xe3\x83\x9e\xe3\x83\x8a\xe3\x83\xbc\xe3\x83\xa2\xe3\x83\xbc\xe3\x83\x89]", 403 | "[\xe3\x82\xb1\xe3\x83\xbc\xe3\x82\xbf\xe3\x82\xa4OFF]", 404 | "\xee\x99\xb3", 405 | "\xee\x9d\x89", 406 | "\xee\x9d\x8a", 407 | "\xee\x9d\x8c", 408 | "\xee\x9d\x8d", 409 | "[\xe3\x83\x95\xe3\x83\xa9\xe3\x82\xa4\xe3\x83\x91\xe3\x83\xb3]", 410 | "[\xe3\x82\xbd\xe3\x83\x95\xe3\x83\x88\xe3\x82\xaf\xe3\x83\xaa\xe3\x83\xbc\xe3\x83\xa0]", 411 | "[\xe3\x83\x9d\xe3\x83\x86\xe3\x83\x88]", 412 | "[\xe3\x81\xa0\xe3\x82\x93\xe3\x81\x94]", 413 | "[\xe3\x81\x9b\xe3\x82\x93\xe3\x81\xb9\xe3\x81\x84]", 414 | "[\xe3\x83\x91\xe3\x82\xb9\xe3\x82\xbf]", 415 | "[\xe3\x82\xab\xe3\x83\xac\xe3\x83\xbc]", 416 | "[\xe3\x81\x8a\xe3\x81\xa7\xe3\x82\x93]", 417 | "[\xe3\x81\x99\xe3\x81\x97]", 418 | "[\xe5\xbc\x81\xe5\xbd\x93]", 419 | "[\xe9\x8d\x8b]", 420 | "[\xe3\x82\xab\xe3\x82\xad\xe6\xb0\xb7]", 421 | "[\xe8\x82\x89]", 422 | "[\xe3\x82\x84\xe3\x81\x8d\xe3\x81\x84\xe3\x82\x82]", 423 | "[\xe3\x83\x94\xe3\x82\xb6]", 424 | "[\xe3\x83\x81\xe3\x82\xad\xe3\x83\xb3]", 425 | "[\xe3\x82\xa2\xe3\x82\xa4\xe3\x82\xb9\xe3\x82\xaf\xe3\x83\xaa\xe3\x83\xbc\xe3\x83\xa0]", 426 | "[\xe3\x83\x89\xe3\x83\xbc\xe3\x83\x8a\xe3\x83\x84]", 427 | "[\xe3\x82\xaf\xe3\x83\x83\xe3\x82\xad\xe3\x83\xbc]", 428 | "[\xe3\x83\x81\xe3\x83\xa7\xe3\x82\xb3]", 429 | "[\xe3\x82\xad\xe3\x83\xa3\xe3\x83\xb3\xe3\x83\x87\xe3\x82\xa3]", 430 | "[\xe3\x83\x97\xe3\x83\xaa\xe3\x83\xb3]", 431 | "[\xe3\x83\x8f\xe3\x83\x81\xe3\x83\x9f\xe3\x83\x84]", 432 | "[\xe3\x82\xa8\xe3\x83\x93\xe3\x83\x95\xe3\x83\xa9\xe3\x82\xa4]", 433 | "\xee\x99\xaf", 434 | "\xee\x99\xb0", 435 | "\xee\x99\xb1", 436 | "\xee\x99\xb2", 437 | "\xee\x9c\x9e", 438 | "\xee\x9d\x96", 439 | "\xee\x99\xb8", 440 | "\xee\x9a\x96", 441 | "\xee\x9a\x97", 442 | "\xee\x9a\xa5", 443 | "\xee\x9b\xb5", 444 | "\xee\x9c\x80", 445 | "\xee\x9c\xbc", 446 | "\xee\x9c\xbd", 447 | "[\xe2\x86\x91]", 448 | "[\xe2\x86\x93]", 449 | "[\xe2\x86\x92]", 450 | "[\xe2\x86\x90]", 451 | "[>]", 452 | "[<]", 453 | "[>>]", 454 | "[<<]", 455 | "\xe2\x96\xb2", 456 | "\xe2\x96\xbc", 457 | "[\xc3\x97]", 458 | "\xee\x9c\x82", 459 | "\xee\x9c\x83", 460 | "\xee\x9c\x84", 461 | "[\xef\xbc\x9f]", 462 | "\xee\x9c\x89", 463 | "\xee\x9b\x9f", 464 | "\xee\x9b\xac", 465 | "\xee\x9b\xae", 466 | "\xee\x9b\xaf", 467 | "\xee\x9b\xb8", 468 | "\xee\x9a\x8d", 469 | "\xee\x9a\x8e", 470 | "\xee\x9a\x8f", 471 | "\xee\x9a\x90", 472 | "\xee\x99\xbf", 473 | "\xee\x9a\x80", 474 | "\xee\x9a\x9b", 475 | "\xee\x9b\x9e", 476 | "\xee\x9c\xb7", 477 | "\xee\x9c\xb5", 478 | "\xee\x9c\x9d", 479 | "[\xe2\x99\x82]", 480 | "[\xe2\x99\x80]", 481 | "\xee\x99\xae", 482 | "\xee\x9c\x94", 483 | "\xee\x9c\xb8", 484 | "[\xe3\x83\x81\xe3\x82\xa7\xe3\x83\x83\xe3\x82\xaf\xe3\x83\x9e\xe3\x83\xbc\xe3\x82\xaf]", 485 | "\xee\x9b\x9b", 486 | "[COOL]", 487 | "\xee\x9b\x97", 488 | "\xee\x9b\x98", 489 | "\xee\x9b\x9d", 490 | "[SOS]", 491 | "[UP!]", 492 | "[VS]", 493 | "[\xe3\x82\xb3\xe3\x82\xb3]", 494 | "[\xe3\x82\xb5\xe3\x83\xbc\xe3\x83\x93\xe3\x82\xb9]", 495 | "\xee\x9c\xb9", 496 | "\xee\x9c\xba", 497 | "\xee\x9c\xbb", 498 | "[\xe6\x9c\x89]", 499 | "[\xe7\x84\xa1]", 500 | "[\xe6\x9c\x88]", 501 | "[\xe7\x94\xb3]", 502 | "[\xe5\x89\xb2]", 503 | "[\xe6\x8c\x87]", 504 | "[\xe5\x96\xb6]", 505 | "\xee\x9c\xb4", 506 | "[\xe7\xa5\x9d]", 507 | "[\xe5\xbe\x97]", 508 | "[\xe5\x8f\xaf]", 509 | "[\xef\xbc\x8b]", 510 | "[\xef\xbc\x8d]", 511 | "[\xc3\xb7]", 512 | "\xee\x9b\xbc", 513 | "\xee\x9b\xbe", 514 | "\xee\x9c\x85", 515 | "\xee\x9c\x86", 516 | "\xee\x9c\x87", 517 | "\xee\x9c\x88", 518 | "[\xe3\x82\xa6\xe3\x83\xb3\xe3\x83\x81]", 519 | "[\xe5\x8a\x9b\xe3\x81\x93\xe3\x81\xb6]", 520 | "[\xe3\x82\xaf\xe3\x83\xa9\xe3\x82\xaf\xe3\x83\xa9]", 521 | "[\xe3\x83\x95\xe3\x82\xad\xe3\x83\x80\xe3\x82\xb7]", 522 | "\xee\x9b\xba", 523 | "\xe2\x96\xa0", 524 | "\xe2\x97\x86", 525 | "[\xe8\x8a\xb1\xe4\xb8\xb8]", 526 | "[100\xe7\x82\xb9]", 527 | "\xee\x9b\x9a", 528 | "\xe2\x94\x94\xe2\x86\x92", 529 | "[\xe9\x9b\xbb\xe6\xb1\xa0]", 530 | "[\xe3\x82\xb3\xe3\x83\xb3\xe3\x82\xbb\xe3\x83\xb3\xe3\x83\x88]", 531 | "\xee\x9b\x9c", 532 | "\xee\x9b\x99", 533 | "\xee\x9c\x93", 534 | "[\xe3\x83\xa9\xe3\x82\xb8\xe3\x82\xaa\xe3\x83\x9c\xe3\x82\xbf\xe3\x83\xb3]", 535 | "[\xe3\x83\x96\xe3\x83\x83\xe3\x82\xaf\xe3\x83\x9e\xe3\x83\xbc\xe3\x82\xaf]", 536 | "[\xe3\x83\xaa\xe3\x83\xb3\xe3\x82\xaf]", 537 | "[\xe2\x86\x90BACK]", 538 | "\xee\x9a\xb9", 539 | "\xee\x9a\xb8", 540 | "\xee\x9a\xb7", 541 | "[TOP]", 542 | "\xee\x9a\x93", 543 | "\xee\x9a\x95", 544 | "\xee\x9a\x94", 545 | "\xee\x9b\xbd", 546 | "\xee\x9c\xa7", 547 | "[\xe4\xba\xba\xe5\xb7\xae\xe3\x81\x97\xe6\x8c\x87]", 548 | "[\xe6\x8b\x8d\xe6\x89\x8b]", 549 | "\xee\x92\x88", 550 | "\xee\x92\x8d", 551 | "\xee\x92\x8c", 552 | "\xee\x92\x85", 553 | "\xee\x92\x87", 554 | "\xee\x91\xa9", 555 | "\xee\x96\x98", 556 | "\xee\xab\xa8", 557 | "\xee\xab\xb1", 558 | "\xee\xab\xb4", 559 | "\xee\x97\x9a", 560 | "\xee\xab\xb2", 561 | "\xee\x92\x8a", 562 | "\xee\x92\x8e", 563 | "\xee\x92\xbf", 564 | "\xee\xad\xbc", 565 | "\xee\xad\x93", 566 | "\xee\xad\x9f", 567 | "\xee\x96\xb3", 568 | "\xee\x96\xa8", 569 | "\xee\x96\xa9", 570 | "\xee\x96\xaa", 571 | "\xee\x92\x86", 572 | "\xe2\x97\x8b", 573 | "\xee\x92\x89", 574 | "\xee\x92\x8b", 575 | "\xee\x91\xa8", 576 | "\xee\x96\x94", 577 | "\xee\x95\xba", 578 | "\xee\x95\xbb", 579 | "\xee\x91\xbc", 580 | "\xee\x92\x8f", 581 | "\xee\x92\x90", 582 | "\xee\x92\x91", 583 | "\xee\x92\x92", 584 | "\xee\x92\x93", 585 | "\xee\x92\x94", 586 | "\xee\x92\x95", 587 | "\xee\x92\x96", 588 | "\xee\x92\x97", 589 | "\xee\x92\x98", 590 | "\xee\x92\x99", 591 | "\xee\x92\x9a", 592 | "\xee\x92\x9b", 593 | "\xee\x94\x93", 594 | "\xee\x93\xa4", 595 | "\xee\xad\xbd", 596 | "\xee\x93\x8e", 597 | "\xee\x93\x8a", 598 | "\xee\x96\xba", 599 | "\xee\x97\x8d", 600 | "\xee\xaa\x94", 601 | "\xee\x93\xa3", 602 | "\xee\x93\xa2", 603 | "\xee\xaa\x96", 604 | "\xee\xac\xb6", 605 | "\xee\xac\xb7", 606 | "\xee\xac\xb8", 607 | "\xee\xad\x89", 608 | "\xee\xae\x82", 609 | "\xee\x93\x92", 610 | "\xee\xac\xb5", 611 | "\xee\xaa\xb9", 612 | "\xee\xaa\xba", 613 | "\xee\x93\x94", 614 | "\xee\x93\x8d", 615 | "\xee\xaa\xbb", 616 | "\xee\xaa\xbc", 617 | "\xee\xac\xb2", 618 | "\xee\xac\xb3", 619 | "\xee\xac\xb4", 620 | "\xee\xac\xb9", 621 | "\xee\xad\x9a", 622 | "\xee\x96\xa4", 623 | "\xee\x96\xa5", 624 | "\xee\xab\x90", 625 | "\xee\xab\x91", 626 | "\xee\xad\x87", 627 | "\xee\x94\x89", 628 | "\xee\xaa\xa0", 629 | "\xee\x94\x8b", 630 | "\xee\xaa\xa1", 631 | "\xee\xaa\xa2", 632 | "\xe3\x80\x93", 633 | "\xee\x93\xbc", 634 | "\xee\x93\xba", 635 | "\xee\x94\x81", 636 | "\xee\x97\x9d", 637 | "\xee\xab\x9b", 638 | "\xee\xab\xa9", 639 | "\xee\xac\x93", 640 | "\xee\xac\x94", 641 | "\xee\xac\x95", 642 | "\xee\xac\x96", 643 | "\xee\xac\x97", 644 | "\xee\xac\x98", 645 | "\xee\xac\x99", 646 | "\xee\xac\x9a", 647 | "\xee\xad\x84", 648 | "\xee\xad\x85", 649 | "\xee\x93\x8b", 650 | "\xee\x96\xbf", 651 | "\xee\x94\x8e", 652 | "\xee\x93\xac", 653 | "\xee\x93\xaf", 654 | "\xee\x93\xb8", 655 | "\xee\xac\x9c", 656 | "\xee\xad\xbe", 657 | "\xee\xac\xa2", 658 | "\xee\x93\x98", 659 | "\xee\xac\xa3", 660 | "\xee\xac\xa4", 661 | "\xee\xac\xa5", 662 | "\xee\xac\x9f", 663 | "\xee\xac\xa0", 664 | "\xee\x93\x99", 665 | "\xee\x97\x87", 666 | "\xee\xab\xac", 667 | "\xee\xac\x9e", 668 | "\xee\x93\x9d", 669 | "\xee\xad\x97", 670 | "\xee\xad\x98", 671 | "\xee\xac\x9d", 672 | "\xee\x93\x93", 673 | "\xee\x97\x94", 674 | "\xee\x93\xa0", 675 | "\xee\xad\xb6", 676 | "\xee\x97\x9b", 677 | "\xee\x93\x9c", 678 | "\xee\x93\x9f", 679 | "\xee\xac\x9b", 680 | "\xee\x97\x82", 681 | "\xee\x97\x80", 682 | "\xee\x93\x9b", 683 | "\xee\x91\xb0", 684 | "\xee\x93\xa1", 685 | "\xee\x93\x9e", 686 | "\xee\x97\x81", 687 | "\xee\xac\xa1", 688 | "\xee\x93\x97", 689 | "\xee\x93\x9a", 690 | "\xee\x93\xae", 691 | "\xee\xac\xbf", 692 | "\xee\xad\x86", 693 | "\xee\xad\x88", 694 | "\xee\x91\xb2", 695 | "\xee\xad\xa7", 696 | "\xee\xab\x8a", 697 | "\xee\xab\x80", 698 | "\xee\x96\xae", 699 | "\xee\xab\x8b", 700 | "\xee\xab\x89", 701 | "\xee\x97\x84", 702 | "\xee\xab\x81", 703 | "\xee\x93\xa7", 704 | "\xee\xab\x8d", 705 | "\xee\xab\x8f", 706 | "\xee\xab\x8e", 707 | "\xee\xab\x87", 708 | "\xee\xab\x88", 709 | "\xee\x91\xb1", 710 | "\xee\x91\xb1\xee\x96\xb1", 711 | "\xee\xab\x85", 712 | "\xee\xae\x80", 713 | "\xee\xad\xa4", 714 | "\xee\x93\xbb", 715 | "\xee\xad\xa9", 716 | "\xee\x91\xb3", 717 | "\xee\xab\x86", 718 | "\xee\xab\x82", 719 | "\xee\xad\x9d", 720 | "\xee\xab\x83", 721 | "\xee\x97\x85", 722 | "\xee\xab\x84", 723 | "\xee\xaa\xbf", 724 | "\xee\x97\x86", 725 | "\xee\x91\xb4", 726 | "\xee\x97\x83", 727 | "\xee\xad\xa1", 728 | "\xee\xad\xbf", 729 | "\xee\xad\xa3", 730 | "\xee\xad\xa0", 731 | "\xee\xad\xa5", 732 | "\xee\xad\xa8", 733 | "\xee\xad\x9e", 734 | "\xee\xad\xaa", 735 | "\xee\xad\xa6", 736 | "\xee\xab\x97", 737 | "\xee\xab\x98", 738 | "\xee\xab\x99", 739 | "\xee\xad\x90", 740 | "\xee\xad\x91", 741 | "\xee\xad\x92", 742 | "\xee\xae\x85", 743 | "\xee\xae\x86", 744 | "\xee\xae\x87", 745 | "\xee\xae\x88", 746 | "\xee\xab\x92", 747 | "\xee\x92\xab", 748 | "\xee\xac\x89", 749 | "\xee\x92\xad", 750 | "\xee\x97\x9e", 751 | "\xee\x97\x9f", 752 | "\xee\x92\xaa", 753 | "\xee\x92\xa3", 754 | "\xee\xaa\x81", 755 | "\xee\xab\xb3", 756 | "\xee\x92\xa4", 757 | "\xee\xaa\x80", 758 | "\xee\x96\xbb", 759 | "\xee\x97\x8f", 760 | "\xee\xab\xb6", 761 | "\xee\xab\xb7", 762 | "\xee\xab\xb8", 763 | "\xee\xab\xb9", 764 | "\xee\x92\xa9", 765 | "\xee\x92\xbd", 766 | "\xee\x96\xbd", 767 | "\xee\x93\x80", 768 | "\xee\x95\xb2", 769 | "\xee\xad\xac", 770 | "\xee\x96\xb7", 771 | "\xee\xac\xab", 772 | "\xee\x94\x9a", 773 | "\xee\xaa\x9f", 774 | "\xee\xac\xaa", 775 | "\xee\x93\xbe", 776 | "\xee\x96\xb6", 777 | "\xee\xad\xb7", 778 | "\xee\x97\x89", 779 | "\xee\xaa\x93", 780 | "\xee\xaa\x9e", 781 | "\xee\xad\xab", 782 | "\xee\xaa\xa3", 783 | "\xee\xaa\xa4", 784 | "\xee\x94\x8d", 785 | "\xee\x94\x84", 786 | "\xee\x92\x9c", 787 | "[\xe3\x81\xb5\xe3\x81\x8f\xe3\x82\x8d]", 788 | "\xee\x93\x87", 789 | "\xee\x97\x9c", 790 | "\xee\x95\xb9", 791 | "\xee\x95\xbc", 792 | "\xee\x95\xbd", 793 | "\xee\x96\x85", 794 | "\xee\xad\x9b", 795 | "\xee\xac\x91", 796 | "\xee\xac\x8e", 797 | "\xee\x97\x95", 798 | "\xee\xab\xba", 799 | "\xee\xac\x90", 800 | "\xee\xac\x8f", 801 | "\xee\x93\x8c", 802 | "\xee\xac\x92", 803 | "\xee\x97\x96", 804 | "\xee\x95\xb3", 805 | "\xee\x91\xbb", 806 | "\xee\x96\x83", 807 | "\xee\x96\x87", 808 | "\xee\x97\x8b", 809 | "\xee\x96\x81", 810 | "\xee\x95\xbf", 811 | "\xee\x94\x8a", 812 | "\xee\xaa\x8f", 813 | "\xee\x92\x80", 814 | "\xee\x94\x90", 815 | "\xee\xaa\x9a", 816 | "\xee\xac\xa6", 817 | "\xee\xac\xa7", 818 | "\xee\xac\xa9", 819 | "\xee\xac\xa8", 820 | "\xee\x96\x9f", 821 | "\xee\x93\x8f", 822 | "\xee\x96\xa0", 823 | "\xee\x93\x89", 824 | "\xee\xab\xb0", 825 | "\xee\x97\x99", 826 | "\xee\x97\x8c", 827 | "\xee\xaa\x9b", 828 | "\xee\xaa\x9c", 829 | "\xee\xab\xa3", 830 | "\xee\xab\xa4", 831 | "\xee\xab\xa5", 832 | "\xee\xab\xa6", 833 | "\xee\xab\xa7", 834 | "\xee\xab\xab", 835 | "\xee\xab\xad", 836 | "\xee\xab\xae", 837 | "\xee\x91\xaf", 838 | "\xee\xac\xbd", 839 | "\xee\xab\xaf", 840 | "\xee\x96\x9b", 841 | "\xee\x96\x96", 842 | "\xee\x94\x9e", 843 | "\xee\x96\x88", 844 | "\xee\xac\x88", 845 | "\xee\xaa\x92", 846 | "\xee\x94\xa0", 847 | "\xee\x94\xa1", 848 | "\xee\x96\x91", 849 | "\xee\xad\xa2", 850 | "\xee\x94\x9b", 851 | "\xee\xac\x8a", 852 | "\xee\x96\x8b", 853 | "\xee\x94\x91", 854 | "\xee\x92\xa8", 855 | "\xee\x96\x92", 856 | "\xee\x96\x93", 857 | "\xee\x94\x9f", 858 | "\xee\xad\xb1", 859 | "\xee\xab\xbd", 860 | "\xee\xab\xbe", 861 | "\xee\xab\xbf", 862 | "\xee\xac\x80", 863 | "\xee\xad\x95", 864 | "\xee\xac\x83", 865 | "[\xe3\x81\x84\xe3\x81\x99]", 866 | "\xee\x96\xb8", 867 | "\xee\x92\xa1", 868 | "\xee\x92\xa0", 869 | "\xee\x97\x8e", 870 | "\xee\x96\x82", 871 | "\xee\x95\xa2", 872 | "\xee\x94\x8c", 873 | "\xee\x94\x96", 874 | "\xee\x95\xa0", 875 | "\xee\x95\xa1", 876 | "\xee\x95\xa9", 877 | "\xee\x95\xa3", 878 | "\xee\x96\x8f", 879 | "\xee\x96\x90", 880 | "\xee\x95\xab", 881 | "\xee\x92\x9f", 882 | "\xee\x92\x9d", 883 | "\xee\x95\xa8", 884 | "\xee\x95\xa5", 885 | "\xee\x95\xa6", 886 | "\xee\x95\xa7", 887 | "\xee\x95\xaf", 888 | "\xee\x94\x9d", 889 | "\xee\x95\x9f", 890 | "\xee\x95\xa4", 891 | "\xee\x95\xaa", 892 | "\xee\x95\xb4", 893 | "\xee\x95\xb5", 894 | "\xee\x95\xb6", 895 | "\xee\x95\xac", 896 | "\xee\x95\xad", 897 | "\xee\x95\xae", 898 | "\xee\x95\xb0", 899 | "\xee\x92\xa2", 900 | "\xee\xac\x8b", 901 | "\xee\x92\xba", 902 | "\xee\x96\x99", 903 | "\xee\x92\xb7", 904 | "\xee\x92\xb6", 905 | "\xee\xaa\xac", 906 | "\xee\x96\x9a", 907 | "\xee\x92\xb9", 908 | "\xee\x92\xb8", 909 | "\xee\x91\xab", 910 | "\xee\xad\x81", 911 | "\xee\x97\x93", 912 | "\xee\x92\xbb", 913 | "\xee\xab\x9e", 914 | "\xee\x92\xb5", 915 | "\xee\x96\xbc", 916 | "\xee\x92\xb0", 917 | "\xee\x92\xb1", 918 | "\xee\x92\xaf", 919 | "\xee\x92\xa7", 920 | "\xee\xaa\x82", 921 | "\xee\x92\xb3", 922 | "\xee\x92\xb4", 923 | "\xee\xad\xad", 924 | "\xee\x97\x88", 925 | "\xee\x92\xb2", 926 | "\xee\xab\x9f", 927 | "\xee\xab\xa0", 928 | "\xee\xab\xa1", 929 | "\xee\x95\xb1", 930 | "\xee\x92\xa6", 931 | "\xee\x91\xaa", 932 | "\xee\x97\x97", 933 | "\xee\xad\xb3", 934 | "\xee\x92\xbc", 935 | "\xee\x97\x90", 936 | "\xee\x91\xad", 937 | "\xee\xab\xa2", 938 | "\xee\xad\x82", 939 | "\xee\x94\x83", 940 | "\xee\x94\x97", 941 | "\xee\x94\x88", 942 | "\xee\x96\x9c", 943 | "\xee\xab\xb5", 944 | "\xee\x96\x9e", 945 | "\xee\x92\x9e", 946 | "\xee\x92\xbe", 947 | "\xee\x96\x9d", 948 | "\xee\x93\x86", 949 | "\xee\x97\x91", 950 | "\xee\x93\x85", 951 | "\xee\x91\xae", 952 | "\xee\xab\x9d", 953 | "\xee\x93\x88", 954 | "\xee\xad\x83", 955 | "\xee\xad\xae", 956 | "\xee\xad\xaf", 957 | "\xee\x96\xbe", 958 | "\xee\x94\x85", 959 | "\xee\x94\x86", 960 | "\xee\xad\x80", 961 | "\xee\xab\x9c", 962 | "\xee\x94\x87", 963 | "\xee\xab\x8c", 964 | "\xee\x94\x95", 965 | "\xee\x95\xbe", 966 | "\xee\x94\x82", 967 | "\xee\x96\xb9", 968 | "\xee\x96\x80", 969 | "\xee\x93\xab", 970 | "\xee\xad\xb8", 971 | "\xee\x94\x94", 972 | "\xee\x97\x8a", 973 | "\xee\xaa\x95", 974 | "\xee\xab\x9a", 975 | "\xee\xaa\x83", 976 | "\xee\x95\x98", 977 | "\xee\x95\x99", 978 | "\xee\x95\x8e", 979 | "\xee\x94\xb3", 980 | "\xee\xae\x84", 981 | "\xee\x94\xa2", 982 | "\xee\x94\xa3", 983 | "\xee\x94\xa4", 984 | "\xee\x94\xa5", 985 | "\xee\x94\xa6", 986 | "\xee\x94\xa7", 987 | "\xee\x94\xa8", 988 | "\xee\x94\xa9", 989 | "\xee\x94\xaa", 990 | "\xee\x96\xac", 991 | "\xee\x94\xab", 992 | "\xee\xaa\x84", 993 | "\xee\xaa\x90", 994 | "\xee\xaa\x91", 995 | "\xee\x93\x96", 996 | "\xee\x93\x95", 997 | "\xee\x93\x90", 998 | "\xee\x96\xb4", 999 | "\xee\xaa\xaf", 1000 | "\xee\x93\x91", 1001 | "\xee\xaa\xb0", 1002 | "\xee\xaa\xb1", 1003 | "\xee\xaa\xb2", 1004 | "\xee\xaa\xb3", 1005 | "\xee\xaa\xb4", 1006 | "\xee\xaa\xb5", 1007 | "\xee\xaa\xb6", 1008 | "\xee\xaa\xb7", 1009 | "\xee\xaa\xb8", 1010 | "\xee\xaa\xbd", 1011 | "\xee\xaa\xbe", 1012 | "\xee\xab\xaa", 1013 | "\xee\x93\x84", 1014 | "\xee\x93\xad", 1015 | "\xee\xac\xba", 1016 | "\xee\xac\xbb", 1017 | "\xee\xac\xbc", 1018 | "\xee\xad\x8a", 1019 | "\xee\xad\x8b", 1020 | "\xee\xad\x8c", 1021 | "\xee\xad\x8d", 1022 | "\xee\xad\x8e", 1023 | "\xee\xad\x8f", 1024 | "\xee\xad\x96", 1025 | "\xee\xad\x99", 1026 | "\xee\xad\xb0", 1027 | "\xee\x92\xac", 1028 | "\xee\x96\x97", 1029 | "\xee\x93\x82", 1030 | "\xee\x93\x83", 1031 | "\xee\xaa\xae", 1032 | "\xee\xaa\x97", 1033 | "\xee\x93\x81", 1034 | "\xee\xaa\x98", 1035 | "\xee\xac\xbe", 1036 | "\xee\x95\x95", 1037 | "\xee\x95\x8d", 1038 | "\xee\x95\x8c", 1039 | "\xee\x95\x96", 1040 | "\xee\xac\xad", 1041 | "\xee\xac\xae", 1042 | "\xee\xad\xba", 1043 | "\xee\xad\xbb", 1044 | "\xee\x94\xbf", 1045 | "\xee\x95\x80", 1046 | "\xee\x95\x92", 1047 | "\xee\x95\x93", 1048 | "\xee\x94\xae", 1049 | "\xee\x94\xad", 1050 | "\xee\x94\xb0", 1051 | "\xee\x94\xaf", 1052 | "\xee\x95\x85", 1053 | "\xee\x95\x84", 1054 | "\xee\x95\x9a", 1055 | "\xee\x95\x9b", 1056 | "\xee\x95\x83", 1057 | "\xee\x95\x82", 1058 | "\xee\xaa\xad", 1059 | "\xee\x95\x90", 1060 | "\xee\x95\x91", 1061 | "\xee\x92\x82", 1062 | "\xee\xac\xaf", 1063 | "\xee\xac\xb0", 1064 | "\xee\x92\x83", 1065 | "\xee\xac\xb1", 1066 | "[\xe3\x83\x95\xe3\x83\xaa\xe3\x83\xbc\xe3\x83\x80\xe3\x82\xa4\xe3\x83\xa4\xe3\x83\xab]", 1067 | "\xee\x96\x95", 1068 | "\xee\xad\xb5", 1069 | "\xee\x91\xb7", 1070 | "\xee\x91\xb8", 1071 | "\xee\xaa\xa6", 1072 | "\xee\x93\xaa", 1073 | "\xee\xaa\xa7", 1074 | "\xee\xaa\xa8", 1075 | "\xee\xaa\xa9", 1076 | "\xee\xaa\xaa", 1077 | "\xee\xad\x94", 1078 | "\xee\x96\xaf", 1079 | "\xee\xaa\xa5", 1080 | "\xee\x96\xa1", 1081 | "\xee\x96\xa2", 1082 | "\xee\x96\xa3", 1083 | "\xee\x91\xbd", 1084 | "\xee\x91\xbe", 1085 | "\xee\x91\xbf", 1086 | "\xee\xac\xac", 1087 | "\xee\x92\x81", 1088 | "\xee\x92\x84", 1089 | "\xee\xad\xb9", 1090 | "\xee\x92\xae", 1091 | "\xee\xad\xb2", 1092 | "\xee\x97\x98", 1093 | "\xee\x92\xa5", 1094 | "[\xe3\x83\x89\xe3\x82\xa2]", 1095 | "\xee\x95\x81", 1096 | "\xee\x95\x97", 1097 | "\xee\x96\xab", 1098 | "\xee\xaa\x85", 1099 | "\xee\x95\xb8", 1100 | "\xee\xaa\x88", 1101 | "\xee\x96\xb5", 1102 | "[NG]", 1103 | "\xee\x96\xad", 1104 | "\xee\x93\xa8", 1105 | "\xee\x94\x8f", 1106 | "\xee\x97\x92", 1107 | "\xee\xaa\x87", 1108 | "[\xe7\xa6\x81]", 1109 | "\xee\xaa\x8a", 1110 | "[\xe5\x90\x88]", 1111 | "\xee\xaa\x89", 1112 | "\xee\xaa\x86", 1113 | "\xee\xaa\x8b", 1114 | "\xee\xaa\x8c", 1115 | "\xee\x93\xb1", 1116 | "\xee\xaa\x99", 1117 | "\xee\x93\xb7", 1118 | "\xee\xac\x81", 1119 | "\xee\x94\xbc", 1120 | "\xee\x94\xbd", 1121 | "\xee\x95\x8f", 1122 | "\xee\x95\x94", 1123 | "\xee\x91\xb6", 1124 | "\xee\x93\xa5", 1125 | "\xee\x91\xba", 1126 | "\xee\x91\xb5", 1127 | "\xee\x96\xb0", 1128 | "\xee\x96\xb1", 1129 | "\xee\x93\xa6", 1130 | "\xee\x93\xb4", 1131 | "\xee\x93\xb5", 1132 | "\xee\x93\xa9", 1133 | "\xee\xad\x9c", 1134 | "\xee\x93\xbd", 1135 | "\xee\xaa\xab", 1136 | "\xee\x91\xb9", 1137 | "\xee\x94\xbe", 1138 | "\xee\x94\xba", 1139 | "\xee\x94\xbb", 1140 | "\xee\x95\x8a", 1141 | "\xee\x95\x8b", 1142 | "\xee\x95\x88", 1143 | "\xee\x95\x89", 1144 | "\xee\x94\xb1", 1145 | "\xee\x94\xb2", 1146 | "\xee\x94\xb4", 1147 | "\xee\x94\xb5", 1148 | "\xee\x94\xb8", 1149 | "\xee\x94\xb9", 1150 | "\xee\x95\x86", 1151 | "\xee\x95\x87", 1152 | "\xee\x94\xb6", 1153 | "\xee\x94\xb7", 1154 | "\xee\x91\xac", 1155 | "\xee\x93\xb0", 1156 | "\xee\x93\xb2", 1157 | "\xee\x95\x9d", 1158 | "\xee\x95\x9c", 1159 | "\xee\xac\x8d", 1160 | "\xee\x96\x84", 1161 | "\xee\x96\x89", 1162 | "\xee\x94\x98", 1163 | "\xee\xac\x85", 1164 | "\xee\x94\x9c", 1165 | "\xee\xac\x8c", 1166 | "\xee\xab\xbc", 1167 | "\xee\x94\x99", 1168 | "\xee\x94\x92", 1169 | "\xee\xac\x82", 1170 | "\xee\xac\x84", 1171 | "\xee\xac\x87", 1172 | "\xee\x96\x8a", 1173 | "\xee\xac\x86", 1174 | "[end]", 1175 | "[ON]", 1176 | "[SOON]", 1177 | "\xee\x95\x9e", 1178 | "\xee\xae\x83", 1179 | "\xee\x96\xa7", 1180 | "\xee\x96\xa6", 1181 | "\xee\x93\xb3", 1182 | "\xee\x93\xb9", 1183 | "\xee\x93\xb6", 1184 | "\xee\xaa\x8d", 1185 | "\xee\xaa\x8e", 1186 | "\xee\x93\xbf", 1187 | "\xee\x94\x80", 1188 | "\xee\xab\x96", 1189 | "\xee\xab\x93", 1190 | "\xee\xab\x94", 1191 | "\xee\xab\x95", 1192 | "\xee\x81\x8a", 1193 | "\xee\x81\x89", 1194 | "\xee\x81\x8b", 1195 | "\xee\x81\x88", 1196 | "\xee\x84\xbd", 1197 | "\xee\x91\x83", 1198 | "[\xe9\x9c\xa7]", 1199 | "\xee\x90\xbc", 1200 | "\xee\x91\x8b", 1201 | "\xee\x81\x8d", 1202 | "\xee\x91\x89", 1203 | "\xee\x85\x86", 1204 | "\xee\x91\x8a", 1205 | "\xee\x91\x8c", 1206 | "\xee\x81\x8a\xee\x81\x89", 1207 | "\xee\x90\xbe", 1208 | "\xe2\x97\x8f", 1209 | "\xee\x81\x8c", 1210 | "\xee\x8c\xb5", 1211 | "\xee\x80\xa4", 1212 | "\xee\x80\xa5", 1213 | "\xee\x80\xa6", 1214 | "\xee\x80\xa7", 1215 | "\xee\x80\xa8", 1216 | "\xee\x80\xa9", 1217 | "\xee\x80\xaa", 1218 | "\xee\x80\xab", 1219 | "\xee\x80\xac", 1220 | "\xee\x80\xad", 1221 | "\xee\x80\xae", 1222 | "\xee\x80\xaf", 1223 | "[\xe8\x85\x95\xe6\x99\x82\xe8\xa8\x88]", 1224 | "[\xe7\xa0\x82\xe6\x99\x82\xe8\xa8\x88]", 1225 | "\xee\x88\xbf", 1226 | "\xee\x89\x80", 1227 | "\xee\x89\x81", 1228 | "\xee\x89\x82", 1229 | "\xee\x89\x83", 1230 | "\xee\x89\x84", 1231 | "\xee\x89\x85", 1232 | "\xee\x89\x86", 1233 | "\xee\x89\x87", 1234 | "\xee\x89\x88", 1235 | "\xee\x89\x89", 1236 | "\xee\x89\x8a", 1237 | "\xee\x89\x8b", 1238 | "\xee\x84\x90", 1239 | "\xee\x8c\x84", 1240 | "\xee\x84\x98", 1241 | "\xee\x80\xb0", 1242 | "\xee\x80\xb2", 1243 | "\xee\x84\x99", 1244 | "\xee\x91\x87", 1245 | "\xee\x8c\x83", 1246 | "\xee\x8c\x85", 1247 | "\xee\x8c\x87", 1248 | "\xee\x8c\x88", 1249 | "\xee\x91\x84", 1250 | "[\xe3\x81\x95\xe3\x81\x8f\xe3\x82\x89\xe3\x82\x93\xe3\x81\xbc]", 1251 | "[\xe3\x83\x90\xe3\x83\x8a\xe3\x83\x8a]", 1252 | "\xee\x8d\x85", 1253 | "\xee\x8d\x86", 1254 | "\xee\x8d\x87", 1255 | "\xee\x8d\x88", 1256 | "\xee\x8d\x89", 1257 | "\xee\x8d\x8a", 1258 | "\xee\x90\x99", 1259 | "\xee\x90\x9b", 1260 | "\xee\x90\x9a", 1261 | "\xee\x90\x9c", 1262 | "\xee\x90\x89", 1263 | "\xee\x8c\x9c", 1264 | "\xee\x8c\x9d", 1265 | "\xee\x8c\x9e", 1266 | "\xee\x8c\x9f", 1267 | "\xee\x8c\xa0", 1268 | "\xee\x80\x81", 1269 | "\xee\x80\x82", 1270 | "\xee\x80\x84", 1271 | "\xee\x80\x85", 1272 | "\xee\x90\xa8", 1273 | "\xee\x85\x92", 1274 | "\xee\x90\xa9", 1275 | "\xee\x84\x9b", 1276 | "\xee\x81\x8e", 1277 | "\xee\x84\x8c", 1278 | "\xee\x84\xab", 1279 | "\xee\x84\x9a", 1280 | "\xee\x84\x9c", 1281 | "\xee\x89\x93", 1282 | "[\xe3\x82\xab\xe3\x82\xbf\xe3\x83\x84\xe3\x83\xa0\xe3\x83\xaa]", 1283 | "\xee\x84\xb4", 1284 | "\xee\x84\x8a", 1285 | "\xee\x91\x81", 1286 | "\xee\x80\x99", 1287 | "\xee\x81\x95", 1288 | "\xee\x81\x92", 1289 | "\xee\x81\x93", 1290 | "\xee\x81\x90", 1291 | "\xee\x81\x8f", 1292 | "\xee\x81\x94", 1293 | "\xee\x80\x9a", 1294 | "\xee\x84\x89", 1295 | "\xee\x84\x8b", 1296 | "\xee\x81\x91", 1297 | "\xee\x94\xac", 1298 | "\xee\x81\x99", 1299 | "\xee\x90\x83", 1300 | "\xee\x90\x90", 1301 | "\xee\x81\x98", 1302 | "\xee\x90\x86", 1303 | "\xee\x90\x8f", 1304 | "\xee\x90\x8e", 1305 | "\xee\x84\x86", 1306 | "\xee\x90\x84", 1307 | "\xee\x84\x85", 1308 | "\xee\x81\x96", 1309 | "\xee\x90\x98", 1310 | "\xee\x90\x97", 1311 | "\xee\x90\x8c", 1312 | "\xee\x90\x8d", 1313 | "\xee\x81\x97", 1314 | "\xee\x90\x95\xee\x8c\xb1", 1315 | "\xee\x90\x8a", 1316 | "\xee\x90\x92", 1317 | "\xee\x90\x94", 1318 | "\xee\x90\x95", 1319 | "\xee\x90\x93", 1320 | "\xee\x90\x91", 1321 | "\xee\x90\x8b", 1322 | "\xee\x90\x96", 1323 | "\xee\x90\x87", 1324 | "\xee\x84\x87", 1325 | "\xee\x90\x88", 1326 | "\xee\x90\x82", 1327 | "\xee\x84\x88", 1328 | "\xee\x90\x81", 1329 | "\xee\x90\x85", 1330 | "\xee\x90\xa3", 1331 | "\xee\x90\xa4", 1332 | "\xee\x90\xa6", 1333 | "\xee\x80\x92", 1334 | "\xee\x90\xa7", 1335 | "\xee\x90\x9d", 1336 | "\xee\x80\xb6", 1337 | "\xee\x80\xb8", 1338 | "\xee\x85\x93", 1339 | "\xee\x85\x95", 1340 | "\xee\x85\x8d", 1341 | "\xee\x85\x94", 1342 | "\xee\x85\x98", 1343 | "\xee\x85\x96", 1344 | "\xee\x85\x97", 1345 | "\xee\x80\xb7", 1346 | "\xee\x84\xa1", 1347 | "\xee\x88\x82", 1348 | "\xee\x8c\x8b", 1349 | "\xee\x80\xbb", 1350 | "\xee\x80\x87", 1351 | "\xee\x84\xbe", 1352 | "\xee\x8c\x9a", 1353 | "\xee\x8c\x9b", 1354 | "[\xe3\x83\xa1\xe3\x82\xac\xe3\x83\x8d]", 1355 | "\xee\x80\x86", 1356 | "[\xe3\x82\xb8\xe3\x83\xbc\xe3\x83\xb3\xe3\x82\xba]", 1357 | "\xee\x84\x8e", 1358 | "\xee\x8c\x82", 1359 | "\xee\x8c\x98", 1360 | "\xee\x8c\x99", 1361 | "\xee\x8c\xa1", 1362 | "\xee\x8c\xa2", 1363 | "[\xe8\xb2\xa1\xe5\xb8\x83]", 1364 | "\xee\x8c\xa3", 1365 | "\xee\x84\xaf", 1366 | "\xee\x85\x89", 1367 | "\xee\x85\x8a", 1368 | "\xef\xbf\xa5", 1369 | "\xee\x84\x9d", 1370 | "[\xe6\x87\x90\xe4\xb8\xad\xe9\x9b\xbb\xe7\x81\xaf]", 1371 | "[\xe3\x83\xac\xe3\x83\xb3\xe3\x83\x81]", 1372 | "\xee\x84\x96", 1373 | "\xee\x84\x93", 1374 | "\xee\x88\xbe", 1375 | "\xee\x88\x89", 1376 | "\xee\x80\xb1", 1377 | "\xee\x84\xbb", 1378 | "\xee\x8c\x8f", 1379 | "\xee\x8c\x94", 1380 | "\xee\x84\x92", 1381 | "\xee\x8d\x8b", 1382 | "\xee\x80\xb3", 1383 | "\xee\x91\x88", 1384 | "\xee\x85\x83", 1385 | "\xee\x84\x97", 1386 | "\xee\x8c\x90", 1387 | "\xee\x8c\x92", 1388 | "\xee\x90\xb6", 1389 | "\xee\x90\xb8", 1390 | "\xee\x90\xb9", 1391 | "\xee\x90\xba", 1392 | "\xee\x90\xbb", 1393 | "\xee\x91\x80", 1394 | "\xee\x91\x82", 1395 | "\xee\x91\x85", 1396 | "\xee\x91\x86", 1397 | "[\xe3\x83\x9d\xe3\x82\xb1\xe3\x83\x99\xe3\x83\xab]", 1398 | "\xee\x80\x89", 1399 | "\xee\x80\x8a", 1400 | "\xee\x84\x84", 1401 | "\xee\x8c\x81", 1402 | "\xee\x80\x8b", 1403 | "\xee\x84\x83", 1404 | "\xee\x84\x81", 1405 | "\xee\x84\x82", 1406 | "\xee\x85\x82", 1407 | "\xee\x8c\x97", 1408 | "\xee\x85\x8b", 1409 | "[\xe3\x83\x9a\xe3\x83\xb3]", 1410 | "\xee\x84\x9f", 1411 | "\xee\x80\x8c", 1412 | "[\xe3\x82\xaf\xe3\x83\xaa\xe3\x83\x83\xe3\x83\x97]", 1413 | "\xee\x84\x9e", 1414 | "\xee\x8c\x96", 1415 | "\xee\x84\xa6", 1416 | "\xee\x84\xa7", 1417 | "\xee\x8c\x93", 1418 | "\xee\x85\x88", 1419 | "[\xe3\x82\xb9\xe3\x82\xaf\xe3\x83\xad\xe3\x83\xbc\xe3\x83\xab]", 1420 | "\xee\x80\x96", 1421 | "\xee\x80\x94", 1422 | "\xee\x80\x95", 1423 | "\xee\x80\x98", 1424 | "\xee\x80\x93", 1425 | "\xee\x90\xaa", 1426 | "\xee\x84\xb2", 1427 | "[\xe3\x82\xb9\xe3\x83\x8e\xe3\x83\x9c]", 1428 | "\xee\x84\x95", 1429 | "\xee\x80\x97", 1430 | "\xee\x84\xb1", 1431 | "\xee\x90\xab", 1432 | "\xee\x90\xad", 1433 | "\xee\x80\x9e", 1434 | "\xee\x90\xb4", 1435 | "\xee\x90\xb5", 1436 | "\xee\x80\x9f", 1437 | "\xee\x80\x9b", 1438 | "\xee\x90\xae", 1439 | "\xee\x85\x99", 1440 | "\xee\x85\x90", 1441 | "\xee\x80\x9d", 1442 | "\xee\x80\x9c", 1443 | "\xee\x80\xb9", 1444 | "\xee\x84\x8d", 1445 | "\xee\x84\xb5", 1446 | "\xee\x85\x9a", 1447 | "\xee\x90\xaf", 1448 | "\xee\x90\xb0", 1449 | "\xee\x90\xb1", 1450 | "\xee\x90\xb2", 1451 | "\xee\x80\xba", 1452 | "\xee\x85\x8f", 1453 | "\xee\x85\x8e", 1454 | "\xee\x84\xb7", 1455 | "\xee\x84\xa3", 1456 | "\xee\x84\xa2", 1457 | "\xee\x84\xa4", 1458 | "\xee\x90\xb3", 1459 | "\xee\x80\xbc", 1460 | "\xee\x80\xbd", 1461 | "\xee\x8c\x8a", 1462 | "[\xe3\x82\xa4\xe3\x83\x99\xe3\x83\xb3\xe3\x83\x88]", 1463 | "\xee\x84\xa5", 1464 | "\xee\x8c\xa4", 1465 | "[\xe3\x82\xb2\xe3\x83\xbc\xe3\x83\xa0]", 1466 | "\xee\x84\xad", 1467 | "\xee\x84\xb0", 1468 | "\xee\x84\xb3", 1469 | "\xee\x90\xac", 1470 | "\xee\x80\xbe", 1471 | "\xee\x8c\xa6", 1472 | "\xee\x81\x80", 1473 | "\xee\x81\x81", 1474 | "\xee\x81\x82", 1475 | "\xee\x84\xac", 1476 | "\xee\x80\x88", 1477 | "\xee\x84\xaa", 1478 | "\xee\x84\xa8", 1479 | "\xee\x84\xa9", 1480 | "\xee\x80\x83", 1481 | "\xee\x84\x83\xee\x8c\xa8", 1482 | "\xee\x80\xb4", 1483 | "\xee\x80\xb5", 1484 | "\xee\x84\x91", 1485 | "\xee\x8c\x86", 1486 | "\xee\x90\xa5", 1487 | "\xee\x90\xbd", 1488 | "\xee\x88\x87", 1489 | "\xee\x89\x8e", 1490 | "\xee\x89\x8f", 1491 | "\xee\x88\x90", 1492 | "\xee\x88\x9c", 1493 | "\xee\x88\x9d", 1494 | "\xee\x88\x9e", 1495 | "\xee\x88\x9f", 1496 | "\xee\x88\xa0", 1497 | "\xee\x88\xa1", 1498 | "\xee\x88\xa2", 1499 | "\xee\x88\xa3", 1500 | "\xee\x88\xa4", 1501 | "\xee\x88\xa5", 1502 | "\xee\x88\x8b", 1503 | "\xee\x89\x90", 1504 | "\xee\x89\x91", 1505 | "\xee\x84\xa0", 1506 | "\xee\x8d\x82", 1507 | "\xee\x81\x86", 1508 | "\xee\x8d\x80", 1509 | "\xee\x8c\xb9", 1510 | "\xee\x85\x87", 1511 | "\xee\x8c\xba", 1512 | "\xee\x8c\xbb", 1513 | "\xee\x8c\xbc", 1514 | "\xee\x8c\xbd", 1515 | "\xee\x8c\xbe", 1516 | "\xee\x8c\xbf", 1517 | "\xee\x8d\x81", 1518 | "\xee\x8d\x83", 1519 | "\xee\x8d\x84", 1520 | "\xee\x8d\x8c", 1521 | "\xee\x8d\x8d", 1522 | "\xee\x90\xbf", 1523 | "[\xe3\x81\xaa\xe3\x82\x8b\xe3\x81\xa8]", 1524 | "\xee\x81\x83", 1525 | "\xee\x81\x85", 1526 | "\xee\x81\x84", 1527 | "\xee\x81\x87", 1528 | "\xee\x8c\xb8", 1529 | "\xee\x8c\x8c", 1530 | "\xee\x88\xb6", 1531 | "\xee\x88\xb8", 1532 | "\xee\x88\xb7", 1533 | "\xee\x88\xb9", 1534 | "\xe2\x87\x94", 1535 | "\xe2\x86\x91\xe2\x86\x93", 1536 | "\xee\x88\xb2", 1537 | "\xee\x88\xb3", 1538 | "\xee\x88\xb4", 1539 | "\xee\x88\xb5", 1540 | "\xee\x88\xba", 1541 | "\xee\x88\xbb", 1542 | "\xee\x88\xbc", 1543 | "\xee\x88\xbd", 1544 | "\xee\x8c\xb2", 1545 | "\xee\x8c\xb3", 1546 | "\xee\x80\xa1", 1547 | "\xef\xbc\x81\xef\xbc\x9f", 1548 | "\xef\xbc\x81\xef\xbc\x81", 1549 | "\xee\x80\xa0", 1550 | "\xee\x8c\xb6", 1551 | "\xee\x8c\xb7", 1552 | "\xef\xbd\x9e", 1553 | "\xee\x88\x91", 1554 | "\xee\x80\xa2", 1555 | "\xee\x8c\xa7", 1556 | "\xee\x80\xa3", 1557 | "\xee\x8c\xa8", 1558 | "\xee\x8c\xa9", 1559 | "\xee\x8c\xaa", 1560 | "\xee\x8c\xab", 1561 | "\xee\x8c\xac", 1562 | "\xee\x8c\xad", 1563 | "\xee\x90\xb7", 1564 | "\xee\x88\x84", 1565 | "\xee\x88\x8c", 1566 | "\xee\x88\x8e", 1567 | "\xee\x88\x8d", 1568 | "\xee\x88\x8f", 1569 | "\xee\x8c\x8e", 1570 | "\xee\x88\x88", 1571 | "\xee\x88\x8a", 1572 | "[\xe6\x97\x97]", 1573 | "\xee\x89\x92", 1574 | "\xee\x84\xb6", 1575 | "\xee\x88\x81", 1576 | "\xee\x84\xb8", 1577 | "\xee\x84\xb9", 1578 | "\xee\x84\xbf", 1579 | "\xee\x85\x91", 1580 | "\xee\x85\x80", 1581 | "\xee\x8c\x89", 1582 | "\xee\x84\xba", 1583 | "[\xe7\xa6\x81\xe6\xad\xa2]", 1584 | "[CL]", 1585 | "\xee\x88\x94", 1586 | "[FREE]", 1587 | "\xee\x88\xa9", 1588 | "\xee\x88\x92", 1589 | "\xee\x89\x8d", 1590 | "\xee\x88\x93", 1591 | "\xee\x84\xae", 1592 | "\xee\x88\x83", 1593 | "\xee\x88\xa8", 1594 | "\xee\x88\xab", 1595 | "\xee\x88\xaa", 1596 | "\xee\x88\x95", 1597 | "\xee\x88\x96", 1598 | "\xee\x88\x97", 1599 | "\xee\x88\x98", 1600 | "\xee\x88\xa7", 1601 | "\xee\x88\xac", 1602 | "\xee\x88\xad", 1603 | "\xee\x8c\x95", 1604 | "\xee\x8c\x8d", 1605 | "\xee\x88\xa6", 1606 | "\xee\x84\x8f", 1607 | "\xee\x8c\xb4", 1608 | "\xee\x8c\x91", 1609 | "\xee\x84\xbc", 1610 | "[\xe3\x83\x89\xe3\x83\xb3\xe3\x83\x83]", 1611 | "\xee\x8c\xb1", 1612 | "\xee\x8c\xb0", 1613 | "\xee\x81\x9a", 1614 | "\xee\x85\x8c", 1615 | "\xee\x8c\xae", 1616 | "\xee\x88\x85", 1617 | "\xee\x88\x86", 1618 | "\xee\x88\x99", 1619 | "\xee\x88\x9a", 1620 | "\xee\x88\x9b", 1621 | "\xee\x8c\xaf", 1622 | "\xe2\x86\x90\xe2\x94\x98", 1623 | "\xee\x85\x81", 1624 | "\xee\x84\x94", 1625 | "\xee\x85\x84", 1626 | "\xee\x85\x85", 1627 | "\xee\x80\xbf", 1628 | "\xee\x8c\xa5", 1629 | "\xee\x89\x8c", 1630 | "\xee\x80\x90", 1631 | "\xee\x80\x91", 1632 | "\xee\x80\x8d", 1633 | "\xee\x80\x8e", 1634 | "\xee\x80\x8f", 1635 | "\xee\x88\xae", 1636 | "\xee\x88\xaf", 1637 | "\xee\x88\xb0", 1638 | "\xee\x88\xb1", 1639 | "\xee\x90\x9e", 1640 | "\xee\x90\x9f", 1641 | "\xee\x90\xa0", 1642 | "\xee\x90\xa1", 1643 | "\xee\x90\xa2", 1644 | "\xf3\xbe\x80\x80", 1645 | "\xf3\xbe\x80\x81", 1646 | "\xf3\xbe\x80\x82", 1647 | "\xf3\xbe\x80\x83", 1648 | "\xf3\xbe\x80\x84", 1649 | "\xf3\xbe\x80\x85", 1650 | "\xf3\xbe\x80\x86", 1651 | "\xf3\xbe\x80\x87", 1652 | "\xf3\xbe\x80\x88", 1653 | "\xf3\xbe\x80\x89", 1654 | "\xf3\xbe\x80\x8a", 1655 | "\xf3\xbe\x80\x8b", 1656 | "\xf3\xbe\x80\x8c", 1657 | "\xf3\xbe\x80\x8d", 1658 | "\xf3\xbe\x80\x8e", 1659 | "\xf3\xbe\x80\x8f", 1660 | "\xf3\xbe\x80\x90", 1661 | "\xf3\xbe\x80\xb8", 1662 | "\xf3\xbe\x80\xba", 1663 | "\xf3\xbe\x80\xbb", 1664 | "\xf3\xbe\x80\xb9", 1665 | "\xf3\xbe\x80\x91", 1666 | "\xf3\xbe\x80\x92", 1667 | "\xf3\xbe\x80\x93", 1668 | "\xf3\xbe\x80\x94", 1669 | "\xf3\xbe\x80\x95", 1670 | "\xf3\xbe\x80\x96", 1671 | "\xf3\xbe\xad\xa9", 1672 | "\xf3\xbe\xad\xaa", 1673 | "\xf3\xbe\x80\x9e", 1674 | "\xf3\xbe\x80\x9f", 1675 | "\xf3\xbe\x80\xa0", 1676 | "\xf3\xbe\x80\xa1", 1677 | "\xf3\xbe\x80\xa2", 1678 | "\xf3\xbe\x80\xa3", 1679 | "\xf3\xbe\x80\xa4", 1680 | "\xf3\xbe\x80\xa5", 1681 | "\xf3\xbe\x80\xa6", 1682 | "\xf3\xbe\x80\xa7", 1683 | "\xf3\xbe\x80\xa8", 1684 | "\xf3\xbe\x80\xa9", 1685 | "\xf3\xbe\x80\x9d", 1686 | "\xf3\xbe\x80\x9c", 1687 | "\xf3\xbe\x80\xaa", 1688 | "\xf3\xbe\x80\x9b", 1689 | "\xf3\xbe\x80\xab", 1690 | "\xf3\xbe\x80\xac", 1691 | "\xf3\xbe\x80\xad", 1692 | "\xf3\xbe\x80\xae", 1693 | "\xf3\xbe\x80\xaf", 1694 | "\xf3\xbe\x80\xb0", 1695 | "\xf3\xbe\x80\xb1", 1696 | "\xf3\xbe\x80\xb2", 1697 | "\xf3\xbe\x80\xb3", 1698 | "\xf3\xbe\x80\xb4", 1699 | "\xf3\xbe\x80\xb5", 1700 | "\xf3\xbe\x80\xb6", 1701 | "\xf3\xbe\x80\xb7", 1702 | "\xf3\xbe\x80\xbc", 1703 | "\xf3\xbe\x80\xbd", 1704 | "\xf3\xbe\x80\xbe", 1705 | "\xf3\xbe\x80\xbf", 1706 | "\xf3\xbe\x81\x80", 1707 | "\xf3\xbe\x81\x81", 1708 | "\xf3\xbe\x81\x82", 1709 | "\xf3\xbe\x81\x83", 1710 | "\xf3\xbe\x81\x85", 1711 | "\xf3\xbe\x81\x86", 1712 | "\xf3\xbe\x81\x87", 1713 | "\xf3\xbe\x81\x88", 1714 | "\xf3\xbe\x81\x89", 1715 | "\xf3\xbe\x81\x8a", 1716 | "\xf3\xbe\x81\x8b", 1717 | "\xf3\xbe\x81\x8c", 1718 | "\xf3\xbe\x81\x8d", 1719 | "\xf3\xbe\x81\x8e", 1720 | "\xf3\xbe\x81\x8f", 1721 | "\xf3\xbe\x81\x90", 1722 | "\xf3\xbe\x81\x91", 1723 | "\xf3\xbe\x81\x92", 1724 | "\xf3\xbe\x81\x93", 1725 | "\xf3\xbe\x81\x94", 1726 | "\xf3\xbe\x81\x95", 1727 | "\xf3\xbe\x81\x96", 1728 | "\xf3\xbe\x81\x97", 1729 | "\xf3\xbe\x81\x98", 1730 | "\xf3\xbe\x81\x99", 1731 | "\xf3\xbe\x81\x9a", 1732 | "\xf3\xbe\x81\x9b", 1733 | "\xf3\xbe\x86\x90", 1734 | "\xf3\xbe\x86\x91", 1735 | "\xf3\xbe\x86\x92", 1736 | "\xf3\xbe\x86\x93", 1737 | "\xf3\xbe\x86\x94", 1738 | "\xf3\xbe\x86\x95", 1739 | "\xf3\xbe\x86\x96", 1740 | "\xf3\xbe\x86\x97", 1741 | "\xf3\xbe\x86\x98", 1742 | "\xf3\xbe\x86\x99", 1743 | "\xf3\xbe\x86\x9a", 1744 | "\xf3\xbe\x86\x9b", 1745 | "\xf3\xbe\x86\x9c", 1746 | "\xf3\xbe\x86\x9d", 1747 | "\xf3\xbe\x86\x9e", 1748 | "\xf3\xbe\x86\x9f", 1749 | "\xf3\xbe\x86\xa0", 1750 | "\xf3\xbe\x86\xa1", 1751 | "\xf3\xbe\x86\xa2", 1752 | "\xf3\xbe\x86\xa3", 1753 | "\xf3\xbe\x86\xa4", 1754 | "\xf3\xbe\x86\xa5", 1755 | "\xf3\xbe\x86\xa6", 1756 | "\xf3\xbe\x86\xa7", 1757 | "\xf3\xbe\x86\xa8", 1758 | "\xf3\xbe\x86\xa9", 1759 | "\xf3\xbe\x86\xaa", 1760 | "\xf3\xbe\x86\xab", 1761 | "\xf3\xbe\x86\xac", 1762 | "\xf3\xbe\x86\xad", 1763 | "\xf3\xbe\x86\xae", 1764 | "\xf3\xbe\x86\xaf", 1765 | "\xf3\xbe\x86\xb0", 1766 | "\xf3\xbe\x86\xb1", 1767 | "\xf3\xbe\x86\xb2", 1768 | "\xf3\xbe\x86\xb3", 1769 | "\xf3\xbe\x86\xb4", 1770 | "\xf3\xbe\x86\xb5", 1771 | "\xf3\xbe\x86\xb6", 1772 | "\xf3\xbe\x86\xb9", 1773 | "\xf3\xbe\x87\x93", 1774 | "\xf3\xbe\x9f\x9c", 1775 | "\xf3\xbe\x87\x94", 1776 | "\xf3\xbe\x87\x95", 1777 | "\xf3\xbe\x87\x96", 1778 | "\xf3\xbe\x87\x8c", 1779 | "\xf3\xbe\x87\x8d", 1780 | "\xf3\xbe\x87\x8e", 1781 | "\xf3\xbe\x87\x8f", 1782 | "\xf3\xbe\x87\x85", 1783 | "\xf3\xbe\x87\x86", 1784 | "\xf3\xbe\x87\x8b", 1785 | "\xf3\xbe\x87\x9a", 1786 | "\xf3\xbe\x87\xa1", 1787 | "\xf3\xbe\x87\xa2", 1788 | "\xf3\xbe\x87\x89", 1789 | "\xf3\xbe\x87\x99", 1790 | "\xf3\xbe\x87\x9c", 1791 | "\xf3\xbe\x86\xba", 1792 | "\xf3\xbe\x86\xbb", 1793 | "\xf3\xbe\x87\x88", 1794 | "\xf3\xbe\x87\x9d", 1795 | "\xf3\xbe\x86\xbc", 1796 | "\xf3\xbe\x87\x98", 1797 | "\xf3\xbe\x86\xbd", 1798 | "\xf3\xbe\x87\x87", 1799 | "\xf3\xbe\x87\x82", 1800 | "\xf3\xbe\x87\x80", 1801 | "\xf3\xbe\x86\xb8", 1802 | "\xf3\xbe\x87\x83", 1803 | "\xf3\xbe\x86\xbe", 1804 | "\xf3\xbe\x87\x84", 1805 | "\xf3\xbe\x86\xb7", 1806 | "\xf3\xbe\x86\xbf", 1807 | "\xf3\xbe\x87\x81", 1808 | "\xf3\xbe\x87\x8a", 1809 | "\xf3\xbe\x87\x90", 1810 | "\xf3\xbe\x87\x91", 1811 | "\xf3\xbe\x87\x92", 1812 | "\xf3\xbe\x87\x97", 1813 | "\xf3\xbe\x87\x9b", 1814 | "\xf3\xbe\x87\x9e", 1815 | "\xf3\xbe\x87\x9f", 1816 | "\xf3\xbe\x87\xa0", 1817 | "\xf3\xbe\x8c\xa0", 1818 | "\xf3\xbe\x8c\xa1", 1819 | "\xf3\xbe\x8c\xa2", 1820 | "\xf3\xbe\x8c\xa3", 1821 | "\xf3\xbe\x8c\xa4", 1822 | "\xf3\xbe\x8c\xa5", 1823 | "\xf3\xbe\x8c\xa6", 1824 | "\xf3\xbe\x8c\xa7", 1825 | "\xf3\xbe\x8c\xa8", 1826 | "\xf3\xbe\x8c\xa9", 1827 | "\xf3\xbe\x8c\xaa", 1828 | "\xf3\xbe\x8c\xab", 1829 | "\xf3\xbe\x8c\xac", 1830 | "\xf3\xbe\x8c\xad", 1831 | "\xf3\xbe\x8c\xae", 1832 | "\xf3\xbe\x8c\xaf", 1833 | "\xf3\xbe\x8c\xb0", 1834 | "\xf3\xbe\x8c\xb1", 1835 | "\xf3\xbe\x8c\xb2", 1836 | "\xf3\xbe\x8c\xb3", 1837 | "\xf3\xbe\x8c\xb4", 1838 | "\xf3\xbe\x8c\xb5", 1839 | "\xf3\xbe\x8c\xb6", 1840 | "\xf3\xbe\x8c\xb8", 1841 | "\xf3\xbe\x8c\xb9", 1842 | "\xf3\xbe\x8c\xba", 1843 | "\xf3\xbe\x8c\xbb", 1844 | "\xf3\xbe\x8c\xbc", 1845 | "\xf3\xbe\x8c\xbd", 1846 | "\xf3\xbe\x8c\xbe", 1847 | "\xf3\xbe\x8c\xbf", 1848 | "\xf3\xbe\x8d\x80", 1849 | "\xf3\xbe\x8d\x81", 1850 | "\xf3\xbe\x8d\x82", 1851 | "\xf3\xbe\x8d\x83", 1852 | "\xf3\xbe\x8d\x84", 1853 | "\xf3\xbe\x8d\x85", 1854 | "\xf3\xbe\x8d\x86", 1855 | "\xf3\xbe\x8d\x87", 1856 | "\xf3\xbe\x8d\x88", 1857 | "\xf3\xbe\x8d\x89", 1858 | "\xf3\xbe\x8d\x8a", 1859 | "\xf3\xbe\x8d\x8b", 1860 | "\xf3\xbe\x8d\x8c", 1861 | "\xf3\xbe\x8d\x8d", 1862 | "\xf3\xbe\x8d\x8e", 1863 | "\xf3\xbe\x8d\x8f", 1864 | "\xf3\xbe\x8d\x90", 1865 | "\xf3\xbe\x8d\x91", 1866 | "\xf3\xbe\x8d\x92", 1867 | "\xf3\xbe\x8d\x93", 1868 | "\xf3\xbe\x8d\x94", 1869 | "\xf3\xbe\x8d\x95", 1870 | "\xf3\xbe\x8d\x96", 1871 | "\xf3\xbe\x8d\x97", 1872 | "\xf3\xbe\x8d\x98", 1873 | "\xf3\xbe\x8d\x99", 1874 | "\xf3\xbe\x8d\x9a", 1875 | "\xf3\xbe\x8d\x9b", 1876 | "\xf3\xbe\x92\xb0", 1877 | "\xf3\xbe\x92\xb1", 1878 | "\xf3\xbe\x92\xb2", 1879 | "\xf3\xbe\x92\xb3", 1880 | "\xf3\xbe\x92\xb4", 1881 | "\xf3\xbe\x92\xb5", 1882 | "\xf3\xbe\x92\xb6", 1883 | "\xf3\xbe\x92\xb7", 1884 | "\xf3\xbe\x92\xb8", 1885 | "\xf3\xbe\x92\xb9", 1886 | "\xf3\xbe\x92\xba", 1887 | "\xf3\xbe\x92\xbb", 1888 | "\xf3\xbe\x92\xbc", 1889 | "\xf3\xbe\x92\xbd", 1890 | "\xf3\xbe\x92\xbe", 1891 | "\xf3\xbe\x92\xbf", 1892 | "\xf3\xbe\x93\x80", 1893 | "\xf3\xbe\x93\x81", 1894 | "\xf3\xbe\x93\x82", 1895 | "\xf3\xbe\x93\x83", 1896 | "\xf3\xbe\x93\x84", 1897 | "\xf3\xbe\x93\x86", 1898 | "\xf3\xbe\x93\x87", 1899 | "\xf3\xbe\x93\x88", 1900 | "\xf3\xbe\x93\x8c", 1901 | "\xf3\xbe\x93\x8d", 1902 | "\xf3\xbe\x93\x96", 1903 | "\xf3\xbe\x93\x97", 1904 | "\xf3\xbe\x93\x98", 1905 | "\xf3\xbe\x95\x93", 1906 | "\xf3\xbe\x93\x8e", 1907 | "\xf3\xbe\x93\x8f", 1908 | "\xf3\xbe\x93\x90", 1909 | "\xf3\xbe\x93\x91", 1910 | "\xf3\xbe\x93\x93", 1911 | "\xf3\xbe\x93\x94", 1912 | "\xf3\xbe\x93\x95", 1913 | "\xf3\xbe\x93\x99", 1914 | "\xf3\xbe\x93\x9a", 1915 | "\xf3\xbe\x93\x9b", 1916 | "\xf3\xbe\x93\x9c", 1917 | "\xf3\xbe\x93\xb0", 1918 | "\xf3\xbe\x93\xb1", 1919 | "\xf3\xbe\x93\x9d", 1920 | "\xf3\xbe\x93\x9e", 1921 | "\xf3\xbe\x93\x9f", 1922 | "\xf3\xbe\x93\xa0", 1923 | "\xf3\xbe\x93\xa1", 1924 | "\xf3\xbe\x93\xa2", 1925 | "\xf3\xbe\x93\xa3", 1926 | "\xf3\xbe\x93\xa4", 1927 | "\xf3\xbe\x93\xad", 1928 | "\xf3\xbe\x93\xa8", 1929 | "\xf3\xbe\x93\xab", 1930 | "\xf3\xbe\x93\xa7", 1931 | "\xf3\xbe\x93\xaa", 1932 | "\xf3\xbe\x93\xa9", 1933 | "\xf3\xbe\x93\xa5", 1934 | "\xf3\xbe\x93\xae", 1935 | "\xf3\xbe\x93\xac", 1936 | "\xf3\xbe\x93\xa6", 1937 | "\xf3\xbe\x93\xb6", 1938 | "\xf3\xbe\x93\xbb", 1939 | "\xf3\xbe\x93\x89", 1940 | "\xf3\xbe\x93\x8a", 1941 | "\xf3\xbe\x93\x8b", 1942 | "\xf3\xbe\x93\xba", 1943 | "\xf3\xbe\x93\xb5", 1944 | "\xf3\xbe\x93\xb7", 1945 | "\xf3\xbe\x93\xb8", 1946 | "\xf3\xbe\x81\x84", 1947 | "\xf3\xbe\x93\x92", 1948 | "\xf3\xbe\x94\x89", 1949 | "\xf3\xbe\x94\x8a", 1950 | "\xf3\xbe\x94\x8b", 1951 | "\xf3\xbe\x94\x8c", 1952 | "\xf3\xbe\x94\x8d", 1953 | "\xf3\xbe\x94\x8e", 1954 | "\xf3\xbe\x94\x8f", 1955 | "\xf3\xbe\x94\x90", 1956 | "\xf3\xbe\x94\x91", 1957 | "\xf3\xbe\x94\x92", 1958 | "\xf3\xbe\x94\x93", 1959 | "\xf3\xbe\x94\x94", 1960 | "\xf3\xbe\x94\x95", 1961 | "\xf3\xbe\x94\x96", 1962 | "\xf3\xbe\x94\x97", 1963 | "\xf3\xbe\x94\x98", 1964 | "\xf3\xbe\x94\x99", 1965 | "\xf3\xbe\x94\x9a", 1966 | "\xf3\xbe\x94\x9b", 1967 | "\xf3\xbe\x94\x9c", 1968 | "\xf3\xbe\x94\x9d", 1969 | "\xf3\xbe\x94\x9e", 1970 | "\xf3\xbe\x94\x9f", 1971 | "\xf3\xbe\x94\xa0", 1972 | "\xf3\xbe\x94\xa1", 1973 | "\xf3\xbe\x80\x97", 1974 | "\xf3\xbe\x94\xa2", 1975 | "\xf3\xbe\x94\xa3", 1976 | "\xf3\xbe\x94\xa4", 1977 | "\xf3\xbe\x94\xa5", 1978 | "\xf3\xbe\x94\xa6", 1979 | "\xf3\xbe\x94\xa7", 1980 | "\xf3\xbe\x94\xa8", 1981 | "\xf3\xbe\x94\xa9", 1982 | "\xf3\xbe\x94\xaa", 1983 | "\xf3\xbe\x94\xab", 1984 | "\xf3\xbe\x94\xac", 1985 | "\xf3\xbe\x94\xad", 1986 | "\xf3\xbe\x94\xae", 1987 | "\xf3\xbe\xa0\xa2", 1988 | "\xf3\xbe\x94\xaf", 1989 | "\xf3\xbe\x94\xb0", 1990 | "\xf3\xbe\x94\xb1", 1991 | "\xf3\xbe\x94\xb3", 1992 | "\xf3\xbe\x94\xb4", 1993 | "\xf3\xbe\x94\xb5", 1994 | "\xf3\xbe\xae\x92", 1995 | "\xf3\xbe\xad\xbc", 1996 | "\xf3\xbe\xad\xbd", 1997 | "\xf3\xbe\xad\xbe", 1998 | "\xf3\xbe\xad\xbf", 1999 | "\xf3\xbe\xae\x80", 2000 | "\xf3\xbe\x94\xb6", 2001 | "\xf3\xbe\x94\xb7", 2002 | "\xf3\xbe\x94\xb8", 2003 | "\xf3\xbe\x94\xb9", 2004 | "\xf3\xbe\x94\xba", 2005 | "\xf3\xbe\x94\xbb", 2006 | "\xf3\xbe\x94\xbc", 2007 | "\xf3\xbe\x94\xbd", 2008 | "\xf3\xbe\xa0\x9d", 2009 | "\xf3\xbe\xa0\x9e", 2010 | "\xf3\xbe\x94\xbe", 2011 | "\xf3\xbe\x94\xbf", 2012 | "\xf3\xbe\x95\x80", 2013 | "\xf3\xbe\x95\x81", 2014 | "\xf3\xbe\x95\x82", 2015 | "\xf3\xbe\x95\x83", 2016 | "\xf3\xbe\x95\x84", 2017 | "\xf3\xbe\x95\x85", 2018 | "\xf3\xbe\x95\x86", 2019 | "\xf3\xbe\x95\x87", 2020 | "\xf3\xbe\x94\x82", 2021 | "\xf3\xbe\x93\xbf", 2022 | "\xf3\xbe\x94\x80", 2023 | "\xf3\xbe\x94\x81", 2024 | "\xf3\xbe\x94\x83", 2025 | "\xf3\xbe\x94\x84", 2026 | "\xf3\xbe\x93\xbd", 2027 | "\xf3\xbe\x95\x88", 2028 | "\xf3\xbe\x95\x89", 2029 | "\xf3\xbe\x95\x8a", 2030 | "\xf3\xbe\x95\x8b", 2031 | "\xf3\xbe\x95\x8c", 2032 | "\xf3\xbe\x95\x8d", 2033 | "\xf3\xbe\x95\x8e", 2034 | "\xf3\xbe\x95\x8f", 2035 | "\xf3\xbe\x95\x90", 2036 | "\xf3\xbe\x95\x91", 2037 | "\xf3\xbe\x95\x92", 2038 | "\xf3\xbe\x9f\x90", 2039 | "\xf3\xbe\x9f\x91", 2040 | "\xf3\xbe\x9f\x92", 2041 | "\xf3\xbe\x9f\x93", 2042 | "\xf3\xbe\x9f\x94", 2043 | "\xf3\xbe\x9f\x95", 2044 | "\xf3\xbe\x9f\x96", 2045 | "\xf3\xbe\x9f\x97", 2046 | "\xf3\xbe\x9f\x98", 2047 | "\xf3\xbe\x9f\x99", 2048 | "\xf3\xbe\x9f\x9a", 2049 | "\xf3\xbe\x9f\x9b", 2050 | "\xf3\xbe\x9f\x9d", 2051 | "\xf3\xbe\x9f\x9e", 2052 | "\xf3\xbe\x9f\x9f", 2053 | "\xf3\xbe\x9f\xa0", 2054 | "\xf3\xbe\x9f\xa1", 2055 | "\xf3\xbe\x9f\xa2", 2056 | "\xf3\xbe\x9f\xa3", 2057 | "\xf3\xbe\x9f\xa4", 2058 | "\xf3\xbe\x9f\xa5", 2059 | "\xf3\xbe\x9f\xa6", 2060 | "\xf3\xbe\x9f\xa7", 2061 | "\xf3\xbe\x9f\xa8", 2062 | "\xf3\xbe\x9f\xa9", 2063 | "\xf3\xbe\x9f\xaa", 2064 | "\xf3\xbe\x9f\xac", 2065 | "\xf3\xbe\x9f\xad", 2066 | "\xf3\xbe\x9f\xae", 2067 | "\xf3\xbe\x9f\xaf", 2068 | "\xf3\xbe\x9f\xb1", 2069 | "\xf3\xbe\x9f\xb2", 2070 | "\xf3\xbe\x9f\xb3", 2071 | "\xf3\xbe\x9f\xb4", 2072 | "\xf3\xbe\x9f\xb5", 2073 | "\xf3\xbe\x9f\xb6", 2074 | "\xf3\xbe\x9f\xb7", 2075 | "\xf3\xbe\x9f\xb8", 2076 | "\xf3\xbe\x9f\xb9", 2077 | "\xf3\xbe\x9f\xba", 2078 | "\xf3\xbe\x9f\xbb", 2079 | "\xf3\xbe\x9f\xbc", 2080 | "\xf3\xbe\x9f\xbd", 2081 | "\xf3\xbe\x9f\xbe", 2082 | "\xf3\xbe\x9f\xbf", 2083 | "\xf3\xbe\xa0\x80", 2084 | "\xf3\xbe\xa0\x81", 2085 | "\xf3\xbe\xa0\x82", 2086 | "\xf3\xbe\xa0\x83", 2087 | "\xf3\xbe\xa0\x84", 2088 | "\xf3\xbe\xa0\x85", 2089 | "\xf3\xbe\xa0\x86", 2090 | "\xf3\xbe\xa0\x87", 2091 | "\xf3\xbe\xa0\x88", 2092 | "\xf3\xbe\xa0\x89", 2093 | "\xf3\xbe\xa0\x8a", 2094 | "\xf3\xbe\xa0\x8b", 2095 | "\xf3\xbe\xa0\x8c", 2096 | "\xf3\xbe\xa0\x8d", 2097 | "\xf3\xbe\xa0\x8e", 2098 | "\xf3\xbe\xa0\x8f", 2099 | "\xf3\xbe\xa0\x90", 2100 | "\xf3\xbe\xa0\x91", 2101 | "\xf3\xbe\xa0\x92", 2102 | "\xf3\xbe\xa0\x93", 2103 | "\xf3\xbe\xa0\x94", 2104 | "\xf3\xbe\xa0\x95", 2105 | "\xf3\xbe\xa0\x96", 2106 | "\xf3\xbe\xa0\x97", 2107 | "\xf3\xbe\xa0\x98", 2108 | "\xf3\xbe\xa0\x99", 2109 | "\xf3\xbe\xa0\x9a", 2110 | "\xf3\xbe\xa0\x9b", 2111 | "\xf3\xbe\x93\xaf", 2112 | "\xf3\xbe\x93\xb9", 2113 | "\xf3\xbe\xa0\x9c", 2114 | "\xf3\xbe\xa0\x9f", 2115 | "\xf3\xbe\xa0\xa0", 2116 | "\xf3\xbe\xa0\xa3", 2117 | "\xf3\xbe\xa0\xa4", 2118 | "\xf3\xbe\xa0\xa5", 2119 | "\xf3\xbe\xa0\xa6", 2120 | "\xf3\xbe\xa0\xa7", 2121 | "\xf3\xbe\xa0\xa8", 2122 | "\xf3\xbe\xa0\xa9", 2123 | "\xf3\xbe\xa0\xaa", 2124 | "\xf3\xbe\xac\xa5", 2125 | "\xf3\xbe\xac\xa9", 2126 | "\xf3\xbe\xac\xad", 2127 | "\xf3\xbe\xac\xaa", 2128 | "\xf3\xbe\xad\x87", 2129 | "\xf3\xbe\xa0\xac", 2130 | "\xf3\xbe\xa0\xae", 2131 | "\xf3\xbe\xa0\xaf", 2132 | "\xf3\xbe\xa0\xb0", 2133 | "\xf3\xbe\xa0\xb1", 2134 | "\xf3\xbe\xa0\xb2", 2135 | "\xf3\xbe\xa0\xb3", 2136 | "\xf3\xbe\xa0\xb4", 2137 | "\xf3\xbe\xa0\xb5", 2138 | "\xf3\xbe\xa0\xb6", 2139 | "\xf3\xbe\xa0\xb7", 2140 | "\xf3\xbe\xa0\xbb", 2141 | "\xf3\xbe\xa0\xb8", 2142 | "\xf3\xbe\xa0\xb9", 2143 | "\xf3\xbe\xa0\xba", 2144 | "\xf3\xbe\xa5\xa0", 2145 | "\xf3\xbe\xa5\xa1", 2146 | "\xf3\xbe\xa5\xa2", 2147 | "\xf3\xbe\xa5\xa3", 2148 | "\xf3\xbe\xa5\xa4", 2149 | "\xf3\xbe\xa5\xa5", 2150 | "\xf3\xbe\xa5\xa6", 2151 | "\xf3\xbe\xa5\xa7", 2152 | "\xf3\xbe\xa5\xa8", 2153 | "\xf3\xbe\xa5\xa9", 2154 | "\xf3\xbe\xa5\xaa", 2155 | "\xf3\xbe\xa5\xab", 2156 | "\xf3\xbe\xa5\xac", 2157 | "\xf3\xbe\xa5\xad", 2158 | "\xf3\xbe\xa5\xae", 2159 | "\xf3\xbe\xa5\xaf", 2160 | "\xf3\xbe\xa5\xb0", 2161 | "\xf3\xbe\xa5\xb1", 2162 | "\xf3\xbe\xa5\xb2", 2163 | "\xf3\xbe\xa5\xb3", 2164 | "\xf3\xbe\xa5\xb4", 2165 | "\xf3\xbe\xa5\xb5", 2166 | "\xf3\xbe\xa5\xb6", 2167 | "\xf3\xbe\xa5\xb7", 2168 | "\xf3\xbe\xa5\xb8", 2169 | "\xf3\xbe\xa5\xb9", 2170 | "\xf3\xbe\xa5\xba", 2171 | "\xf3\xbe\xa5\xbb", 2172 | "\xf3\xbe\xa5\xbc", 2173 | "\xf3\xbe\xa5\xbd", 2174 | "\xf3\xbe\xa5\xbe", 2175 | "\xf3\xbe\xa5\xbf", 2176 | "\xf3\xbe\xa6\x80", 2177 | "\xf3\xbe\xa6\x81", 2178 | "\xf3\xbe\xa6\x82", 2179 | "\xf3\xbe\xa6\x83", 2180 | "\xf3\xbe\xa6\x84", 2181 | "\xf3\xbe\xa6\x85", 2182 | "\xf3\xbe\xa6\x86", 2183 | "\xf3\xbe\xa6\x87", 2184 | "\xf3\xbe\xa6\x88", 2185 | "\xf3\xbe\xab\xb0", 2186 | "\xf3\xbe\xab\xb1", 2187 | "\xf3\xbe\xab\xb2", 2188 | "\xf3\xbe\xab\xb3", 2189 | "\xf3\xbe\xab\xb4", 2190 | "\xf3\xbe\xab\xb5", 2191 | "\xf3\xbe\xab\xb6", 2192 | "\xf3\xbe\xab\xb7", 2193 | "\xf3\xbe\xab\xb8", 2194 | "\xf3\xbe\xab\xb9", 2195 | "\xf3\xbe\xab\xba", 2196 | "\xf3\xbe\xab\xbb", 2197 | "\xf3\xbe\xab\xbc", 2198 | "\xf3\xbe\xab\xbd", 2199 | "\xf3\xbe\xab\xbe", 2200 | "\xf3\xbe\xab\xbf", 2201 | "\xf3\xbe\xac\x83", 2202 | "\xf3\xbe\xac\x82", 2203 | "\xf3\xbe\xad\xb8", 2204 | "\xf3\xbe\xad\xb9", 2205 | "\xf3\xbe\xac\x81", 2206 | "\xf3\xbe\xac\x80", 2207 | "\xf3\xbe\xad\x84", 2208 | "\xf3\xbe\xad\x85", 2209 | "\xf3\xbe\xad\x86", 2210 | "\xf3\xbe\xac\x84", 2211 | "\xf3\xbe\xac\x85", 2212 | "\xf3\xbe\xac\x86", 2213 | "\xf3\xbe\xac\x89", 2214 | "\xf3\xbe\xac\x8a", 2215 | "\xf3\xbe\xac\x8b", 2216 | "\xf3\xbe\xac\x87", 2217 | "\xf3\xbe\xac\x88", 2218 | "\xf3\xbe\xa0\xab", 2219 | "\xf3\xbe\xac\x8c", 2220 | "\xf3\xbe\xac\x8d", 2221 | "\xf3\xbe\xac\x8e", 2222 | "\xf3\xbe\xac\x8f", 2223 | "\xf3\xbe\xac\x90", 2224 | "\xf3\xbe\xac\x91", 2225 | "\xf3\xbe\xac\x92", 2226 | "\xf3\xbe\xac\x93", 2227 | "\xf3\xbe\xac\x94", 2228 | "\xf3\xbe\xac\x95", 2229 | "\xf3\xbe\xac\x96", 2230 | "\xf3\xbe\xac\x97", 2231 | "\xf3\xbe\xac\x98", 2232 | "\xf3\xbe\xac\x99", 2233 | "\xf3\xbe\xac\x9a", 2234 | "\xf3\xbe\xac\x9b", 2235 | "\xf3\xbe\xac\x9c", 2236 | "\xf3\xbe\xac\x9d", 2237 | "\xf3\xbe\xac\x9e", 2238 | "\xf3\xbe\xac\x9f", 2239 | "\xf3\xbe\xac\xa0", 2240 | "\xf3\xbe\xac\xa2", 2241 | "\xf3\xbe\xac\xa3", 2242 | "\xf3\xbe\xac\xa6", 2243 | "\xf3\xbe\xac\xac", 2244 | "\xf3\xbe\x9f\xab", 2245 | "\xf3\xbe\x9f\xb0", 2246 | "\xf3\xbe\xac\xb3", 2247 | "\xf3\xbe\xac\xb4", 2248 | "\xf3\xbe\x94\x85", 2249 | "\xf3\xbe\x94\x86", 2250 | "\xf3\xbe\x94\x87", 2251 | "\xf3\xbe\x94\x88", 2252 | "\xf3\xbe\xac\xb5", 2253 | "\xf3\xbe\x93\xb3", 2254 | "\xf3\xbe\xad\x88", 2255 | "\xf3\xbe\xad\x89", 2256 | "\xf3\xbe\xae\x84", 2257 | "\xf3\xbe\xac\xb8", 2258 | "\xf3\xbe\xac\xa1", 2259 | "\xf3\xbe\xae\x81", 2260 | "\xf3\xbe\xac\xb6", 2261 | "\xf3\xbe\xac\xa8", 2262 | "\xf3\xbe\xac\xa7", 2263 | "\xf3\xbe\xad\x8f", 2264 | "\xf3\xbe\xac\xb7", 2265 | "\xf3\xbe\xac\xb2", 2266 | "\xf3\xbe\xac\xa4", 2267 | "\xf3\xbe\xac\xbf", 2268 | "\xf3\xbe\xac\xae", 2269 | "\xf3\xbe\xac\xaf", 2270 | "\xf3\xbe\xac\xb0", 2271 | "\xf3\xbe\xac\xb1", 2272 | "\xf3\xbe\xac\xb9", 2273 | "\xf3\xbe\xac\xba", 2274 | "\xf3\xbe\xac\xbb", 2275 | "\xf3\xbe\xac\xbc", 2276 | "\xf3\xbe\xac\xbe", 2277 | "\xf3\xbe\xad\x80", 2278 | "\xf3\xbe\xad\x81", 2279 | "\xf3\xbe\xac\xab", 2280 | "\xf3\xbe\xad\x83", 2281 | "\xf3\xbe\xac\xbd", 2282 | "\xf3\xbe\xad\x90", 2283 | "\xf3\xbe\xad\x91", 2284 | "\xf3\xbe\xad\x92", 2285 | "\xf3\xbe\xad\x93", 2286 | "\xf3\xbe\xad\x94", 2287 | "\xf3\xbe\xad\x95", 2288 | "\xf3\xbe\xad\x96", 2289 | "\xf3\xbe\xad\x97", 2290 | "\xf3\xbe\xad\x98", 2291 | "\xf3\xbe\xad\x99", 2292 | "\xf3\xbe\xad\x9a", 2293 | "\xf3\xbe\xad\x9b", 2294 | "\xf3\xbe\xad\x9c", 2295 | "\xf3\xbe\xad\x9d", 2296 | "\xf3\xbe\x93\xb4", 2297 | "\xf3\xbe\xad\x9e", 2298 | "\xf3\xbe\xad\x9f", 2299 | "\xf3\xbe\x94\xb2", 2300 | "\xf3\xbe\xad\xa0", 2301 | "\xf3\xbe\xad\xa1", 2302 | "\xf3\xbe\xad\xa2", 2303 | "\xf3\xbe\xad\xa5", 2304 | "\xf3\xbe\xad\xa6", 2305 | "\xf3\xbe\xad\xa3", 2306 | "\xf3\xbe\xad\xa4", 2307 | "\xf3\xbe\xad\xa7", 2308 | "\xf3\xbe\xad\xa8", 2309 | "\xf3\xbe\xad\xab", 2310 | "\xf3\xbe\xad\xac", 2311 | "\xf3\xbe\xad\xad", 2312 | "\xf3\xbe\xad\xae", 2313 | "\xf3\xbe\xad\xaf", 2314 | "\xf3\xbe\xad\xb0", 2315 | "\xf3\xbe\xad\xb1", 2316 | "\xf3\xbe\xad\xb2", 2317 | "\xf3\xbe\xad\xb3", 2318 | "\xf3\xbe\xad\xb4", 2319 | "\xf3\xbe\xad\xb5", 2320 | "\xf3\xbe\xad\xb6", 2321 | "\xf3\xbe\xad\xb7", 2322 | "\xf3\xbe\xad\xba", 2323 | "\xf3\xbe\xad\xbb", 2324 | "\xf3\xbe\xae\x83", 2325 | "\xf3\xbe\xae\x88", 2326 | "\xf3\xbe\xae\x91", 2327 | "\xf3\xbe\xa0\xa1", 2328 | "\xf3\xbe\x93\xbc", 2329 | "\xf3\xbe\x93\xbe", 2330 | "\xf3\xbe\xae\x85", 2331 | "\xf3\xbe\xae\x8d", 2332 | "\xf3\xbe\xae\x86", 2333 | "\xf3\xbe\xae\x87", 2334 | "\xf3\xbe\xae\x90", 2335 | "\xf3\xbe\xae\x8a", 2336 | "\xf3\xbe\xae\x82", 2337 | "\xf3\xbe\x93\xb2", 2338 | "\xf3\xbe\xae\x8b", 2339 | "\xf3\xbe\xae\x8c", 2340 | "\xf3\xbe\xae\x8f", 2341 | "\xf3\xbe\xad\x8b", 2342 | "\xf3\xbe\xae\x8e", 2343 | "\xf3\xbe\x80\x9a", 2344 | "\xf3\xbe\x80\x99", 2345 | "\xf3\xbe\x80\x98", 2346 | "\xf3\xbe\xad\x82", 2347 | "\xf3\xbe\xad\x8a", 2348 | "\xf3\xbe\xae\x93", 2349 | "\xf3\xbe\xae\x95", 2350 | "\xf3\xbe\xae\x94", 2351 | "\xf3\xbe\xae\x96", 2352 | "\xf3\xbe\xae\x97", 2353 | "\xf3\xbe\xae\x98", 2354 | "\xf3\xbe\xae\x99", 2355 | "\xf3\xbe\xae\x9a", 2356 | "\xf3\xbe\xae\x9b", 2357 | "\xf3\xbe\xae\x9c", 2358 | "\xf3\xbe\xae\x9d", 2359 | "\xf3\xbe\xae\x9e", 2360 | "\xf3\xbe\xae\x9f", 2361 | "\xf3\xbe\xae\xa0", 2362 | "\xf3\xbe\xae\xa1" 2363 | ); 2364 | } 2365 | } --------------------------------------------------------------------------------