├── 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 | . ''
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 | . ' '
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 | }
--------------------------------------------------------------------------------