From f47ae30ff19758ca11ad672895986f99d0c22a38 Mon Sep 17 00:00:00 2001 From: tocque Date: Sat, 23 May 2020 22:19:53 +0800 Subject: [PATCH 01/73] update server --- 启动服务.exe | Bin 55808 -> 56320 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/启动服务.exe b/启动服务.exe index 182127a71d4920eb13c55ab8a1edb658876e3ec1..9106f3832e89874a5282dab0521f0e0bcfbf848f 100644 GIT binary patch delta 19888 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 delta 19094 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 K{GipgcK$E6H5e)Y From c17d3cb1098a8faa2aa95e1f0d9ebfd9b2675265 Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Sun, 24 May 2020 18:30:20 +0800 Subject: [PATCH 02/73] =?UTF-8?q?doc:=E4=BF=AE=E6=94=B9=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _docs/editor.md | 312 ++++++++++++++++++++++++++++++++++++++++ _server/editor_table.js | 2 + 2 files changed, 314 insertions(+) create mode 100644 _docs/editor.md diff --git a/_docs/editor.md b/_docs/editor.md new file mode 100644 index 00000000..4834dee8 --- /dev/null +++ b/_docs/editor.md @@ -0,0 +1,312 @@ +# 修改编辑器 + +在改动core时, 有时会相应的更改project中存储数据的结构, 而表格和事件编辑器不做相应更改的话就无法顺畅的编辑改动了结构的数据了, 此文档帮助造塔者进行`配置表格`的修改, 以及修改_server/MotaAction.g4和其他相关文件来调整事件编辑器的图块. + +## 修改表格 + +### demo - 给怪物增加 _速度_ 属性 + +点击素材区的怪物后点击配置表格, 或者直接打开_server/table/comment.js +拉到`【怪物】相关的表格配置`的部分 +``` js +// --------------------------- 【怪物】相关的表格配置 --------------------------- // + "enemys": { + "_type": "object", + "_data": { + "id": { + "_leaf": true, + "_type": "disable", + "_docs": "怪物ID", + "_data": "怪物ID,可于页面底部修改" + }, + "name": { + "_leaf": true, + "_type": "textarea", + "_string": true, + "_data": "名称" + }, + "displayIdInBook": { + "_leaf": true, + "_type": "textarea", + "_string": true, + "_docs": "手册映射ID", + "_data": "在怪物手册中映射到的怪物ID。如果此项不为null,则在怪物手册中,将用目标ID来替换该怪物原本的ID。常被运用在同一个怪物的多朝向上。" + }, + "hp": { + "_leaf": true, + "_type": "textarea", + "_data": "生命值" + }, + "atk": { + "_leaf": true, + "_type": "textarea", + "_data": "攻击力" + }, +``` +可以看到, project/enemys.js 中怪物的属性 +```js +"greenSlime": {"name":"绿头怪","hp":100,"atk":120,"def":0,"money":1,"exp":1,"point":0,"special":[1,5,7,8]}, +``` +被逐条列出并解释 + +把hp的部分复制一份并修改 +```js + "speed": { + "_leaf": true, + "_type": "textarea", + "_data": "速度" + }, +``` +刷新之后, 怪物的表格在hp下面就多出了speed一项, 剪辑后出现在了怪物属性中 +```js +"greenSlime": {"name":"绿头怪","hp":100,"atk":120,"def":0,"money":1,"exp":1,"point":0,"special":[1,5,7,8],"speed":123123}, +``` +### 表格配置项含义 + +可以看出表格配置中的对象是一层套一层的结构, `_`开头的和数据的名字间隔着展开, 忽略所有`_`的层级的话, 这个对象和project中的对象是有相同的结构 + +**_leaf** 为真的项对应的数据将作为表格的编辑的内容, 数字/字符串/空对象和数组会被自动计算为true, 非空的对象和数组会被计算为false, 手动填写_leaf的值可以强制不展开对象和数组来进行编辑 + +**_type** 决定了表格如何展示该数据 ++ select 使用下拉菜单展示 ++ checkbox 使用勾选框展示 ++ checkboxSet 使用勾选框组展示 ++ 其他 使用文本框展示, 根据类型区分, 双击或点编辑会有以下行为 + - textarea 文本编辑器(_type的默认值) + - event 事件编辑器 + - material 素材选取 + - color 取色器 + - disable 不允许编辑 + +当某个event例如 门信息编辑 无法适应修改后的数据结构, 可以修改事件编辑器, 也可以把_type改成textarea +以上类型的格式要如何写请搜索例如`"_type": "checkboxSet"`来查找例子, 此处不展示 + +**_range** 被编辑的值会作为`thiseval`来进行检测, 当字符串为真时才接收这个值, 同时当删除表格时会判定_range是否接收null + +**拓展性** + +注意这是js文件, 可以使用表达式, 如下例子引用了别处的数据作为下拉菜单 +```js + "bgm": { + "_leaf": true, + "_type": "select", + "_select": { + "values": [null].concat(Object.keys(editor.core.material.bgms)) + }, + "_docs": "背景音乐", + "_data": "到达该层后默认播放的BGM" + }, +``` + +同时`_`开头的项可以使用函数. 同一级中`_data`最先被计算. 复杂的结构的注释可以利用函数动态生成 +`_data`的参数`key`是各子项的名字, 其他`_`开头的参数是`args`详见editor_table.prototype.objToTable的注释 +例如: 自动事件数组, `"_leaf": false`强制展开, 通过`_action`函数即使为空也显示两个空白的项, 同时`_data`函数给自动事件的每一项标记为event +```js + "autoEvent": { + "_type": "object", + "_leaf": false, + "_action": function (args) { + args.vobj = args.vobj || {}; + for (var ii = 0; ii < 2; ii++) { + args.vobj[ii] = args.vobj[ii] || null; + } + }, + "_data": function (key) { + return { + "_leaf": true, + "_type": "event", + "_event": "autoEvent", + "_data": "自动事件" + } + } + }, +``` + +## 修改事件编辑器 + +_type为event的表格项, 在双击时会进入事件编辑器. 是由[antlr-blockly](https://github.com/zhaouv/antlr-blockly)生成的图块式的可视化编辑器 + +_event的内容例如autoEvent则是使用的入口图块的类型 + +请先查看[antlr-blockly的文档](https://zhaouv.github.io/antlr-blockly/docs/#/README)来了解.g4语法文件和可视化编辑器blockly以及库antlr-blockly的基础知识 + +### 事件编辑器的运行机制简介 + +事件编辑器编辑一个表格项的流程有以下几步 ++ 加载表格中的json, 将其根据类别转化成图块 ++ 通过拖拽填写图块编辑内容 ++ 将图块转化回json置入表格 + +其中图块到json 是由_server/MotaAction.g4完成的 +json到图块 是由_server/MotaActionParser.js完成的, 并依赖图块在g4中的定义 + +图块到json首先由入口方块出发, 入口方块又依次去获取了嵌入在其中的方块和域, 嵌入的方块再递归访问其嵌入的内容, 从而访问了所有方块上域中的信息. +例如 event_m 通过 action_0 获取了其中嵌入的所有语句生成的json, 插入到其自身的键'data'中 + +```antlr +//事件 事件编辑器入口之一 +event_m + : '事件' BGNL? Newline '覆盖触发器' Bool '启用' Bool '通行状态' B_0_List '显伤' Bool BGNL? Newline action+ BEND + + +/* event_m +tooltip : 编辑魔塔的事件 +helpUrl : https://h5mota.com/games/template/_docs/#/event +default : [false,null,null,null,null] +B_0_List_0=eval(B_0_List_0); +var code = { + 'trigger': Bool_0?'action':null, + 'enable': Bool_1, + 'noPass': B_0_List_0, + 'displayDamage': Bool_2, + 'data': 'data_asdfefw' +} +if (!Bool_0 && Bool_1 && (B_0_List_0===null) && Bool_2) code = 'data_asdfefw'; +code=JSON.stringify(code,null,2).split('"data_asdfefw"').join('[\n'+action_0+']\n'); +return code; +*/; +``` + +值得注意的是shoplist和action这样的语句集合, 语句集合会选择其中的最后一项作为父方块的默认块, 所以在希望其允许空时, 要制作一个空项放在语句集合定义的末尾, 例如 +```antlr +shoplist + : shopsub + | shopitem + | shopcommonevent + | emptyshop + ; + +emptyshop + : Newline + + +/* emptyshop +var code = ' \n'; +return code; +*/; +``` + +json到图块则是从ActionParser.prototype.parse出发, 递归的将js对象变为图块, 例如event类型的json, 使用event_m入口图块, 将obj.trigger/enable/noPass/displayDamage填到域中, obj.data交给this.parseList转化为语句的图块, 与g4中注入的语句做相反的事情 +```js +ActionParser.prototype.parse = function (obj,type) { + switch (type) { + case 'event': + if(!obj)obj={}; + if(typeof(obj)===typeof('')) obj={'data':[obj]}; + if(obj instanceof Array) obj={'data':obj}; + return MotaActionBlocks['event_m'].xmlText([ + obj.trigger==='action',obj.enable,obj.noPass,obj.displayDamage,this.parseList(obj.data) + ]); +``` + +### demo - 给已有图块添加新域 + +例如给'播放背景音乐'图块再额外加一个参数列表 + +不熟悉时, 对任意图块来说这都算是最简单粗暴的修改方式了, 复杂的修改需求也只需要改这一下, 只是填图块时没那么方便 + +编辑g4时推荐使用vscode, 搜索并安装插件mota-js + +
playBgm_s
+    :   '播放背景音乐' EvalString '开始播放秒数' Int '持续到下个本事件' Bool '参数列表' JsonEvalString? Newline
+    
+
+/* playBgm_s
+tooltip : playBgm: 播放背景音乐
+helpUrl : https://h5mota.com/games/template/_docs/#/event?id=playbgm%EF%BC%9A%E6%92%AD%E6%94%BE%E8%83%8C%E6%99%AF%E9%9F%B3%E4%B9%90
+default : ["bgm.mp3", 0, true]
+allBgms : ['EvalString_0']
+colour : this.soundColor
+Int_0 = Int_0 ? (', "startTime": '+Int_0) : '';
+Bool_0 = Bool_0 ? ', "keep": true' : '';
+if (JsonEvalString_0) {
+    JsonEvalString_0 = ', "args": ' +JsonEvalString_0;
+}
+var code = '{"type": "playBgm", "name": "'+EvalString_0+'"'+Int_0+Bool_0+JsonEvalString_0+'},\n';
+return code;
+*/;
+ +使用了类型JsonEvalString, 并在注入的代码中处理了其新增出的JsonEvalString_0要如何体现在这个方块产生的json +此处使用了antlr-blockly产生的'类型名_次数'的默认名称, 也可以开头加一行`name : [null,null,null,'args']`来把这个变量命名为args, 对于setText_s这种域比较多的块会很有帮助. +在MotaAction中, 除了默认的Int/Number等 +常规的字符串使用EvalString +ID类型的使用IdString +允许空的自然数使用IntString +位置坐标使用PosString +不转义的多行文本使用RawEvalString +json类型的文本使用JsonEvalString + +相应的也需要改json到图块的部分 + +
      break;
+    case "playBgm":
+      this.next = MotaActionBlocks['playBgm_s'].xmlText([
+        data.name,data.startTime||0,data.keep||false,data.args,this.next]);
+      break
+    case "pauseBgm":
+ + +### demo - 增加新语句图块 + +假设已经制作了一个名为`陨石坠落`的公共事件, 其参数列表是长度3的数组, 依次是陨石颜色, 陨石位置, 爆炸范围. + +每次要使用插入公共事件并要填`陨石坠落`和形如`[[231,231,41],[5,7],1]`的长而且带有格式的内容, 并且无法使用取色器和地图选点功能. 此时就可以借助'注册一个自定义事件'并填加新语句图块来解决这个问题. + +首先注册成名为'meteorite'的事件, 再插件编写的init中添加以下内容 +```js +core.registerEvent('meteorite', function(data){ + core.insertAction({"type": "insert", "name": "陨石坠落", "args": [data.color,data.loc,data.range]}) +}) +``` + +然后再g4中修改以下位置(请善用搜索来定位) + +
    |   drawSelector_1_s
+    |   unknown_s
+    |   function_s
+    |   meteorite_s
+    |   pass_s
+    ;
+
+text_0_s
+ +并在分号后面添加 + +```antlr +meteorite_s + : '陨石坠落' '颜色' ColorString? Colour 'x' PosString ',' 'y' PosString '爆炸范围' Int Newline + + +/* meteorite_s +tooltip : 陨石坠落 +helpUrl : https://h5mota.com/games/template/_docs/#/event +default : ["255,0,0,1",'rgba(255,0,0,1)',"0","0",1] +selectPoint : ["PosString_0", "PosString_1"] +colour : this.soundColor +var loc = ', "loc": ['+PosString_0+','+PosString_1+']'; +ColorString_0 = ColorString_0 ? (', "color": ['+ColorString_0+']') : ''; +var code = '{"type": "meteorite"'+ColorString_0+loc+', "range": '+Int_0+'},\n'; +return code; +*/; +``` + +希望是特效的颜色, 于是在g4搜索'画面闪烁', 找到了`colour : this.soundColor`, 抄出其中的颜色的写法, 地图选点的写法同理, 搜索'强制战斗'后模仿其写法 + +在MotaActionParser.js中添加json到图块的代码, 同理模仿'画面闪烁'和'强制战斗' + +
      break;
+    case "playBgm":
+      this.next = MotaActionBlocks['playBgm_s'].xmlText([
+        data.name,data.startTime||0,data.keep||false,this.next]);
+      break
+    case "meteorite":
+      data.color = this.Colour(data.color)
+      this.next = MotaActionBlocks['meteorite_s'].xmlText([
+        data.color,'rgba('+data.color+')',data.loc[0],data.loc[1],data.range,this.next]);
+    case "pauseBgm":
+ +最后在editor_blocklyconfig.js中将其加入到工具栏中 + +
    '特效/声音':[
+      MotaActionBlocks['meteorite_s'].xmlText(),
+      MotaActionBlocks['sleep_s'].xmlText(),
diff --git a/_server/editor_table.js b/_server/editor_table.js index 59389e76..d61c2360 100644 --- a/_server/editor_table.js +++ b/_server/editor_table.js @@ -83,6 +83,8 @@ editor_table_wrapper = function (editor) { /** * checkboxset中checkbox的onchange + * 这个函数本质是模板editor_table.prototype.checkboxSetMember的一部分 + * 故放在HTML模板分类下 */ editor_table.prototype.checkboxSetMemberOnchange = function (onemember) { var thisset=onemember.parentNode From 36fa9696b497ed6a9aa45cf9a0c563ec33707474 Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Sun, 24 May 2020 18:53:01 +0800 Subject: [PATCH 03/73] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=94=99=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _docs/editor.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_docs/editor.md b/_docs/editor.md index 4834dee8..99b0496c 100644 --- a/_docs/editor.md +++ b/_docs/editor.md @@ -57,7 +57,7 @@ "_data": "速度" }, ``` -刷新之后, 怪物的表格在hp下面就多出了speed一项, 剪辑后出现在了怪物属性中 +刷新之后, 怪物的表格在hp下面就多出了speed一项, 编辑后出现在了怪物属性中 ```js "greenSlime": {"name":"绿头怪","hp":100,"atk":120,"def":0,"money":1,"exp":1,"point":0,"special":[1,5,7,8],"speed":123123}, ``` @@ -252,14 +252,14 @@ json类型的文本使用JsonEvalString 每次要使用插入公共事件并要填`陨石坠落`和形如`[[231,231,41],[5,7],1]`的长而且带有格式的内容, 并且无法使用取色器和地图选点功能. 此时就可以借助'注册一个自定义事件'并填加新语句图块来解决这个问题. -首先注册成名为'meteorite'的事件, 再插件编写的init中添加以下内容 +首先注册成名为'meteorite'的事件, 在插件编写的init中添加以下内容 ```js core.registerEvent('meteorite', function(data){ core.insertAction({"type": "insert", "name": "陨石坠落", "args": [data.color,data.loc,data.range]}) }) ``` -然后再g4中修改以下位置(请善用搜索来定位) +然后在g4中修改以下位置(请善用搜索来定位)
    |   drawSelector_1_s
     |   unknown_s

From fc5623514b06e8c84f995018465232dd5bf7c4af Mon Sep 17 00:00:00 2001
From: ckcz123 
Date: Sun, 24 May 2020 18:53:56 +0800
Subject: [PATCH 04/73] =?UTF-8?q?=E5=8F=B3=E9=94=AE=E5=8F=8D=E5=A4=8D?=
 =?UTF-8?q?=E5=BC=B9=E7=AA=97;=E4=B8=8A=E4=B8=8B=E6=A5=BC=E9=80=89?=
 =?UTF-8?q?=E7=82=B9;=E6=94=BE=E7=BC=A9dom?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 _server/editor_listen.js   |  16 +++++++--------
 _server/editor_mappanel.js |  33 ++++++++++++++++++++---------
 _server/editor_mode.js     |  15 +++++++++++++-
 _server/editor_table.js    |  41 ++++++++++++++++++++++++++++++++++---
 _server/table/comment.js   |   6 +++---
 libs/control.js            |   3 +++
 libs/core.js               |   4 +++-
 libs/events.js             |   2 +-
 project/fonts/number.ttf   | Bin 0 -> 4312 bytes
 styles.css                 |  16 +++++++--------
 v2.x-final更新.txt         |   2 +-
 11 files changed, 102 insertions(+), 36 deletions(-)
 create mode 100644 project/fonts/number.ttf

diff --git a/_server/editor_listen.js b/_server/editor_listen.js
index ebbf0369..0707ec28 100644
--- a/_server/editor_listen.js
+++ b/_server/editor_listen.js
@@ -28,15 +28,15 @@ editor_listen_wrapper = function (editor) {
         editor.dom.iconLib.onmouseup = editor.uifunctions.material_onup
         editor.dom.iconLib.oncontextmenu = function (e) { e.preventDefault() }
 
-        editor.dom.extraEvent.onmousedown = editor.uifunctions.extraEvent_click
-        editor.dom.chooseThis.onmousedown = editor.uifunctions.chooseThis_click
-        editor.dom.chooseInRight.onmousedown = editor.uifunctions.chooseInRight_click
-        editor.dom.copyLoc.onmousedown = editor.uifunctions.copyLoc_click
-        editor.dom.pasteLoc.onmousedown = editor.uifunctions.pasteLoc_click
-        editor.dom.clearEvent.onmousedown = editor.uifunctions.clearEvent_click
-        editor.dom.clearLoc.onmousedown = editor.uifunctions.clearLoc_click
+        editor.dom.extraEvent.onmouseup = editor.uifunctions.extraEvent_click
+        editor.dom.chooseThis.onmouseup = editor.uifunctions.chooseThis_click
+        editor.dom.chooseInRight.onmouseup = editor.uifunctions.chooseInRight_click
+        editor.dom.copyLoc.onmouseup = editor.uifunctions.copyLoc_click
+        editor.dom.pasteLoc.onmouseup = editor.uifunctions.pasteLoc_click
+        editor.dom.clearEvent.onmouseup = editor.uifunctions.clearEvent_click
+        editor.dom.clearLoc.onmouseup = editor.uifunctions.clearLoc_click
 
-        editor.dom.lastUsed.onmousedown = editor.uifunctions.lastUsed_click;
+        editor.dom.lastUsed.onmouseup = editor.uifunctions.lastUsed_click;
         editor.dom.lastUsed.oncontextmenu = function (e) { e.preventDefault(); }
         editor.dom.clearLastUsedBtn.onclick = editor.uifunctions.clearLastUsedBtn_click;
         editor.dom.lockMode.onchange = editor.uifunctions.lockMode_onchange;
diff --git a/_server/editor_mappanel.js b/_server/editor_mappanel.js
index 4c95c61d..8237d950 100644
--- a/_server/editor_mappanel.js
+++ b/_server/editor_mappanel.js
@@ -436,13 +436,9 @@ editor_mappanel_wrapper = function (editor) {
      * 隐藏右键菜单
      */
     editor.uifunctions.hideMidMenu = function () {
-        if (editor.isMobile) {
-            setTimeout(function () {
-                editor.dom.midMenu.style = 'display:none';
-            }, 200)
-        } else {
+        setTimeout(function () {
             editor.dom.midMenu.style = 'display:none';
-        }
+        }, 100)
     }
 
     /**
@@ -582,6 +578,8 @@ editor_mappanel_wrapper = function (editor) {
     editor.uifunctions.chooseThis_click = function (e) {
         editor.uifunctions.hideMidMenu();
         e.stopPropagation();
+        e.stopImmediatePropagation();
+        e.preventDefault();
         selectBox.isSelected(false);
 
         editor_mode.onmode('nextChange');
@@ -589,6 +587,7 @@ editor_mappanel_wrapper = function (editor) {
         //editor_mode.loc();
         //tip.whichShow(1);
         if (editor.isMobile) editor.showdataarea(false);
+        return false;
     }
 
     /**
@@ -598,8 +597,11 @@ editor_mappanel_wrapper = function (editor) {
     editor.uifunctions.chooseInRight_click = function (e) {
         editor.uifunctions.hideMidMenu();
         e.stopPropagation();
+        e.stopImmediatePropagation();
+        e.preventDefault();
         var thisevent = editor[editor.layerMod][editor.pos.y][editor.pos.x];
         editor.setSelectBoxFromInfo(thisevent, true);
+        return false;
     }
 
     /**
@@ -609,11 +611,12 @@ editor_mappanel_wrapper = function (editor) {
     editor.uifunctions.copyLoc_click = function (e) {
         editor.uifunctions.hideMidMenu();
         e.stopPropagation();
+        e.stopImmediatePropagation();
         e.preventDefault();
         editor_mode.onmode('');
         editor.uivalues.copyedInfo = editor.copyFromPos();
         printf('该点事件已复制');
-        return;
+        return false;
     }
 
     /**
@@ -623,10 +626,11 @@ editor_mappanel_wrapper = function (editor) {
     editor.uifunctions.pasteLoc_click = function (e) {
         editor.uifunctions.hideMidMenu();
         e.stopPropagation();
+        e.stopImmediatePropagation();
         e.preventDefault();
         if (!editor.uivalues.copyedInfo) {
             printe("没有复制的事件");
-            return;
+            return false;
         }
         editor.savePreMap();
         editor_mode.onmode('');
@@ -641,7 +645,7 @@ editor_mappanel_wrapper = function (editor) {
             editor.uifunctions.unhighlightSaveFloorButton();
             editor.drawPosSelection();
         });
-        return;
+        return false;
     }
 
     /**
@@ -650,8 +654,11 @@ editor_mappanel_wrapper = function (editor) {
      */
     editor.uifunctions.clearEvent_click = function (e) {
         e.stopPropagation();
+        e.stopImmediatePropagation();
+        e.preventDefault();
         editor.clearPos(false);
         editor.uifunctions.unhighlightSaveFloorButton();
+        return false;
     }
 
     /**
@@ -660,8 +667,11 @@ editor_mappanel_wrapper = function (editor) {
      */
     editor.uifunctions.clearLoc_click = function (e) {
         e.stopPropagation();
+        e.stopImmediatePropagation();
+        e.preventDefault();
         editor.clearPos(true);
         editor.uifunctions.unhighlightSaveFloorButton();
+        return false;
     }
 
     /**
@@ -845,7 +855,10 @@ editor_mappanel_wrapper = function (editor) {
     }
 
     editor.uifunctions.lastUsed_click = function (e) {
-        if (editor.isMobile) return;
+        e.preventDefault();
+        e.stopImmediatePropagation();
+        e.stopPropagation();
+        if (editor.isMobile) return false;
 
         var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft
         var scrollTop = document.documentElement.scrollTop || document.body.scrollTop
diff --git a/_server/editor_mode.js b/_server/editor_mode.js
index d7b8e728..7ebc5b95 100644
--- a/_server/editor_mode.js
+++ b/_server/editor_mode.js
@@ -57,7 +57,20 @@ editor_mode = function (editor) {
                 printe(objs_.slice(-1)[0]);
                 throw (objs_.slice(-1)[0])
             }
-            ; printf('修改成功' + (data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d.firstData.name == 'template' ? '\n\n请注意:全塔属性的name尚未修改,请及时予以设置' : ''));
+            ; 
+            var str = '修改成功!';
+            if (data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d.firstData.name == 'template')
+                str += '\n请注意:全塔属性的name尚未修改,请及时予以设置。';
+            if (mode == 'enemyitem') {
+                if (editor.info && editor.info.idnum) {
+                    var block = editor.core.maps.blocksInfo[editor.info.idnum];
+                    if (block.doorInfo != null && block.doorInfo.keys != null && Object.keys(block.doorInfo.keys).length > 0
+                        && block.trigger != 'openDoor') {
+                        str += "\n你修改了门信息,但触发器未改成openDoor,请修改否则无法撞击开门。"
+                    }
+                }
+            }
+            printf(str);
             if (callback) callback();
         }
         switch (mode) {
diff --git a/_server/editor_table.js b/_server/editor_table.js
index ddf31798..6e792a48 100644
--- a/_server/editor_table.js
+++ b/_server/editor_table.js
@@ -49,10 +49,11 @@ editor_table_wrapper = function (editor) {
     editor_table.prototype.checkboxSetMember = function (value,key,prefixString) {
         return /* html */`${prefixString}\n`;
     }
-    editor_table.prototype.editGrid = function (showComment, showEdit) {
+    editor_table.prototype.editGrid = function (showComment, showEdit, showCopy) {
         var list = [];
         if (showComment) list.push("");
-        if (showEdit) list.push("");
+        if (showEdit) list.push("");
+        if (showCopy) list.push("");
         return list.join(' ');
     }
 
@@ -79,7 +80,7 @@ editor_table_wrapper = function (editor) {
         ${shortField}
         ${shortComment || commentHTMLescape}
         
${tdstr}
- ${editor.table.editGrid(shortComment, type != 'select' && type != 'checkbox' && type != 'checkboxSet' && type != 'disable')} + ${editor.table.editGrid(shortComment, type != 'select' && type != 'checkbox' && type != 'checkboxSet' && type != 'disable', type == 'disable')} \n` } @@ -416,6 +417,22 @@ editor_table_wrapper = function (editor) { if (cobj._type === 'textarea') editor_multi.import(guid, { lint: cobj._lint, string: cobj._string }); if (cobj._type === 'material') editor.table.selectMaterial(input, cobj); if (cobj._type === 'color') editor.table.selectColor(input); + if (cobj._type === 'point') editor.table.selectPoint(input); + } + + editor_table.prototype.onCopyBtnClick = function (button) { + var tr = button.parentNode.parentNode; + var input = tr.children[2].children[0].children[0]; + var value = JSON.parse(input.value); + if (value == null) { + printe('没有赋值的内容'); + return; + } + if (core.copy(value.toString())) { + printf('复制成功!'); + } else { + printe('无法复制此内容,请手动选择复制'); + } } /** @@ -431,6 +448,7 @@ editor_table_wrapper = function (editor) { if (cobj._type === 'textarea') editor_multi.import(guid, { lint: cobj._lint, string: cobj._string }); if (cobj._type === 'material') editor.table.selectMaterial(input, cobj); if (cobj._type === 'color') editor.table.selectColor(input); + if (cobj._type === 'point') editor.table.selectPoint(input); } else if (editor_mode.doubleClickMode === 'add') { editor_mode.doubleClickMode = 'change'; editor.table.addfunc(guid, obj, commentObj, thisTr, input, field, cobj, modeNode) @@ -466,6 +484,23 @@ editor_table_wrapper = function (editor) { }) } + editor_table.prototype.selectPoint = function (input) { + var x = 0, y = 0, value = input.value; + if (value != null) { + try { + var loc = JSON.parse(value); + if (loc instanceof Array && loc.length == 2) { + x = loc[0]; + y = loc[1]; + } + } catch (e) {} + } + editor.uievent.selectPoint(editor.currentFloorId, x, y, true, function (floorId, x, y) { + input.value = '['+x+','+y+']'; + input.onchange(); + }) + } + /** * 删除表格项 */ diff --git a/_server/table/comment.js b/_server/table/comment.js index 698cf390..14a709e0 100644 --- a/_server/table/comment.js +++ b/_server/table/comment.js @@ -282,7 +282,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_type": "select", "_select": { "values": [ - "null", + null, "openDoor", "pushBox", "ski", @@ -446,14 +446,14 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { }, "upFloor": { "_leaf": true, - "_type": "textarea", + "_type": "point", "_range": "thiseval==null||((thiseval instanceof Array) && thiseval.length==2)", "_docs": "上楼点", "_data": "该层上楼点,如[2,3]。\n如果此项不为null,则楼层转换时的stair:upFloor,以及楼传器的落点会被替换成该点而不是该层的上楼梯。" }, "downFloor": { "_leaf": true, - "_type": "textarea", + "_type": "point", "_range": "thiseval==null||((thiseval instanceof Array) && thiseval.length==2)", "_docs": "下楼点", "_data": "该层下楼点,如[2,3]。\n如果此项不为null,则楼层转换时的stair:downFloor,以及楼传器的落点会被替换成该点而不是该层的下楼梯。" diff --git a/libs/control.js b/libs/control.js index 93d8f5fd..f099f45b 100644 --- a/libs/control.js +++ b/libs/control.js @@ -2721,6 +2721,9 @@ control.prototype._resize_gameGroup = function (obj) { floorMsgGroup.style = obj.globalAttribute.floorChangingStyle; floorMsgGroup.style.width = obj.outerSize - 2 * obj.BORDER + "px"; floorMsgGroup.style.height = totalHeight - 2 * obj.BORDER + "px"; + floorMsgGroup.style.fontSize = 16 * core.domStyle.scale + "px"; + // startPanel + core.dom.startPanel.style.fontSize = 16 * core.domStyle.scale + "px"; // musicBtn if (core.domStyle.isVertical || core.domStyle.scale < 1) { core.dom.musicBtn.style.right = core.dom.musicBtn.style.bottom = "3px"; diff --git a/libs/core.js b/libs/core.js index 0da652b7..bb01d112 100644 --- a/libs/core.js +++ b/libs/core.js @@ -230,7 +230,9 @@ core.prototype.init = function (coreData, callback) { core.extensions._load(function () { core._afterLoadResources(callback); }); - }); + }); + core.dom.musicBtn.style.display = 'block'; + core.setMusicBtn(); } core.prototype._init_flags = function () { diff --git a/libs/events.js b/libs/events.js index bb455bc6..509e5092 100644 --- a/libs/events.js +++ b/libs/events.js @@ -2972,7 +2972,7 @@ events.prototype.checkLvUp = function () { } events.prototype._checkLvUp_check = function () { - if (core.flags.statusBarItems.indexOf('enableLevelUp')>=0 || !core.firstData.levelUp + if (core.flags.statusBarItems.indexOf('enableLevelUp')<0 || !core.firstData.levelUp || core.status.hero.lv >= core.firstData.levelUp.length) return null; // 计算下一个所需要的数值 var next = (core.firstData.levelUp[core.status.hero.lv] || {}); diff --git a/project/fonts/number.ttf b/project/fonts/number.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bcf90fae15a92f26dae9f2bf31c86319c458ea77 GIT binary patch literal 4312 zcmchbe@xZa6~NE;fjr>B;{iSp0ePZ8iwKAg;Tzn-ox35h$nw*Tgm^ zZD!i6>$-JK)}~8cQ;S`eCTiW*)i|ei^JlgGER@=+P_bHFYug0QKKJ{+dyc4hneM}FBYGHN4pPSn>`*N*Nu>|yKZnhJR4h@+gAC+ zY%TD*>8H^ZZr#uPbjObpDnAu(q%A(QBV(;0!cV;#vDVWE>l2SX!=C5q)2s4|XS0Zw zM67k>_H6sdZ%h1g7rrsz!Amn~Lx==rPl~b6$V7L9pNyL7k!UmLKM>a8@U^QtS{N0Q zb&;Zr*h8Ph(`9TC>*YxE2-#ecbcdx#j8E(l{QBU+v`4&>=g<*SE`<&q$(ZF1Jqr3k zhmL}N$f3Ph_LxIQvx5!rR%8t8l*=;?ZApq8bZC$G<*Y+TNQ+!`=txPiY8-kLbcaJn zLI2#Ly%J^p-l3yqtktc-HWjny>| zET~(ty0N;|c&x5sQr_qeO2Ys#5#$KDH34V&bqp#O-IWbCRs#87Gm_ z!!r^z{5s|2kdXarArqp1bBLstqR8iHiIG_HG|sMyo6q_G_m;Edux3G9k8>C-!@w7e z`LrI9s4=v5k!S=lmF7@1V4il{EFGLY$7t!a8rp2yGFm%r6KyH2!JZ_N$ur>dMoCnZ z*M+!f!$-RiALA9TH^v43b$mi>v_wb8x)AUg-seK1FGgZwT-KKqXZSc5lH+3~Ha6ac z(bw@ozfXKVzY8e|hEH%IH6c#o;#@XiOu+B~7t)jb;`b-HkeQqy2?@zAgn|JH1cEM% zPf3)-#1t2D(vl@PIn9OqjGzRA87>rNrAlgQmJ220($t@ro zGWDhhv|G>VSv>>3uZQ&u{X&Ygls$Z)*Yp~dn8b`CSt2jV{TytwWgJx+sb4a(A3P3j z(dGIZeO9+y52AmAOqJV=CAuH&P5K;K59>$zk&)Sb)C|3y`X}(X?qQ`fMj}gDWv|@J zK{tuREJW^)WA!A{rLXE{Ey9jt_~EngTQh8_Z9e|EpUr?v^qsl{@r4 zIUs|K7yYxnkN5Om3Cb8rmE1wqs4@PWo=4XqeMK+JH;|>-(q8S=_Xt`SA$)^XjW(kPu%w1ODa9r(O(Qb` zR}I-^o+Fsy9bwwCeuuhrY#1jKzSwg)(Xx}Oo=g6j_$(tn_j$VH*0A=Go_B&WEH=*KYjhf^VqWl> zteS`;sVhB+%ikfXF6u?xp09%#7faC68Pm>P@Y`SoSC%x%ww?SGwXj9Xta(y4nBnOf zT%+f4g`a(ieG0s(J4mb^!^>E33Tx~m$+~dtS-qlHkWY|oE<3YiE?1B$C?TM|TtY-% zqcqafa^HzZvHk9@DdBx-}PSx}CkF*&#sgY}9Gm!D00WvqK|8N0xm;%;P3#Zc_le z{#Z|QkDN$t82%FcF;mr+Y$EU0k{98uGj1442FuFRzgs^hr(Og*WglkE;GA0~-y;S^ z1Fw3zlus&Mt&i!W`W^H>B0rS1oZ0hPc7s`nY+g!SX4!F>KsmbFhy0CTSk{H5!zEwo z95!(l3nbY!m4jE3Bv~(G*-7Gb+DXoUm~x1-eUgLq0ZGuSoF?Yg)5XY7IN##64I{P_ zm$yxFla_v7C%18v?!eoVx#8YQ9`L?r<`q3iL_>C7WD?E&ME)0e|JUfdhzot>4b@E5 zoAV1m{yyjEA>tX1q=`E+xw#g6;5&+tgcNUpXp`#ifks&DFF^`Dgf zS^bb+b5%7(QpEQ_8AWDZmgdD3;w3gk7I9%LH%gefo9x(2e)dpqfJYjLMZy1|Mm+P; z-;e)JqWw5Nzf3*`?UU{nc42&VVUUk+4u&8-lgRbO@-*KKZIo`IeV!Y8o??I7!MDI( z^0NS}!FL6Cy_hq$2OADz^;JHey;@*hK;v%LlObxzyt}d-Pj^!_y9T%0W6aJjXuq+V zI$SEd`S@HQ3)x|=5fPI!x(nQ Date: Sun, 24 May 2020 18:59:18 +0800 Subject: [PATCH 05/73] =?UTF-8?q?=E6=9B=BF=E6=8D=A2=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E9=A2=9C=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor_blockly.js | 2 +- _server/editor_mappanel.js | 2 +- _server/editor_table.js | 2 +- migration.html | 5 +++++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 9ab7f75b..e352376b 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -147,7 +147,7 @@ editor_blockly = function () { editor_blockly.highlightParse = function (shouldHighLight) { if (shouldNotifyParse == shouldHighLight) return; shouldNotifyParse = shouldHighLight; - blocklyParseBtn.style.background = shouldNotifyParse ? '#FFCCAA' : 'unset'; + blocklyParseBtn.style.background = shouldNotifyParse ? '#fff4bb' : 'unset'; } editor_blockly.cancel = function () { diff --git a/_server/editor_mappanel.js b/_server/editor_mappanel.js index 8237d950..86a894c0 100644 --- a/_server/editor_mappanel.js +++ b/_server/editor_mappanel.js @@ -830,7 +830,7 @@ editor_mappanel_wrapper = function (editor) { editor.uifunctions.highlightSaveFloorButton=function(){ var saveFloor = document.getElementById('saveFloor'); - saveFloor.style.background='#FFCCAA'; + saveFloor.style.background='#fff4bb'; } editor.uifunctions.unhighlightSaveFloorButton=function(){ diff --git a/_server/editor_table.js b/_server/editor_table.js index 6e792a48..80ed94f4 100644 --- a/_server/editor_table.js +++ b/_server/editor_table.js @@ -71,7 +71,7 @@ editor_table_wrapper = function (editor) { ---- ---- ${field} - + \n` } diff --git a/migration.html b/migration.html index 4129e54b..5a5faf63 100644 --- a/migration.html +++ b/migration.html @@ -83,6 +83,11 @@ if (functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a.events.setInitData || !plugin
  • 「绘制圆」「绘制圆边框」「重启当前事件」已经被删除,并且无法再在游戏中使用,请替换成等价的写法。
  • +
  • 其他 +
      +
    • V2.7默认采用新版图标;如果觉得不合适可以将materials目录下的icons_old.png替换掉icons.png以使用原版图标。
    • +
    +
  • 接档后请做好充分的测试!最好能跑通录像以确认接档无误!
  • From 2c7b31a8ac33b055bf49118064da1a699a4b5b96 Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Sun, 24 May 2020 19:27:05 +0800 Subject: [PATCH 06/73] doc:add _type:point --- _docs/editor.md | 1 + 1 file changed, 1 insertion(+) diff --git a/_docs/editor.md b/_docs/editor.md index 99b0496c..257c3655 100644 --- a/_docs/editor.md +++ b/_docs/editor.md @@ -76,6 +76,7 @@ - event 事件编辑器 - material 素材选取 - color 取色器 + - point 地图选点 - disable 不允许编辑 当某个event例如 门信息编辑 无法适应修改后的数据结构, 可以修改事件编辑器, 也可以把_type改成textarea From 404795de71ce6dfefd3ab60a20478cd2c400cf6b Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 24 May 2020 20:22:34 +0800 Subject: [PATCH 07/73] Update editor doc --- _docs/_sidebar.md | 1 + _docs/editor.md | 128 +++++++++++++++++++++++----------------------- 2 files changed, 65 insertions(+), 64 deletions(-) diff --git a/_docs/_sidebar.md b/_docs/_sidebar.md index 914ee883..a27b1f84 100644 --- a/_docs/_sidebar.md +++ b/_docs/_sidebar.md @@ -4,4 +4,5 @@ - [事件](event) - [个性化](personalization) - [脚本](script) +- [修改编辑器](editor) - [附录:API列表](api) diff --git a/_docs/editor.md b/_docs/editor.md index 257c3655..34c9f770 100644 --- a/_docs/editor.md +++ b/_docs/editor.md @@ -10,38 +10,38 @@ 拉到`【怪物】相关的表格配置`的部分 ``` js // --------------------------- 【怪物】相关的表格配置 --------------------------- // - "enemys": { - "_type": "object", - "_data": { - "id": { - "_leaf": true, - "_type": "disable", - "_docs": "怪物ID", - "_data": "怪物ID,可于页面底部修改" - }, - "name": { - "_leaf": true, - "_type": "textarea", - "_string": true, - "_data": "名称" - }, - "displayIdInBook": { - "_leaf": true, - "_type": "textarea", - "_string": true, - "_docs": "手册映射ID", - "_data": "在怪物手册中映射到的怪物ID。如果此项不为null,则在怪物手册中,将用目标ID来替换该怪物原本的ID。常被运用在同一个怪物的多朝向上。" - }, - "hp": { - "_leaf": true, - "_type": "textarea", - "_data": "生命值" - }, - "atk": { - "_leaf": true, - "_type": "textarea", - "_data": "攻击力" - }, +"enemys": { + "_type": "object", + "_data": { + "id": { + "_leaf": true, + "_type": "disable", + "_docs": "怪物ID", + "_data": "怪物ID,可于页面底部修改" + }, + "name": { + "_leaf": true, + "_type": "textarea", + "_string": true, + "_data": "名称" + }, + "displayIdInBook": { + "_leaf": true, + "_type": "textarea", + "_string": true, + "_docs": "手册映射ID", + "_data": "在怪物手册中映射到的怪物ID。如果此项不为null,则在怪物手册中,将用目标ID来替换该怪物原本的ID。常被运用在同一个怪物的多朝向上。" + }, + "hp": { + "_leaf": true, + "_type": "textarea", + "_data": "生命值" + }, + "atk": { + "_leaf": true, + "_type": "textarea", + "_data": "攻击力" + }, ``` 可以看到, project/enemys.js 中怪物的属性 ```js @@ -51,11 +51,11 @@ 把hp的部分复制一份并修改 ```js - "speed": { - "_leaf": true, - "_type": "textarea", - "_data": "速度" - }, +"speed": { + "_leaf": true, + "_type": "textarea", + "_data": "速度" +}, ``` 刷新之后, 怪物的表格在hp下面就多出了speed一项, 编辑后出现在了怪物属性中 ```js @@ -88,39 +88,39 @@ 注意这是js文件, 可以使用表达式, 如下例子引用了别处的数据作为下拉菜单 ```js - "bgm": { - "_leaf": true, - "_type": "select", - "_select": { - "values": [null].concat(Object.keys(editor.core.material.bgms)) - }, - "_docs": "背景音乐", - "_data": "到达该层后默认播放的BGM" - }, +"bgm": { + "_leaf": true, + "_type": "select", + "_select": { + "values": [null].concat(Object.keys(editor.core.material.bgms)) + }, + "_docs": "背景音乐", + "_data": "到达该层后默认播放的BGM" +}, ``` 同时`_`开头的项可以使用函数. 同一级中`_data`最先被计算. 复杂的结构的注释可以利用函数动态生成 `_data`的参数`key`是各子项的名字, 其他`_`开头的参数是`args`详见editor_table.prototype.objToTable的注释 例如: 自动事件数组, `"_leaf": false`强制展开, 通过`_action`函数即使为空也显示两个空白的项, 同时`_data`函数给自动事件的每一项标记为event ```js - "autoEvent": { - "_type": "object", - "_leaf": false, - "_action": function (args) { - args.vobj = args.vobj || {}; - for (var ii = 0; ii < 2; ii++) { - args.vobj[ii] = args.vobj[ii] || null; - } - }, - "_data": function (key) { - return { - "_leaf": true, - "_type": "event", - "_event": "autoEvent", - "_data": "自动事件" - } - } - }, +"autoEvent": { + "_type": "object", + "_leaf": false, + "_action": function (args) { + args.vobj = args.vobj || {}; + for (var ii = 0; ii < 2; ii++) { + args.vobj[ii] = args.vobj[ii] || null; + } + }, + "_data": function (key) { + return { + "_leaf": true, + "_type": "event", + "_event": "autoEvent", + "_data": "自动事件" + } + } +}, ``` ## 修改事件编辑器 From c0d230b6bdabcc1777731d2efee7352e66e806b9 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 24 May 2020 20:29:01 +0800 Subject: [PATCH 08/73] fix formatBigNumber --- libs/ui.js | 2 +- libs/utils.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/ui.js b/libs/ui.js index a27d5c0b..14f37612 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -2505,7 +2505,7 @@ ui.prototype._drawEquipbox_drawStatusChanged = function (info, y, equip, equipTy var nowValue = core.getRealStatus(name); // 查询新值 var newValue = (core.getStatus(name) + (compare.value[name] || 0)) - * (core.getBuff(name) + (compare.percentage[name] || 0) / 100); + * ((core.getBuff(name) * 100 + (compare.percentage[name] || 0)) / 100); if (nowValue == newValue) continue; var text = this._drawEquipbox_getStatusName(name); this._drawEquipbox_drawStatusChanged_draw(text + " ", '#CCCCCC', obj); diff --git a/libs/utils.js b/libs/utils.js index a4f7171f..6ada02f9 100644 --- a/libs/utils.js +++ b/libs/utils.js @@ -401,7 +401,7 @@ utils.prototype.formatSize = function (size) { utils.prototype.formatBigNumber = function (x, onMap) { x = Math.floor(parseFloat(x)); if (!core.isset(x)) return '???'; - if (x > 1e24 || x < -1e24) return x; + if (x > 1e24 || x < -1e24) return x.toExponential(2); var c = x < 0 ? "-" : ""; x = Math.abs(x); From fc760bda4615ca8fa25468f940799b7e839d33cf Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 24 May 2020 22:19:27 +0800 Subject: [PATCH 09/73] =?UTF-8?q?icons.png=E4=B8=8D=E6=8E=A5=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- migration.html | 2 +- v2.x-final更新.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/migration.html b/migration.html index 5a5faf63..e0e58b00 100644 --- a/migration.html +++ b/migration.html @@ -123,7 +123,7 @@ function action_data(callback) { // Step 0: 移动目录 // materials - ['animates', 'enemys', 'items', 'npcs', 'terrains', 'enemy48', 'npc48', 'icons', 'airwall', 'fog', 'keyboard'].forEach(function (one) { + ['animates', 'enemys', 'items', 'npcs', 'terrains', 'enemy48', 'npc48', 'airwall', 'fog', 'keyboard'].forEach(function (one) { fs.moveFile('project/images/'+one+".png", 'project/materials/'+one+'.png', function (e, d) {}); }); main.tilesets.forEach(function (one) { diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index 47d114bc..7b9ea9b0 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -68,9 +68,9 @@ (不处理;现在静止状态可以有帧动画了,所以不考虑行走过程动画) 行走动画 (已完成!) 合并main中一些设置内容 (已完成!) \t[this], 勇士朝下,flag:arg清理,瞬移扣血 -(OK) 同步存档合并;(OK) 失去焦点右键;地图编辑框无效;(OK) 竖屏标题界面背景 +(OK) 同步存档合并;(OK) 失去焦点右键;(OK) 竖屏标题界面背景 (OK) 右键反复弹出;(OK) 上下楼梯绑定楼传;(OK) 属性框出现0问题;(OK) 上下楼点选点 - +地图编辑框无效;jumpHero和帧动画冲突;图片化文本翻转;bookDetails重复计算buff ------------- From 8b183544c97cdc1f92fc9e8579c922a0567fc04b Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Mon, 25 May 2020 13:13:41 +0800 Subject: [PATCH 10/73] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=95=86=E5=BA=97?= =?UTF-8?q?=E5=BD=95=E5=83=8Fbug;=E6=80=AA=E7=89=A9=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E5=A4=9A=E9=80=89=E6=A1=86;=E4=BF=AE=E5=A4=8D=E6=8E=A5?= =?UTF-8?q?=E6=A1=A3=E5=B7=A5=E5=85=B7bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _docs/editor.md | 1 + _server/editor_file.js | 12 +++---- _server/editor_table.js | 20 ++++++++--- _server/editor_ui.js | 76 +++++++++++++++++++++++++++++++++++----- _server/table/comment.js | 4 +-- editor-mobile.html | 3 +- editor.html | 3 +- libs/control.js | 6 +--- libs/events.js | 4 +++ libs/utils.js | 2 +- migration.html | 43 ++++++++++++++--------- v2.x-final更新.txt | 5 +-- 12 files changed, 129 insertions(+), 50 deletions(-) diff --git a/_docs/editor.md b/_docs/editor.md index 34c9f770..22e369ac 100644 --- a/_docs/editor.md +++ b/_docs/editor.md @@ -78,6 +78,7 @@ - color 取色器 - point 地图选点 - disable 不允许编辑 + - popCheckBoxSet 以弹窗形式多选框 当某个event例如 门信息编辑 无法适应修改后的数据结构, 可以修改事件编辑器, 也可以把_type改成textarea 以上类型的格式要如何写请搜索例如`"_type": "checkboxSet"`来查找例子, 此处不展示 diff --git a/_server/editor_file.js b/_server/editor_file.js index 0c28dc6f..1087f975 100644 --- a/_server/editor_file.js +++ b/_server/editor_file.js @@ -919,10 +919,9 @@ editor_file = function (editor, callback) { eval("items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a" + value[1] + '=' + JSON.stringify(value[2])); }); var datastr = 'var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = \n'; - datastr += JSON.stringify(items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a, function (k, v) { - if (v.id != null) delete v.id; - return v; - }, '\t'); + var items = core.clone(items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a); + for (var id in items) delete items[id].id; + datastr += JSON.stringify(items, null, '\t'); fs.writeFile('project/items.js', encode(datastr), 'base64', function (err, data) { callback(err); }); @@ -934,9 +933,10 @@ editor_file = function (editor, callback) { }); var datastr = 'var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = \n'; var emap = {}; + var enemys = enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80; + for (var id in enemys) delete enemys[id].id; var estr = JSON.stringify(enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80, function (k, v) { - if (v.hp != null) { - delete v.id; + if (v && v.hp != null) { var id_ = editor.util.guid(); emap[id_] = JSON.stringify(v); return id_; diff --git a/_server/editor_table.js b/_server/editor_table.js index 672d26a5..bc0410e7 100644 --- a/_server/editor_table.js +++ b/_server/editor_table.js @@ -49,11 +49,12 @@ editor_table_wrapper = function (editor) { editor_table.prototype.checkboxSetMember = function (value,key,prefixString) { return /* html */`${prefixString}\n`; } - editor_table.prototype.editGrid = function (showComment, showEdit, showCopy) { + editor_table.prototype.editGrid = function (showComment, type) { var list = []; if (showComment) list.push(""); - if (showEdit) list.push(""); - if (showCopy) list.push(""); + if (type != 'select' && type != 'checkbox' && type != 'checkboxSet' && type != 'disable') + list.push(""); + if (type == 'disable') list.push(""); return list.join(' '); } @@ -80,7 +81,7 @@ editor_table_wrapper = function (editor) { ${shortField} ${shortComment || commentHTMLescape}
    ${tdstr}
    - ${editor.table.editGrid(shortComment, type != 'select' && type != 'checkbox' && type != 'checkboxSet' && type != 'disable', type == 'disable')} + ${editor.table.editGrid(shortComment, type)} \n` } @@ -289,7 +290,7 @@ editor_table_wrapper = function (editor) { case 'checkboxSet': return editor.table.checkboxSet(thiseval, cobj._checkboxSet.key, cobj._checkboxSet.prefix); default: - return editor.table.textarea(thiseval, cobj.indent || 0, cobj._type == 'disable'); + return editor.table.textarea(thiseval, cobj.indent || 0, cobj._type == 'disable' || cobj._type == 'popCheckboxSet'); } } @@ -420,6 +421,7 @@ editor_table_wrapper = function (editor) { if (cobj._type === 'material') editor.table.selectMaterial(input, cobj); if (cobj._type === 'color') editor.table.selectColor(input); if (cobj._type === 'point') editor.table.selectPoint(input); + if (cobj._type === 'popCheckboxSet') editor.table.popCheckboxSet(input, cobj); } editor_table.prototype.onCopyBtnClick = function (button) { @@ -451,6 +453,7 @@ editor_table_wrapper = function (editor) { if (cobj._type === 'material') editor.table.selectMaterial(input, cobj); if (cobj._type === 'color') editor.table.selectColor(input); if (cobj._type === 'point') editor.table.selectPoint(input); + if (cobj._type === 'popCheckboxSet') editor.table.popCheckboxSet(input, cobj); } else if (editor_mode.doubleClickMode === 'add') { editor_mode.doubleClickMode = 'change'; editor.table.addfunc(guid, obj, commentObj, thisTr, input, field, cobj, modeNode) @@ -503,6 +506,13 @@ editor_table_wrapper = function (editor) { }) } + editor_table.prototype.popCheckboxSet = function (input, cobj) { + editor.uievent.popCheckboxSet(JSON.parse(input.value), cobj._checkboxSet, cobj._docs || cobj._data || '请选择多选项', function (value) { + input.value = JSON.stringify(value); + input.onchange(); + }) + } + /** * 删除表格项 */ diff --git a/_server/editor_ui.js b/_server/editor_ui.js index f545e4ad..99f01747 100644 --- a/_server/editor_ui.js +++ b/_server/editor_ui.js @@ -475,8 +475,7 @@ editor_ui_wrapper = function (editor) { uievent.elements.selectPointButtons = document.getElementById('selectPointButtons'); uievent.elements.canvas = document.getElementById('uievent'); uievent.elements.usedFlags = document.getElementById('uieventUsedFlags'); - uievent.elements.usedFlagList = document.getElementById('uieventUsedFlagList'); - uievent.elements.materialList = document.getElementById('uieventMaterialList'); + uievent.elements.extraBody = document.getElementById('uieventExtraBody'); uievent.close = function () { uievent.isOpen = false; @@ -524,7 +523,7 @@ editor_ui_wrapper = function (editor) { uievent.elements.selectPointBox.style.display = 'none'; uievent.elements.canvas.style.display = 'block'; uievent.elements.usedFlags.style.display = 'none'; - uievent.elements.usedFlagList.style.display = 'none'; + uievent.elements.extraBody.style.display = 'none'; uievent.elements.body.style.overflow = "hidden"; uievent.values.list = list; @@ -548,7 +547,7 @@ editor_ui_wrapper = function (editor) { uievent.elements.selectPointBox.style.display = 'block'; uievent.elements.canvas.style.display = 'block'; uievent.elements.usedFlags.style.display = 'none'; - uievent.elements.usedFlagList.style.display = 'none'; + uievent.elements.extraBody.style.display = 'none'; uievent.elements.body.style.overflow = "hidden"; uievent.elements.yes.onclick = function () { var floorId = uievent.values.floorId, x = uievent.values.x, y = uievent.values.y; @@ -679,7 +678,7 @@ editor_ui_wrapper = function (editor) { uievent.elements.selectPointBox.style.display = 'none'; uievent.elements.canvas.style.display = 'none'; uievent.elements.usedFlags.style.display = 'inline'; - uievent.elements.usedFlagList.style.display = 'block'; + uievent.elements.extraBody.style.display = 'block'; uievent.elements.body.style.overflow = "auto"; // build flags @@ -708,7 +707,7 @@ editor_ui_wrapper = function (editor) { html += x; }); html += ""; - uievent.elements.usedFlagList.innerHTML = html; + uievent.elements.extraBody.innerHTML = html; } var hasUsedFlags = function (obj, flag) { @@ -775,8 +774,7 @@ editor_ui_wrapper = function (editor) { uievent.elements.selectPointBox.style.display = 'none'; uievent.elements.canvas.style.display = 'none'; uievent.elements.usedFlags.style.display = 'none'; - uievent.elements.usedFlagList.style.display = 'none'; - uievent.elements.materialList.style.display = 'block'; + uievent.elements.extraBody.style.display = 'block'; uievent.elements.body.style.overflow = "auto"; uievent.elements.yes.onclick = function () { @@ -808,7 +806,7 @@ editor_ui_wrapper = function (editor) { html += '
    '; }); html += "

    "; - uievent.elements.materialList.innerHTML = html; + uievent.elements.extraBody.innerHTML = html; }); } @@ -869,6 +867,66 @@ editor_ui_wrapper = function (editor) { if (audio.paused) audio.play(); } + // ------ 多选框 ------ // + uievent.popCheckboxSet = function (value, comments, title, callback) { + if (value == null) value = []; + if (!(value instanceof Array)) { + if (value == 0) value = []; + else value = [value]; + } + + uievent.isOpen = true; + uievent.elements.div.style.display = 'block'; + uievent.mode = 'popCheckboxSet'; + uievent.elements.selectPoint.style.display = 'none'; + uievent.elements.yes.style.display = 'block'; + uievent.elements.title.innerText = title; + uievent.elements.selectBackground.style.display = 'none'; + uievent.elements.selectFloor.style.display = 'none'; + uievent.elements.selectPointBox.style.display = 'none'; + uievent.elements.canvas.style.display = 'none'; + uievent.elements.usedFlags.style.display = 'none'; + uievent.elements.extraBody.style.display = 'block'; + uievent.elements.body.style.overflow = "auto"; + + uievent.elements.yes.onclick = function () { + var list = Array.from(document.getElementsByClassName('uieventCheckboxSet')).filter(function (one) { + return one.checked; + }).map(function (one) { + var value = one.getAttribute('key'); + if (one.getAttribute('_type') == 'number') value = parseFloat(value); + return value; + }); + uievent.close(); + if (callback) callback(list); + } + + var keys=Array.from(comments.key) + var prefixStrings=Array.from(comments.prefix) + for (var index = 0; index < value.length; index++) { + if (keys.indexOf(value[index])==-1) { + prefixStrings.push(value[index]+': ') + keys.push(value[index]) + } + } + var table = ''; + + for (var index = 0; index < keys.length; index++) { + var one = keys[index]; + if (index % 3 == 0) { + table += ''; + } + table += ``; + if (index % 3 == 2) { + table += ''; + } + } + if (keys.length % 3 != 0) table += ''; + table += '
    ${prefixStrings[index]}= 0? 'checked' : ''}/>
    '; + + uievent.elements.extraBody.innerHTML = "

    "+table+"

    "; + } + editor.constructor.prototype.uievent=uievent; } \ No newline at end of file diff --git a/_server/table/comment.js b/_server/table/comment.js index 14a709e0..eddc54cb 100644 --- a/_server/table/comment.js +++ b/_server/table/comment.js @@ -167,7 +167,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { }, "special": { "_leaf": true, - "_type": "checkboxSet", + "_type": "popCheckboxSet", "_checkboxSet":function(){ var array=functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a.enemys.getSpecials() var b=[],c=[]; @@ -175,7 +175,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { b.push(array[index][0]) var name = array[index][1]; if (name instanceof Function) name = name({}); - c.push((index%2==0&&index>0?'
    ':'')+name+'') + c.push(name+"("+array[index][0]+")") } return { "prefix":c, diff --git a/editor-mobile.html b/editor-mobile.html index de06dc87..60895ee4 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -558,8 +558,7 @@
    - - +
    diff --git a/editor.html b/editor.html index a03d70db..6e59f8c2 100644 --- a/editor.html +++ b/editor.html @@ -541,8 +541,7 @@
    - - +
    diff --git a/libs/control.js b/libs/control.js index f099f45b..2f599c52 100644 --- a/libs/control.js +++ b/libs/control.js @@ -695,11 +695,7 @@ control.prototype._moveHero_moving = function () { // 检测是否穿出去 var nx = core.nextX(), ny = core.nextY(); if (nx < 0 || nx >= core.bigmap.width || ny < 0 || ny >= core.bigmap.height) return; - core.status.heroMoving=-1; - core.eventMoveHero([core.getHeroLoc('direction')], core.values.moveSpeed, function () { - core.status.heroMoving=0; - move(); - }); + core.eventMoveHero([core.getHeroLoc('direction')], core.values.moveSpeed, move); } else { core.moveAction(); diff --git a/libs/events.js b/libs/events.js index 509e5092..7b2153d4 100644 --- a/libs/events.js +++ b/libs/events.js @@ -2856,10 +2856,12 @@ events.prototype.eventMoveHero = function(steps, time, callback) { var step = 0, moveSteps = (steps||[]).filter(function (t) { return ['up','down','left','right','forward','backward'].indexOf(t)>=0; }); + core.status.heroMoving = -1; var animate=window.setInterval(function() { if (moveSteps.length==0) { delete core.animateFrame.asyncId[animate]; clearInterval(animate); + core.status.heroMoving = 0; core.drawHero(); if (callback) callback(); } @@ -2912,6 +2914,7 @@ events.prototype.jumpHero = function (ex, ey, time, callback) { } events.prototype._jumpHero_doJump = function (jumpInfo, callback) { + core.status.heroMoving = -1; var animate = window.setInterval(function () { if (jumpInfo.jump_count > 0) core.events._jumpHero_jumping(jumpInfo) @@ -2940,6 +2943,7 @@ events.prototype._jumpHero_finished = function (animate, ex, ey, callback) { clearInterval(animate); core.setHeroLoc('x', ex); core.setHeroLoc('y', ey); + core.status.heroMoving = 0; core.drawHero(); if (callback) callback(); } diff --git a/libs/utils.js b/libs/utils.js index 6ada02f9..ae36a708 100644 --- a/libs/utils.js +++ b/libs/utils.js @@ -498,7 +498,7 @@ utils.prototype._encodeRoute_encodeOne = function (t) { else if (t.indexOf('choices:') == 0) return "C" + t.substring(8); else if (t.indexOf('shop:') == 0) - return "S" + t.substring(5); + return "S" + t.substring(5) + ":"; else if (t == 'turn') return 'T'; else if (t.indexOf('turn:') == 0) diff --git a/migration.html b/migration.html index e0e58b00..6765c92f 100644 --- a/migration.html +++ b/migration.html @@ -45,12 +45,6 @@ if (functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a.events.setInitData || !plugin
  • 部分方框进行了合并,请一个个仔细检查是否存在问题。
  • -
  • 下拉框切到「楼层属性」,并注意以下内容: -
      -
    • item_ratio被重命名为ratio,请自行修改。
    • -
    • 楼层贴图的结构在V2.7中被修改;请重新制作。
    • -
    -
  • 素材区的如下图块有所变动:
    • 三色墙和六色门从terrains中解除引用;请用animates中的进行绘制。
    • @@ -61,6 +55,13 @@ if (functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a.events.setInitData || !plugin
    • npc48的默认动画帧数null改回为4;如需静止状态请手动改成1。
  • +
  • 下拉框切到「楼层属性」,并注意以下内容: +
      +
    • item_ratio被重命名为ratio,请自行修改。
    • +
    • (你也可以直接改宝石和血瓶的效果,将core.status.thisMap.ratio改成core.status.thisMap.item_ratio。)
    • +
    • 楼层贴图的结构在V2.7中被修改;请重新制作。
    • +
    +
  • 下拉框切换到「脚本编辑」,并请重新编辑各个自己改过的函数(可以双开一个原版V266项目和当前接档的项目进行处理)。
    • 请注意:V2.7中的经验全部从experience替换成简写的exp;写伤害计算等时请尤其注意。
    • @@ -116,6 +117,10 @@ function encode(str) { })) } +function random_string() { + return (Math.random()+"_"+Math.random()+"_"+Math.random()).replace(".", ""); +} + // 接档全局属性 function action_data(callback) { var data = data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d; @@ -181,6 +186,11 @@ function action_data(callback) { delete values.greenJewel; delete values.moveSpeed; delete values.floorChangeTime; + + if (flags.enableExperience != null) { + flags.enableExp = flags.enableExperience; + delete flags.enableExperience; + } var statusList = [ "enableFloor", "enableName", @@ -208,6 +218,7 @@ function action_data(callback) { }); } statusList.forEach(function (one) { delete flags[one]; }); + delete flags.enableExperience; delete flags.pickaxeFourDirections; delete flags.bombFourDirections; delete flags.snowFourDirections; @@ -218,6 +229,7 @@ function action_data(callback) { delete flags.betweenAttackCeil; delete flags.startDirectly; delete flags.enableDisabledShop; + delete flags.potionWhileRouting; delete flags.checkConsole; // 写入 @@ -246,7 +258,7 @@ function action_enemys(callback) { var estr = JSON.stringify(enemy, function (k, t) { if (t && t.hp != null) { delete t.id; - var id_ = ":" + k + ":"; + var id_ = random_string(); emap[id_] = JSON.stringify(t); return id_; } else return t; @@ -340,7 +352,7 @@ function action_items(callback) { "text": "可以打开一扇红门", "hideInToolbox": true }, - "redGem": { + "redJewel": { "cls": "items", "name": "红宝石", "text": "攻击+${core.values.redGem}", @@ -349,7 +361,7 @@ function action_items(callback) { "useItemEffect": "core.status.hero.atk += core.values.redGem", "canUseItemEffect": "true" }, - "blueGem": { + "blueJewel": { "cls": "items", "name": "蓝宝石", "text": ",防御+${core.values.blueGem}", @@ -358,7 +370,7 @@ function action_items(callback) { "useItemEffect": "core.status.hero.def += core.values.blueGem", "canUseItemEffect": "true" }, - "greenGem": { + "greenJewel": { "cls": "items", "name": "绿宝石", "text": ",护盾+${core.values.greenGem}", @@ -367,7 +379,7 @@ function action_items(callback) { "useItemEffect": "core.status.hero.mdef += core.values.greenGem", "canUseItemEffect": "true" }, - "yellowGem": { + "yellowJewel": { "cls": "items", "name": "黄宝石", "text": "可以进行加点", @@ -513,12 +525,11 @@ function action_items(callback) { for (var id in data) { items[id] = data[id]; } + delete items.snow; var datastr = 'var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = \n'; - datastr += JSON.stringify(items, function (k, v) { - if (v && v.id != null) delete v.id; - return v; - }, '\t'); + for (var id in items) delete items[id].id; + datastr += JSON.stringify(items, null, '\t'); fs.writeFile('project/items.js', encode(datastr), 'base64', function (err, data) { if (err) { alert('items接档失败!请查看控制台报错,并刷新重试。'); @@ -570,7 +581,7 @@ function action_maps(callback) { var emap = {}; var estr = JSON.stringify(maps, function (k, v) { if (v && v.id != null) { - var id_ = ':' + v.id + ':'; + var id_ = random_string(); emap[id_] = JSON.stringify(v); return id_; } else return v diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index 7b9ea9b0..18a0e758 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -68,9 +68,10 @@ (不处理;现在静止状态可以有帧动画了,所以不考虑行走过程动画) 行走动画 (已完成!) 合并main中一些设置内容 (已完成!) \t[this], 勇士朝下,flag:arg清理,瞬移扣血 -(OK) 同步存档合并;(OK) 失去焦点右键;(OK) 竖屏标题界面背景 +(OK) 同步存档合并;(OK) 失去焦点右键;(OK) 竖屏标题界面背景;(OK)商店录像bug (OK) 右键反复弹出;(OK) 上下楼梯绑定楼传;(OK) 属性框出现0问题;(OK) 上下楼点选点 -地图编辑框无效;jumpHero和帧动画冲突;图片化文本翻转;bookDetails重复计算buff +地图编辑框无效;(OK) jumpHero和帧动画冲突;bookDetails重复计算buff;(OK) 怪物属性多选 +图片化文本翻转;绘制矩形(边框)旋转; ------------- From b6ecb6526e45f1c3b6db5f44e8916a4cf0df931c Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Mon, 25 May 2020 13:15:35 +0800 Subject: [PATCH 11/73] reset config.json --- _server/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_server/config.json b/_server/config.json index 13bd3550..0414c1bc 100644 --- a/_server/config.json +++ b/_server/config.json @@ -1 +1 @@ -{"lastUsed":[{"idnum":10016,"id":"X10016","images":"magictower.png","x":0,"y":2,"isTile":true,"recent":1590311075105,"frequent":1}],"foldPerCol":50,"folded":false,"editorLastFloorId":"sample1","disableBlocklyReplace":false,"disableBlocklyExpandCompare":false,"shortcut":{"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0}} \ No newline at end of file +{"lastUsed":[],"foldPerCol":50,"folded":false,"editorLastFloorId":"sample0","disableBlocklyReplace":false,"disableBlocklyExpandCompare":false,"shortcut":{"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0}} \ No newline at end of file From 9f139d1a7a47349288c5fce659c12f80d64ba999 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Mon, 25 May 2020 19:51:27 +0800 Subject: [PATCH 12/73] =?UTF-8?q?=E7=BB=98=E5=88=B6=E7=9F=A9=E5=BD=A2?= =?UTF-8?q?=E5=92=8C=E5=9B=BE=E7=89=87=E6=97=8B=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 86 ++++++++++++++++----------------- _server/MotaActionParser.js | 21 +++----- _server/editor_blocklyconfig.js | 1 - _server/editor_table.js | 6 ++- libs/events.js | 13 +++-- libs/ui.js | 80 +++++++++++++++++++++++------- migration.html | 2 +- v2.x-final更新.txt | 2 +- 8 files changed, 126 insertions(+), 85 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 6dfaeebe..77f19381 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -688,7 +688,6 @@ action | callLoad_s | previewUI_s | clearMap_s - | clearMap_1_s | setAttribute_s | fillText_s | fillBoldText_s @@ -1769,7 +1768,7 @@ return code; showTextImage_s : '显示图片化文本' '文本内容' EvalString BGNL? - '图片编号' Int '起点像素' 'x' PosString 'y' PosString '行距' Number '不透明度' Number '时间' Int '不等待执行完毕' Bool Newline + '图片编号' Int '起点像素' 'x' PosString 'y' PosString '行距' Number '翻转' Reverse_List '不透明度' Number '时间' Int '不等待执行完毕' Bool Newline /* showTextImage_s @@ -1777,10 +1776,13 @@ tooltip : showTextImage:显示图片化文本 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showTextImage%ef%bc%9a%e6%98%be%e7%a4%ba%e6%96%87%e6%9c%ac%e5%8c%96%e5%9b%be%e7%89%87 doubleclicktext : EvalString_0 colour : this.printColor -default : ["可以使用setText事件来控制字体、颜色、大小、偏移量等",1,"0","0",1.4,1,0,false] +default : ["可以使用setText事件来控制字体、颜色、大小、偏移量等",1,"0","0",1.4,"null",1,0,false] if(Int_0<=0 || Int_0>50) throw new Error('图片编号在1~50之间'); +if (Reverse_List_0 && Reverse_List_0 != 'null') { + Reverse_List_0 = ', "reverse": "' + Reverse_List_0 + '"'; +} else Reverse_List_0 = ''; var async = Bool_0?', "async": true':''; -var code = '{"type": "showTextImage", "code": '+Int_0+', "text": "'+EvalString_0+'", "loc": ['+PosString_0+','+PosString_1+'], "lineHeight": '+Number_0+', "opacity": '+Number_1+', "time": '+Int_1+async+'},\n'; +var code = '{"type": "showTextImage", "code": '+Int_0+', "text": "'+EvalString_0+'", "loc": ['+PosString_0+','+PosString_1+'], "lineHeight": '+Number_0+Reverse_List_0+', "opacity": '+Number_1+', "time": '+Int_1+async+'},\n'; return code; */; @@ -1800,7 +1802,7 @@ return code; */; showGif_s - : '显示动图' EvalString? '起点像素位置' 'x' PosString? 'y' PosString? Newline + : '显示或清除动图' EvalString? '起点像素位置' 'x' PosString? 'y' PosString? Newline /* showGif_s @@ -2501,29 +2503,19 @@ return code; clearMap_s - : '清除画布' '起点像素' 'x' PosString 'y' PosString '宽' PosString '高' PosString Newline + : '清除画布' '起点像素' 'x' PosString? 'y' PosString? '宽' PosString? '高' PosString? Newline /* clearMap_s tooltip : clearMap: 清除画布 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=clearMap%ef%bc%9a%e6%b8%85%e9%99%a4%e7%94%bb%e5%b8%83 colour : this.subColor -default : ["0", "0", "100", "100"] +default : ["", "", "", ""] previewBlock : true -var code = '{"type": "clearMap", "x": ' + PosString_0 + ', "y": ' + PosString_1 + - ', "width": ' + PosString_2 + ', "height": ' + PosString_3 + '},\n'; -return code; -*/; - - -clearMap_1_s - : '清空画布' Newline - -/* clearMap_1_s -tooltip : clearMap: 清除画布 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=clearMap%ef%bc%9a%e6%b8%85%e9%99%a4%e7%94%bb%e5%b8%83 -previewBlock : true -colour : this.subColor -var code = '{"type": "clearMap"},\n'; +PosString_0 = PosString_0 && (', "x": ' + PosString_0); +PosString_1 = PosString_1 && (', "y": ' + PosString_1); +PosString_2 = PosString_2 && (', "width": ' + PosString_2); +PosString_3 = PosString_3 && (', "height": ' + PosString_3); +var code = '{"type": "clearMap"'+PosString_0+PosString_1+PosString_2+PosString_3+'},\n'; return code; */; @@ -2606,33 +2598,35 @@ return code; */; fillRect_s - : '绘制矩形' '起点像素' 'x' PosString 'y' PosString '宽' PosString '高' PosString '圆角半径' PosString? '颜色' ColorString? Colour Newline + : '绘制矩形' '起点像素' 'x' PosString 'y' PosString '宽' PosString '高' PosString '圆角半径' PosString? '旋转度数' PosString? '颜色' ColorString? Colour Newline /* fillRect_s tooltip : fillRect:绘制矩形 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillRect%ef%bc%9a%e7%bb%98%e5%88%b6%e7%9f%a9%e5%bd%a2 colour : this.subColor previewBlock : true -default : ["0","0","flag:x","300","","",null] +default : ["0","0","flag:x","300","","","","rgba(255,255,255,1)"] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; PosString_4 = PosString_4 ? (', "radius": '+PosString_4) : ''; -var code = '{"type": "fillRect", "x": '+PosString_0+', "y": '+PosString_1+', "width": '+PosString_2+', "height": '+PosString_3+PosString_4+ColorString_0+'},\n'; +PosString_5 = PosString_5 ? (', "angle": ' + PosString_5) : ''; +var code = '{"type": "fillRect", "x": '+PosString_0+', "y": '+PosString_1+', "width": '+PosString_2+', "height": '+PosString_3+PosString_4+PosString_5+ColorString_0+'},\n'; return code; */; strokeRect_s - : '绘制矩形边框' '起点像素' 'x' PosString 'y' PosString '宽' PosString '高' PosString '圆角半径' PosString? '颜色' ColorString? Colour '线宽' IntString? Newline + : '绘制矩形边框' '起点像素' 'x' PosString 'y' PosString '宽' PosString '高' PosString '圆角半径' PosString? '旋转度数' PosString? '颜色' ColorString? Colour '线宽' IntString? Newline /* strokeRect_s tooltip : strokeRect:绘制矩形边框 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=strokeRect%ef%bc%9a%e7%bb%98%e5%88%b6%e7%9f%a9%e5%bd%a2%e8%be%b9%e6%a1%86 colour : this.subColor previewBlock : true -default : ["0","0","flag:x","300","","",null,""] +default : ["0","0","flag:x","300","","","","rgba(255,255,255,1)",""] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; IntString_0 = IntString_0 ? (', "lineWidth": '+IntString_0) : ''; PosString_4 = PosString_4 ? (', "radius": '+PosString_4) : ''; -var code = '{"type": "strokeRect", "x": '+PosString_0+', "y": '+PosString_1+', "width": '+PosString_2+', "height": '+PosString_3+PosString_4+ColorString_0+IntString_0+'},\n'; +PosString_5 = PosString_5 ? (', "angle": ' + PosString_5) : ''; +var code = '{"type": "strokeRect", "x": '+PosString_0+', "y": '+PosString_1+', "width": '+PosString_2+', "height": '+PosString_3+PosString_4+PosString_5+ColorString_0+IntString_0+'},\n'; return code; */; @@ -2644,7 +2638,7 @@ tooltip : drawLine:绘制线段 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawLine%ef%bc%9a%e7%bb%98%e5%88%b6%e7%ba%bf%e6%ae%b5 colour : this.subColor previewBlock : true -default : ["0","0","flag:x","300","",null,""] +default : ["0","0","flag:x","300","","rgba(255,255,255,1)",""] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; IntString_0 = IntString_0 ? (', "lineWidth": '+IntString_0) : ''; var code = '{"type": "drawLine", "x1": '+PosString_0+', "y1": '+PosString_1+', "x2": '+PosString_2+', "y2": '+PosString_3+ColorString_0+IntString_0+'},\n'; @@ -2659,7 +2653,7 @@ tooltip : drawArrow:绘制箭头 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawArrow%ef%bc%9a%e7%bb%98%e5%88%b6%e7%ae%ad%e5%a4%b4 colour : this.subColor previewBlock : true -default : ["0","0","flag:x","300","",null,""] +default : ["0","0","flag:x","300","","rgba(255,255,255,1)",""] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; IntString_0 = IntString_0 ? (', "lineWidth": '+IntString_0) : ''; var code = '{"type": "drawArrow", "x1": '+PosString_0+', "y1": '+PosString_1+', "x2": '+PosString_2+', "y2": '+PosString_3+ColorString_0+IntString_0+'},\n'; @@ -2675,7 +2669,7 @@ tooltip : fillPolygon:绘制多边形 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillPolygon%ef%bc%9a%e7%bb%98%e5%88%b6%e5%a4%9a%e8%be%b9%e5%bd%a2 colour : this.subColor previewBlock : true -default : ["0,0,100","0,100,0","",null] +default : ["0,0,100","0,100,0","","rgba(255,255,255,1)"] var pattern2 = /^([+-]?\d+)(,[+-]?\d+)*$/; if(!pattern2.test(EvalString_0) || !pattern2.test(EvalString_1))throw new Error('坐标格式错误,请右键点击帮助查看格式'); EvalString_0=EvalString_0.split(','); @@ -2696,7 +2690,7 @@ tooltip : strokePolygon:绘制多边形边框 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=strokePolygon%ef%bc%9a%e7%bb%98%e5%88%b6%e5%a4%9a%e8%be%b9%e5%bd%a2%e8%be%b9%e6%a1%86 colour : this.subColor previewBlock : true -default : ["0,0,100","0,100,0","",null,""] +default : ["0,0,100","0,100,0","","rgba(255,255,255,1)",""] var pattern2 = /^([+-]?\d+)(,[+-]?\d+)*$/; if(!pattern2.test(EvalString_0) || !pattern2.test(EvalString_1))throw new Error('坐标格式错误,请右键点击帮助查看格式'); EvalString_0=EvalString_0.split(','); @@ -2710,14 +2704,14 @@ return code; */; fillEllipse_s - : '绘制椭圆' '中心' 'x' PosString 'y' PosString '长半径' PosString '短半径' PosString '顺时针旋转度数' PosString? '颜色' ColorString? Colour Newline + : '绘制椭圆' '中心' 'x' PosString 'y' PosString '长半径' PosString '短半径' PosString '旋转度数' PosString? '颜色' ColorString? Colour Newline /* fillEllipse_s tooltip : fillEllipse:绘制椭圆 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillEllipse%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9c%86 colour : this.subColor previewBlock : true -default : ["0","0","100","100","0","",null] +default : ["0","0","100","100","0","","rgba(255,255,255,1)"] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; PosString_4 = PosString_4 ? (', "angle": ' + PosString_4) : ''; var code = '{"type": "fillEllipse", "x": '+PosString_0+', "y": '+PosString_1+', "a": '+PosString_2+', "b": '+PosString_3+PosString_4+ColorString_0+'},\n'; @@ -2725,14 +2719,14 @@ return code; */; strokeEllipse_s - : '绘制椭圆边框' '中心' 'x' PosString 'y' PosString '长半径' PosString '短半径' PosString '顺时针旋转度数' PosString? '颜色' ColorString? Colour '线宽' IntString? Newline + : '绘制椭圆边框' '中心' 'x' PosString 'y' PosString '长半径' PosString '短半径' PosString '旋转度数' PosString? '颜色' ColorString? Colour '线宽' IntString? Newline /* strokeEllipse_s tooltip : strokeEllipse:绘制椭圆边框 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=strokeEllipse%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9c%86%e8%be%b9%e6%a1%86 colour : this.subColor previewBlock : true -default : ["0","0","100","100","0","",null,""] +default : ["0","0","100","100","0","","rgba(255,255,255,1)",""] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; IntString_0 = IntString_0 ? (', "lineWidth": '+IntString_0) : ''; PosString_4 = PosString_4 ? (', "angle": ' + PosString_4) : ''; @@ -2747,7 +2741,7 @@ fillArc_s tooltip : fillArc:绘制扇形 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillEllipse%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9c%86 colour : this.subColor -default : ["0","0","100","0","90","",null,""] +default : ["0","0","100","0","90","","rgba(255,255,255,1)",""] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; var code = '{"type": "fillArc", "x": '+PosString_0+', "y": '+PosString_1+', "r": '+PosString_2+', "start": '+PosString_3+', "end": '+PosString_4+ColorString_0+'},\n'; return code; @@ -2761,7 +2755,7 @@ strokeArc_s tooltip : strokeArc:绘制弧 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillEllipse%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9c%86 colour : this.subColor -default : ["0","0","100","0","90","",null,""] +default : ["0","0","100","0","90","","rgba(255,255,255,1)",""] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; IntString_0 = IntString_0 ? (', "lineWidth": '+IntString_0) : ''; var code = '{"type": "strokeArc", "x": '+PosString_0+', "y": '+PosString_1+', "r": '+PosString_2+', "start": '+PosString_3+', "end": '+PosString_4+ColorString_0+IntString_0+'},\n'; @@ -2771,7 +2765,7 @@ return code; drawImage_s - : '绘制图片' EvalString '翻转' Reverse_List '起点像素' 'x' PosString 'y' PosString '宽' PosString? '高' PosString? Newline + : '绘制图片' EvalString '翻转' Reverse_List '起点像素' 'x' PosString 'y' PosString '宽' PosString? '高' PosString? '旋转度数' PosString? Newline /* drawImage_s @@ -2779,35 +2773,37 @@ tooltip : drawImage:绘制图片 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawImage%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9b%be%e7%89%87 previewBlock : true allImages : ['EvalString_0'] -default : ["bg.jpg","null","0","0","",""] +default : ["bg.jpg","null","0","0","","",""] colour : this.subColor if (Reverse_List_0 && Reverse_List_0 != 'null') { Reverse_List_0 = ', "reverse": "' + Reverse_List_0 + '"'; } else Reverse_List_0 = ''; PosString_2 = PosString_2 ? (', "w": '+PosString_2) : ''; PosString_3 = PosString_3 ? (', "h": '+PosString_3) : ''; -var code = '{"type": "drawImage", "image": "'+EvalString_0+'"'+Reverse_List_0+', "x": '+PosString_0+', "y": '+PosString_1+PosString_2+PosString_3+'},\n'; +PosString_4 = PosString_4 ? (', "angle": ' + PosString_4) : ''; +var code = '{"type": "drawImage", "image": "'+EvalString_0+'"'+Reverse_List_0+', "x": '+PosString_0+', "y": '+PosString_1+PosString_2+PosString_3+PosString_4+'},\n'; return code; */; drawImage_1_s : '绘制图片' EvalString '翻转' Reverse_List '裁剪的起点像素' 'x' PosString 'y' PosString '宽' PosString '高' PosString BGNL? - '绘制的起点像素' 'x' PosString 'y' PosString '宽' PosString '高' PosString Newline + '绘制的起点像素' 'x' PosString 'y' PosString '宽' PosString '高' PosString '旋转度数' PosString? Newline /* drawImage_1_s tooltip : drawImage:绘制图片 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawImage%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9b%be%e7%89%87 -default : ["bg.jpg","0","0","32","32","0","0","32","32"] +default : ["bg.jpg","null","0","0","32","32","0","0","32","32",""] colour : this.subColor allImages : ['EvalString_0'] previewBlock : true if (Reverse_List_0 && Reverse_List_0 != 'null') { Reverse_List_0 = ', "reverse": "' + Reverse_List_0 + '"'; } else Reverse_List_0 = ''; +PosString_8 = PosString_8 ? (', "angle": ' + PosString_8) : ''; var code = '{"type": "drawImage", "image": "'+EvalString_0+'"'+Reverse_List_0+ ', "x": '+PosString_0+', "y": '+PosString_1+', "w": '+PosString_2+', "h": '+PosString_3+ - ', "x1": '+PosString_4+', "y1": '+PosString_5+', "w1": '+PosString_6+', "h1": '+PosString_7+'},\n'; + ', "x1": '+PosString_4+', "y1": '+PosString_5+', "w1": '+PosString_6+', "h1": '+PosString_7+PosString_8+'},\n'; return code; */; @@ -2836,7 +2832,7 @@ drawBackground_s /* drawBackground_s tooltip : drawBackground:绘制背景 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawBackground%ef%bc%9a%e7%bb%98%e5%88%b6%e8%83%8c%e6%99%af%e5%9b%be -default : ["winskin.png",null,"0","0","100","100"] +default : ["winskin.png","rgba(255,255,255,1)","0","0","100","100"] colour : this.subColor previewBlock : true var colorRe = MotaActionFunctions.pattern.colorRe; diff --git a/_server/MotaActionParser.js b/_server/MotaActionParser.js index a5779d8e..6086dd5e 100644 --- a/_server/MotaActionParser.js +++ b/_server/MotaActionParser.js @@ -439,7 +439,7 @@ ActionParser.prototype.parseAction = function() { case "showTextImage": // 显示图片化文本 data.loc=data.loc||['',''] this.next = MotaActionBlocks['showTextImage_s'].xmlText([ - this.EvalString(data.text),data.code,data.loc[0],data.loc[1],data.lineHeight||1.4,data.opacity,data.time||0,data.async||false,this.next]); + this.EvalString(data.text),data.code,data.loc[0],data.loc[1],data.lineHeight||1.4,data.reverse,data.opacity,data.time||0,data.async||false,this.next]); break; case "moveImage": // 移动图片 data.to=data.to||['',''] @@ -766,14 +766,9 @@ ActionParser.prototype.parseAction = function() { ]); break; case "clearMap": // 清除画布 - if (data.x != null && data.y != null && data.width != null && data.height != null) { - this.next = MotaActionBlocks['clearMap_s'].xmlText([ - data.x, data.y, data.width, data.height, this.next - ]); - } - else { - this.next = MotaActionBlocks['clearMap_1_s'].xmlText([this.next]); - } + this.next = MotaActionBlocks['clearMap_s'].xmlText([ + data.x, data.y, data.width, data.height, this.next + ]); break; case "setAttribute": // 设置画布属性 data.fillStyle=this.Colour(data.fillStyle); @@ -805,13 +800,13 @@ ActionParser.prototype.parseAction = function() { case "fillRect": // 绘制矩形 data.style = this.Colour(data.style); this.next = MotaActionBlocks['fillRect_s'].xmlText([ - data.x, data.y, data.width, data.height, data.radius, data.style, 'rgba('+data.style+')', this.next + data.x, data.y, data.width, data.height, data.radius, data.angle, data.style, 'rgba('+data.style+')', this.next ]); break; case "strokeRect": // 绘制矩形边框 data.style = this.Colour(data.style); this.next = MotaActionBlocks['strokeRect_s'].xmlText([ - data.x, data.y, data.width, data.height, data.radius, data.style, 'rgba('+data.style+')', data.lineWidth, this.next + data.x, data.y, data.width, data.height, data.radius, data.angle, data.style, 'rgba('+data.style+')', data.lineWidth, this.next ]); break; case "drawLine": // 绘制线段 @@ -875,12 +870,12 @@ ActionParser.prototype.parseAction = function() { case "drawImage": // 绘制图片 if (data.x1 != null && data.y1 != null && data.w1 != null && data.h1 != null) { this.next = MotaActionBlocks['drawImage_1_s'].xmlText([ - data.image, data.reverse, data.x, data.y, data.w, data.h, data.x1, data.y1, data.w1, data.h1, this.next + data.image, data.reverse, data.x, data.y, data.w, data.h, data.x1, data.y1, data.w1, data.h1, data.angle, this.next ]); } else { this.next = MotaActionBlocks['drawImage_s'].xmlText([ - data.image, data.reverse, data.x, data.y, data.w, data.h, this.next + data.image, data.reverse, data.x, data.y, data.w, data.h, data.angle, this.next ]); } break; diff --git a/_server/editor_blocklyconfig.js b/_server/editor_blocklyconfig.js index ac01d954..9fec43a7 100644 --- a/_server/editor_blocklyconfig.js +++ b/_server/editor_blocklyconfig.js @@ -204,7 +204,6 @@ editor_blocklyconfig=(function(){ 'UI绘制':[ MotaActionBlocks['previewUI_s'].xmlText(), MotaActionBlocks['clearMap_s'].xmlText(), - MotaActionBlocks['clearMap_1_s'].xmlText(), MotaActionBlocks['setAttribute_s'].xmlText(), MotaActionBlocks['fillText_s'].xmlText(), MotaActionBlocks['fillBoldText_s'].xmlText(), diff --git a/_server/editor_table.js b/_server/editor_table.js index bc0410e7..2a0324f9 100644 --- a/_server/editor_table.js +++ b/_server/editor_table.js @@ -52,8 +52,10 @@ editor_table_wrapper = function (editor) { editor_table.prototype.editGrid = function (showComment, type) { var list = []; if (showComment) list.push(""); - if (type != 'select' && type != 'checkbox' && type != 'checkboxSet' && type != 'disable') + if (type != 'select' && type != 'checkbox' && type != 'checkboxSet' && type != 'popCheckboxSet' && type != 'disable') list.push(""); + if (type == 'popCheckboxSet') + list.push(""); if (type == 'disable') list.push(""); return list.join(' '); } @@ -290,7 +292,7 @@ editor_table_wrapper = function (editor) { case 'checkboxSet': return editor.table.checkboxSet(thiseval, cobj._checkboxSet.key, cobj._checkboxSet.prefix); default: - return editor.table.textarea(thiseval, cobj.indent || 0, cobj._type == 'disable' || cobj._type == 'popCheckboxSet'); + return editor.table.textarea(thiseval, cobj.indent || 0, cobj._type == 'disable'); } } diff --git a/libs/events.js b/libs/events.js index 7b2153d4..87385c7d 100644 --- a/libs/events.js +++ b/libs/events.js @@ -1154,13 +1154,15 @@ events.prototype.__precompile_getArray = function () { "fillArc", "strokeArc", "drawIcon", "drawSelector", "drawBackground", ]; var others = { - "fillEllipse": ["a", "b"], - "strokeEllipse": ["a", "b"], + "fillEllipse": ["a", "b", "angle"], + "strokeEllipse": ["a", "b", "angle"], + "fillRect": ["radius", "angle"], + "strokeRect": ["radius", "angle"], "fillArc": ["r", "start", "end"], "strokeArc": ["r", "start", "end"], "drawLine": ["x1", "y1", "x2", "y2"], "drawArrow": ["x1", "y1", "x2", "y2"], - "drawImage": ["x", "y", "w", "h", "x1", "y1", "w1", "h1"], + "drawImage": ["x", "y", "w", "h", "x1", "y1", "w1", "h1", "angle"], "drawTextContent": ["left", "top"], }; return { @@ -1471,8 +1473,11 @@ events.prototype._action_showTextImage = function (data, x, y, prefix) { var loc = this.__action_getLoc(data.loc, 0, 0, prefix); if (core.isReplaying()) data.time = 0; data.text = core.replaceText(data.text, prefix); + var __tmpName = (Math.random()+"_"+Math.random()).replace(/\./g, "") + ".png"; + core.material.images.images[__tmpName] = core.ui.textImage(data.text); this.__action_doAsyncFunc(data.async || data.time == 0, core.showImage, - data.code, core.ui.textImage(data.text), null, loc, data.opacity, data.time); + data.code, __tmpName + (data.reverse || ""), null, loc, data.opacity, data.time); + delete core.material.images.images[__tmpName]; } events.prototype._action_hideImage = function (data, x, y, prefix) { diff --git a/libs/ui.js b/libs/ui.js index 14f37612..ad2d4215 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -126,61 +126,103 @@ ui.prototype._uievent_fillBoldText = function (data) { } ////// 在某个canvas上绘制一个矩形 ////// -ui.prototype.fillRect = function (name, x, y, width, height, style) { +ui.prototype.fillRect = function (name, x, y, width, height, style, angle) { if (style) core.setFillStyle(name, style); var ctx = this.getContextByName(name); - if (ctx) ctx.fillRect(x, y, width, height); + if (ctx) { + if (angle) { + ctx.save(); + ctx.translate(x + width / 2, y + height / 2); + ctx.rotate(angle); + ctx.translate(-x - width / 2, -y - height / 2); + } + ctx.fillRect(x, y, width, height); + if (angle) { + ctx.restore(); + } + } } ui.prototype._uievent_fillRect = function (data) { this._createUIEvent(); if (data.radius) { - this.fillRoundRect('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.width), core.calValue(data.height), core.calValue(data.radius), data.style); + this.fillRoundRect('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.width), core.calValue(data.height), + core.calValue(data.radius), data.style, (core.calValue(data.angle) || 0) * Math.PI / 180); } else { - this.fillRect('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.width), core.calValue(data.height), data.style); + this.fillRect('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.width), core.calValue(data.height), + data.style, (core.calValue(data.angle) || 0) * Math.PI / 180); } } ////// 在某个canvas上绘制一个矩形的边框 ////// -ui.prototype.strokeRect = function (name, x, y, width, height, style, lineWidth) { +ui.prototype.strokeRect = function (name, x, y, width, height, style, lineWidth, angle) { if (style) core.setStrokeStyle(name, style); if (lineWidth) core.setLineWidth(name, lineWidth); var ctx = this.getContextByName(name); - if (ctx) ctx.strokeRect(x, y, width, height); + if (ctx) { + if (angle) { + ctx.save(); + ctx.translate(x + width / 2, y + height / 2); + ctx.rotate(angle); + ctx.translate(-x - width / 2, -y - height / 2); + } + ctx.strokeRect(x, y, width, height); + if (angle) { + ctx.restore(); + } + } } ui.prototype._uievent_strokeRect = function (data) { this._createUIEvent(); if (data.radius) { this.strokeRoundRect('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.width), core.calValue(data.height), - core.calValue(data.radius), data.style, data.lineWidth); + core.calValue(data.radius), data.style, data.lineWidth, (core.calValue(data.angle) || 0) * Math.PI / 180); } else { - this.strokeRect('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.width), core.calValue(data.height), data.style, data.lineWidth); + this.strokeRect('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.width), core.calValue(data.height), + data.style, data.lineWidth, (core.calValue(data.angle) || 0) * Math.PI / 180); } } ////// 在某个canvas上绘制一个圆角矩形 ////// -ui.prototype.fillRoundRect = function (name, x, y, width, height, radius, style) { +ui.prototype.fillRoundRect = function (name, x, y, width, height, radius, style, angle) { if (style) core.setFillStyle(name, style); var ctx = this.getContextByName(name); if (ctx) { + if (angle) { + ctx.save(); + ctx.translate(x + width / 2, y + height / 2); + ctx.rotate(angle); + ctx.translate(-x - width / 2, -y - height / 2); + } this._roundRect_buildPath(ctx, x, y, width, height, radius); ctx.fill(); + if (angle) { + ctx.restore(); + } } } ////// 在某个canvas上绘制一个圆角矩形的边框 ////// -ui.prototype.strokeRoundRect = function (name, x, y, width, height, radius, style, lineWidth) { +ui.prototype.strokeRoundRect = function (name, x, y, width, height, radius, style, lineWidth, angle) { if (style) core.setStrokeStyle(name, style); if (lineWidth) core.setLineWidth(name, lineWidth); var ctx = this.getContextByName(name); if (ctx) { + if (angle) { + ctx.save(); + ctx.translate(x + width / 2, y + height / 2); + ctx.rotate(angle); + ctx.translate(-x - width / 2, -y - height / 2); + } this._roundRect_buildPath(ctx, x, y, width, height, radius); ctx.stroke(); + if (angle) { + ctx.restore(); + } } } - ui.prototype._roundRect_buildPath = function (ctx, x, y, width, height, radius) { ctx.beginPath(); ctx.moveTo(x + radius, y); @@ -504,7 +546,7 @@ ui.prototype.splitLines = function (name, text, maxWidth, font) { } ////// 绘制一张图片 ////// -ui.prototype.drawImage = function (name, image, x, y, w, h, x1, y1, w1, h1) { +ui.prototype.drawImage = function (name, image, x, y, w, h, x1, y1, w1, h1, angle) { // 检测文件名以 :x, :y, :o 结尾,表示左右翻转,上下翻转和中心翻转 var ctx = this.getContextByName(name); if (!ctx) return; @@ -516,7 +558,7 @@ ui.prototype.drawImage = function (name, image, x, y, w, h, x1, y1, w1, h1) { } image = core.getMappedName(image); image = core.material.images.images[image]; - if (!image || !(image instanceof Image)) return; + if (!image) return; } var scale = { @@ -533,23 +575,25 @@ ui.prototype.drawImage = function (name, image, x, y, w, h, x1, y1, w1, h1) { h = image.height; } if (x1 != null && y1 != null && w1 != null && h1 != null) { - if (reverse == null) { + if (!reverse && !angle) { ctx.drawImage(image, x, y, w, h, x1, y1, w1, h1); } else { ctx.save(); ctx.translate(x1 + w1 / 2, y1 + h1 / 2); - ctx.scale(scale[reverse][0], scale[reverse][1]); + if (reverse) ctx.scale(scale[reverse][0], scale[reverse][1]); + if (angle) ctx.rotate(angle); ctx.drawImage(image, x, y, w, h, -w1 / 2, -h1 / 2, w1, h1); ctx.restore(); } return; } - if (reverse == null) { + if (!reverse && !angle) { ctx.drawImage(image, x, y, w, h); } else { ctx.save(); ctx.translate(x + w / 2, y + h / 2); - ctx.scale(scale[reverse][0], scale[reverse][1]); + if (reverse) ctx.scale(scale[reverse][0], scale[reverse][1]); + if (angle) ctx.rotate(angle); ctx.drawImage(image, -w / 2, -h / 2, w, h); ctx.restore(); } @@ -560,7 +604,7 @@ ui.prototype.drawImage = function (name, image, x, y, w, h, x1, y1, w1, h1) { ui.prototype._uievent_drawImage = function (data) { this._createUIEvent(); this.drawImage('uievent', data.image + (data.reverse || ''), core.calValue(data.x), core.calValue(data.y), core.calValue(data.w), core.calValue(data.h), - core.calValue(data.x1), core.calValue(data.y1), core.calValue(data.w1), core.calValue(data.h1)); + core.calValue(data.x1), core.calValue(data.y1), core.calValue(data.w1), core.calValue(data.h1), (core.calValue(data.angle) || 0) * Math.PI / 180); } ui.prototype.drawIcon = function (name, id, x, y, w, h, frame) { diff --git a/migration.html b/migration.html index 6765c92f..df5a4697 100644 --- a/migration.html +++ b/migration.html @@ -118,7 +118,7 @@ function encode(str) { } function random_string() { - return (Math.random()+"_"+Math.random()+"_"+Math.random()).replace(".", ""); + return (Math.random()+"_"+Math.random()).replace(/\./g, ""); } // 接档全局属性 diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index 18a0e758..713409f3 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -71,7 +71,7 @@ (OK) 同步存档合并;(OK) 失去焦点右键;(OK) 竖屏标题界面背景;(OK)商店录像bug (OK) 右键反复弹出;(OK) 上下楼梯绑定楼传;(OK) 属性框出现0问题;(OK) 上下楼点选点 地图编辑框无效;(OK) jumpHero和帧动画冲突;bookDetails重复计算buff;(OK) 怪物属性多选 -图片化文本翻转;绘制矩形(边框)旋转; +(OK) 图片化文本翻转;(OK) 绘制矩形(边框)旋转; ------------- From f90814b5ffcea776f934235523ea7e830599cf07 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 26 May 2020 10:49:43 +0800 Subject: [PATCH 13/73] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E6=A1=86=E7=9A=84bug;=E5=B9=B2=E6=8E=89?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E9=81=97=E7=95=99=E7=9A=84=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/css/editor.css | 7 +- _server/css/editor_mobile.css | 2 +- _server/editor.js | 4 +- _server/editor_datapanel.js | 206 +++++++++++--------------------- _server/editor_mappanel.js | 24 +--- _server/editor_materialpanel.js | 5 +- _server/editor_mode.js | 2 +- _server/editor_ui.js | 200 ++++++------------------------- editor-mobile.html | 18 +-- editor.html | 19 +-- v2.x-final更新.txt | 3 +- 11 files changed, 132 insertions(+), 358 deletions(-) diff --git a/_server/css/editor.css b/_server/css/editor.css index 83b262bd..cc930a64 100644 --- a/_server/css/editor.css +++ b/_server/css/editor.css @@ -178,7 +178,12 @@ body { border: 1px solid #ccc; border-radius: 2px; font-size: 15px; - line-height: 14px; + line-height: 18px; +} + +#tip p { + margin-top: 10px; + margin-bottom: 10px; } .files { diff --git a/_server/css/editor_mobile.css b/_server/css/editor_mobile.css index 6dfaa651..a222d029 100644 --- a/_server/css/editor_mobile.css +++ b/_server/css/editor_mobile.css @@ -153,7 +153,7 @@ body { border: 1px solid #ccc; border-radius: 2px; font-size: 1rem; - line-height: 0.93rem; + line-height: 1.2rem; } #tip p{ diff --git a/_server/editor.js b/_server/editor.js index ac96b53b..620fa1a5 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -232,7 +232,6 @@ editor.prototype.init = function (callback) { if (Boolean(callback)) callback(); } - } @@ -410,6 +409,7 @@ editor.prototype.updateMap = function () { } // 绘制地图 end + editor.drawEventBlock(); this.updateLastUsedMap(); } @@ -691,7 +691,7 @@ editor.prototype.setSelectBoxFromInfo=function(thisevent, scrollTo){ editor.updateLastUsedMap(); }); editor.info = JSON.parse(JSON.stringify(thisevent)); - tip.infos(JSON.parse(JSON.stringify(thisevent))); + editor.uifunctions.showBlockInfo(JSON.parse(JSON.stringify(thisevent))); editor.pos=pos; editor_mode.onmode('nextChange'); editor_mode.onmode('enemyitem'); diff --git a/_server/editor_datapanel.js b/_server/editor_datapanel.js index 52ba9422..ac110b90 100644 --- a/_server/editor_datapanel.js +++ b/_server/editor_datapanel.js @@ -6,118 +6,18 @@ editor_datapanel_wrapper = function (editor) { //////////////////// 地图编辑 ////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// - // 由于历史遗留原因, 以下变量作为全局变量使用 - // pout exportMap mapEditArea mapEditArea copyMap clearMapButton deleteMap - window.pout = document.getElementById('pout') - window.exportMap = document.getElementById('exportMap') - exportMap.isExport=false - exportMap.onclick=function(){ - editor.updateMap(); - var sx=editor.map.length-1,sy=editor.map[0].length-1; + var pout = document.getElementById('pout'); + var exportMap = document.getElementById('exportMap'); + var importMap = document.getElementById('importMap'); + var clearMapButton=document.getElementById('clearMapButton') + var deleteMap=document.getElementById('deleteMap') - var filestr = ''; - for (var yy = 0; yy <= sy; yy++) { - filestr += '[' - for (var xx = 0; xx <= sx; xx++) { - var mapxy = editor.map[yy][xx]; - if (typeof(mapxy) == typeof({})) { - if ('idnum' in mapxy) mapxy = mapxy.idnum; - else { - // mapxy='!!?'; - tip.whichShow(3); - return; - } - } else if (typeof(mapxy) == 'undefined') { - tip.whichShow(3); - return; - } - mapxy = String(mapxy); - mapxy = Array(Math.max(4 - mapxy.length, 0)).join(' ') + mapxy; - filestr += mapxy + (xx == sx ? '' : ',') - } - - filestr += ']' + (yy == sy ? '' : ',\n'); - } - pout.value = filestr; - mapEditArea.mapArr(filestr); - exportMap.isExport = true; - mapEditArea.error(0); - tip.whichShow(2); - } - window.mapEditArea = document.getElementById('mapEditArea') - mapEditArea.errors=[ // 编号1,2 - "格式错误!请使用正确格式(请使用地图生成器进行生成,且需要和本地图宽高完全一致)", - "当前有未定义ID(在地图区域显示红块),请修改ID或者到icons.js和maps.js中进行定义!" - ] - mapEditArea.formatTimer=null - mapEditArea._mapArr='' - mapEditArea.mapArr=function(value){ - if(value!=null){ - var val=value - var oldval=mapEditArea._mapArr - if (val==oldval) return; - - if (exportMap.isExport) { - exportMap.isExport = false; - return; - } - if (mapEditArea.formatArr()) { - mapEditArea.error(0); - - setTimeout(function () { - if (mapEditArea.formatArr())mapEditArea.mapArr(mapEditArea.formatArr()); - mapEditArea.drawMap(); - tip.whichShow(8) - }, 1000); - clearTimeout(mapEditArea.formatTimer); - mapEditArea.formatTimer = setTimeout(function () { - pout.value = mapEditArea.formatArr(); - }, 5000); //5s后再格式化,不然光标跳到最后很烦 - } else { - mapEditArea.error(1); - } - - mapEditArea._mapArr=value - } - return mapEditArea._mapArr - } - pout.oninput=function(){ - mapEditArea.mapArr(pout.value) - } - mapEditArea._error=0 - mapEditArea.error=function(value){ - if(value!=null){ - mapEditArea._error=value - if (value>0) - printe(mapEditArea.errors[value-1]) - } - return mapEditArea._error - } - mapEditArea.drawMap= function () { - // var mapArray = mapEditArea.mapArr().split(/\D+/).join(' ').trim().split(' '); - var mapArray = JSON.parse('[' + mapEditArea.mapArr() + ']'); - var sy=editor.map.length,sx=editor.map[0].length; - for (var y = 0; y < sy; y++) - for (var x = 0; x < sx; x++) { - var num = mapArray[y][x]; - if (num == 0) - editor.map[y][x] = 0; - else if (typeof(editor.indexs[num][0]) == 'undefined') { - mapEditArea.error(2); - editor.map[y][x] = undefined; - } else editor.map[y][x] = editor.ids[[editor.indexs[num][0]]]; - } - - editor.updateMap(); - - } - mapEditArea.formatArr= function () { + var formatArr= function () { var formatArrStr = ''; - console.log(1) var si=editor.map.length,sk=editor.map[0].length; - if (mapEditArea.mapArr().split(/\D+/).join(' ').trim().split(' ').length != si*sk) return false; - var arr = mapEditArea.mapArr().replace(/\s+/g, '').split('],['); + if (pout.value.split(/\D+/).join(' ').trim().split(' ').length != si*sk) return false; + var arr = pout.value.replace(/\s+/g, '').split('],['); if (arr.length != si) return; for (var i = 0; i < si; i++) { @@ -138,31 +38,71 @@ editor_datapanel_wrapper = function (editor) { } return formatArrStr; } - window.copyMap=document.getElementById('copyMap') - copyMap.err='' - copyMap.onclick=function(){ - tip.whichShow(0); - if (pout.value.trim() != '') { - if (mapEditArea.error()) { - copyMap.err = mapEditArea.errors[mapEditArea.error() - 1]; - tip.whichShow(5) - return; - } - try { - pout.focus(); - pout.setSelectionRange(0, pout.value.length); - document.execCommand("Copy"); - tip.whichShow(6); - } catch (e) { - copyMap.err = e; - tip.whichShow(5); + + exportMap.onclick=function(){ + editor.updateMap(); + var sx=editor.map.length-1,sy=editor.map[0].length-1; + + var filestr = ''; + for (var yy = 0; yy <= sy; yy++) { + filestr += '[' + for (var xx = 0; xx <= sx; xx++) { + var mapxy = editor.map[yy][xx]; + if (typeof(mapxy) == typeof({})) { + if ('idnum' in mapxy) mapxy = mapxy.idnum; + else { + printe("生成失败! 地图中有未定义的图块,建议先用其他有效图块覆盖或点击清除地图!"); + return; + } + } else if (typeof(mapxy) == 'undefined') { + printe("生成失败! 地图中有未定义的图块,建议先用其他有效图块覆盖或点击清除地图!"); + return; + } + mapxy = String(mapxy); + mapxy = Array(Math.max(4 - mapxy.length, 0)).join(' ') + mapxy; + filestr += mapxy + (xx == sx ? '' : ',') } + + filestr += ']' + (yy == sy ? '' : ',\n'); + } + pout.value = filestr; + if (formatArr()) { + pout.focus(); + pout.setSelectionRange(0, pout.value.length); + document.execCommand("Copy"); + printf("导出并复制成功!"); } else { - tip.whichShow(7); + printe("无法导出并复制此地图,可能有不合法块。") } } - window.clearMapButton=document.getElementById('clearMapButton') + importMap.onclick= function () { + var sy=editor.map.length,sx=editor.map[0].length; + var mapArray; + try { + mapArray = JSON.parse('[' + pout.value + ']'); + if (mapArray.length != sy || mapArray[0].length != sx) throw ''; + } catch (e) { + printe('格式错误!请使用正确格式(请使用地图生成器进行生成,且需要和本地图宽高完全一致)'); + return; + } + var hasError = false; + for (var y = 0; y < sy; y++) + for (var x = 0; x < sx; x++) { + var num = mapArray[y][x]; + if (num == 0) + editor.map[y][x] = 0; + else if (editor.indexs[num]==null || editor.indexs[num][0]==null) { + printe('当前有未定义ID(在地图区域显示红块),请用有效的图块进行覆盖!') + hasError = true; + editor.map[y][x] = {}; + } else editor.map[y][x] = editor.ids[[editor.indexs[num][0]]]; + } + editor.updateMap(); + if (!hasError) printf('地图导入成功!'); + } + clearMapButton.onclick=function () { + if (!confirm('你确定要清除地图上所有内容么?此过程不可逆!')) return; editor.mapInit(); editor_mode.onmode(''); editor.file.saveFloorFile(function (err) { @@ -173,15 +113,10 @@ editor_datapanel_wrapper = function (editor) { ;printf('地图清除成功'); }); editor.updateMap(); - clearTimeout(mapEditArea.formatTimer); - clearTimeout(tip.timer); - pout.value = ''; - mapEditArea.mapArr(''); - tip.whichShow(4); - mapEditArea.error(0); } - window.deleteMap=document.getElementById('deleteMap') + deleteMap.onclick=function () { + if (!confirm('你确定要删除此地图么?此过程不可逆!')) return; editor_mode.onmode(''); var index = core.floorIds.indexOf(editor.currentFloorId); if (index>=0) { @@ -197,7 +132,6 @@ editor_datapanel_wrapper = function (editor) { else printe('删除成功,请F5刷新编辑器生效'); } - editor.uifunctions.newMap_func = function () { var newMap = document.getElementById('newMap'); diff --git a/_server/editor_mappanel.js b/_server/editor_mappanel.js index 86a894c0..3be66b64 100644 --- a/_server/editor_mappanel.js +++ b/_server/editor_mappanel.js @@ -99,8 +99,7 @@ editor_mappanel_wrapper = function (editor) { editor_mode.onmode('nextChange'); editor_mode.onmode('loc'); //editor_mode.loc(); - //tip.whichShow(1); - tip.showHelp(6); + editor.uifunctions.showTips(6); editor.uivalues.startPos = pos; editor.dom.euiCtx.strokeStyle = '#FF0000'; editor.dom.euiCtx.lineWidth = 3; @@ -127,7 +126,6 @@ editor_mappanel_wrapper = function (editor) { editor.uivalues.lastMoveE=e; if (!selectBox.isSelected()) { if (editor.uivalues.startPos == null) return; - //tip.whichShow(1); var loc = editor.uifunctions.eToLoc(e); var pos = editor.uifunctions.locToPos(loc, true); if (editor.uivalues.endPos != null && editor.uivalues.endPos.x == pos.x && editor.uivalues.endPos.y == pos.y) return; @@ -163,8 +161,6 @@ editor_mappanel_wrapper = function (editor) { // editor_mode.onmode('nextChange'); // editor_mode.onmode('loc'); //editor_mode.loc(); - //tip.whichShow(1); - // tip.showHelp(6); return false; } @@ -230,7 +226,6 @@ editor_mappanel_wrapper = function (editor) { // 后续的处理 } else { // 左键拖拽: 交换 - //tip.whichShow(1); // editor.movePos(editor.uivalues.startPos, editor.uivalues.endPos); editor.exchangePos(editor.uivalues.startPos, editor.uivalues.endPos); editor.uifunctions.unhighlightSaveFloorButton(); @@ -585,7 +580,6 @@ editor_mappanel_wrapper = function (editor) { editor_mode.onmode('nextChange'); editor_mode.onmode('loc'); //editor_mode.loc(); - //tip.whichShow(1); if (editor.isMobile) editor.showdataarea(false); return false; } @@ -679,8 +673,7 @@ editor_mappanel_wrapper = function (editor) { * 点击【】 */ editor.uifunctions.lockMode_onchange = function () { - tip.msgs[11] = String('锁定模式开启下将不再点击空白处自动保存,请谨慎操作。'); - tip.whichShow(12); + printf('锁定模式开启下将不再点击空白处自动保存,请谨慎操作。'); editor.uivalues.lockMode = editor.dom.lockMode.checked; } @@ -691,9 +684,7 @@ editor_mappanel_wrapper = function (editor) { editor.uifunctions.brushMod_onchange = function () { editor.brushMod = editor.dom.brushMod.value; if (editor.brushMod == 'fill') { - tip.isSelectedBlock(false); - tip.msgs[11] = String('填充模式下,将会用选中的素材替换所有和目标点联通的相同素材'); - tip.whichShow(12); + printf('填充模式下,将会用选中的素材替换所有和目标点联通的相同素材'); } } @@ -714,17 +705,12 @@ editor_mappanel_wrapper = function (editor) { !confirm("从V2.7开始,请直接素材区拖框进行绘制区域。\n\n点取消将不再显示此提示。")) { editor.config.set('alertTileModeV2.7', true); } - // tip.showHelp(5) - tip.isSelectedBlock(false) - tip.msgs[11] = String('tileset平铺模式下可以按选中tileset素材,并在地图上拖动来一次绘制一个区域'); - tip.whichShow(12); + printf('tileset平铺模式下可以按选中tileset素材,并在地图上拖动来一次绘制一个区域'); editor.brushMod = editor.dom.brushMod3.value; } editor.uifunctions.brushMod4_onchange = function () { - tip.isSelectedBlock(false); - tip.msgs[11] = String('填充模式下,将会用选中的素材替换所有和目标点联通的相同素材'); - tip.whichShow(12); + printf('填充模式下,将会用选中的素材替换所有和目标点联通的相同素材'); editor.brushMod = editor.dom.brushMod4.value; } diff --git a/_server/editor_materialpanel.js b/_server/editor_materialpanel.js index d7607b82..d524566e 100644 --- a/_server/editor_materialpanel.js +++ b/_server/editor_materialpanel.js @@ -8,9 +8,6 @@ editor_materialpanel_wrapper = function (editor) { selectBox.isSelected=function(value){ if(value!=null){ selectBox._isSelected=value; - tip.isSelectedBlock(value); - tip.whichShow(0); - clearTimeout(tip.timer); editor.dom.dataSelection.style.display=value?'':'none' } return selectBox._isSelected @@ -230,7 +227,7 @@ editor_materialpanel_wrapper = function (editor) { } } - tip.infos(JSON.parse(JSON.stringify(editor.info))); + editor.uifunctions.showBlockInfo(JSON.parse(JSON.stringify(editor.info))); editor_mode.onmode('nextChange'); editor_mode.onmode('enemyitem'); editor.updateLastUsedMap(); diff --git a/_server/editor_mode.js b/_server/editor_mode.js index 7ebc5b95..e072844a 100644 --- a/_server/editor_mode.js +++ b/_server/editor_mode.js @@ -128,7 +128,7 @@ editor_mode = function (editor) { editor.drawEventBlock(); if (editor_mode[mode]) editor_mode[mode](); editor.dom.editModeSelect.value = mode; - if (!selectBox.isSelected()) tip.showHelp(); + if (!selectBox.isSelected()) editor.uifunctions.showTips(); } editor_mode.prototype.change = function (value) { diff --git a/_server/editor_ui.js b/_server/editor_ui.js index 99f01747..89baaebf 100644 --- a/_server/editor_ui.js +++ b/_server/editor_ui.js @@ -1,29 +1,46 @@ editor_ui_wrapper = function (editor) { - // 由于历史遗留原因, 以下变量作为全局变量使用 - // printf printe tip - window.printf = function (str_, type) { - selectBox.isSelected(false); - if (!type) { - tip.whichShow(11); - } else { - tip.whichShow(12); + var tip=document.getElementById('tip'); + var print = function (msg, cls) { + if (msg == '') { + tip.innerHTML = ''; + return; } - setTimeout(function () { - if (!type) { - tip.msgs[11] = String(str_); - tip.whichShow(12); - } else { - tip.msgs[10] = String(str_); - tip.whichShow(11); - } - }, 1); + tip.innerHTML = '

      ' + msg + "

      "; } - window.printe = function (str_) { - printf(str_, 'error') + + window.printf = function (msg) { + selectBox.isSelected(false); + print(msg, 'successText'); } - window.tip=document.getElementById('tip') - tip.showHelp = function(value) { + window.printe = function (msg) { + selectBox.isSelected(false); + print(msg, 'warnText'); + } + window.printi = function (msg) { + print(msg, 'infoText'); + } + + editor.uifunctions.showBlockInfo = function (value) { + if (value == 0) { + printi("当前选择为清除块,可擦除地图上块"); + return; + } + var hasId = 'id' in value; + if (hasId && value.idnum == 17) { + printi("当前选择为空气墙, 在编辑器中可视, 在游戏中隐藏的墙, 用来配合前景/背景的贴图"); + return; + } + var isAutotile = hasId && value.images == "autotile"; + tip.innerHTML = (hasId?`

      图块编号:${ value['idnum'] }

      +

      图块ID:${ value['id'] }

      `:` +

      该图块无对应的数字或ID存在,请先前往icons.js和maps.js中进行定义!

      `)+` +

      图块所在素材:${ value['images'] + (isAutotile ? '( '+value['id']+' )' : '') } +

      +

      图块索引:${ value['y'] }

      `; + } + + editor.uifunctions.showTips = function (value) { var tips = [ '表格的文本域可以双击进行编辑', '双击地图可以选中素材,右键可以弹出菜单', @@ -37,147 +54,6 @@ editor_ui_wrapper = function (editor) { if (value == null) value = Math.floor(Math.random() * tips.length); printf('tips: ' + tips[value]) } - tip._infos= {} - tip.infos=function(value){ - if(value!=null){ - var val=value - var oldval=tip._infos - - tip.isClearBlock(false); - tip.isAirwall(false); - if (typeof(val) != 'undefined') { - if (val == 0) { - tip.isClearBlock(true); - return; - } - if ('id' in val) { - if (val.idnum == 17) { - tip.isAirwall(true); - return; - } - tip.hasId = true; - } else { - tip.hasId = false; - } - tip.isAutotile = false; - if (val.images == "autotile" && tip.hasId) tip.isAutotile = true; - document.getElementById('isAirwall-else').innerHTML=(tip.hasId?`

      图块编号:${ value['idnum'] }

      -

      图块ID:${ value['id'] }

      `:` -

      该图块无对应的数字或ID存在,请先前往icons.js和maps.js中进行定义!

      `)+` -

      图块所在素材:${ value['images'] + (tip.isAutotile ? '( '+value['id']+' )' : '') } -

      -

      图块索引:${ value['y'] }

      ` - } - - tip._infos=value - } - return tip._infos - } - tip.hasId= true - tip.isAutotile= false - tip._isSelectedBlock= false - tip.isSelectedBlock=function(value){ - if(value!=null){ - var dshow=document.getElementById('isSelectedBlock-if') - var dhide=document.getElementById('isSelectedBlock-else') - if(!value){ - var dtemp=dshow - dshow=dhide - dhide=dtemp - } - dshow.style.display='' - dhide.style.display='none' - tip._isSelectedBlock=value - } - return tip._isSelectedBlock - } - tip._isClearBlock= false - tip.isClearBlock=function(value){ - if(value!=null){ - var dshow=document.getElementById('isClearBlock-if') - var dhide=document.getElementById('isClearBlock-else') - if(!value){ - var dtemp=dshow - dshow=dhide - dhide=dtemp - } - dshow.style.display='' - dhide.style.display='none' - tip._isClearBlock=value - } - return tip._isClearBlock - } - tip._isAirwall= false - tip.isAirwall=function(value){ - if(value!=null){ - var dshow=document.getElementById('isAirwall-if') - var dhide=document.getElementById('isAirwall-else') - if(!value){ - var dtemp=dshow - dshow=dhide - dhide=dtemp - } - dshow.style.display='' - dhide.style.display='none' - tip._isAirwall=value - } - return tip._isAirwall - } - tip.geneMapSuccess= false - tip.timer= null - tip.msgs= [ //分别编号1,2,3,4,5,6,7,8,9,10;奇数警告,偶数成功 - "当前未选择任何图块,请先在右边选择要画的图块!", - "生成地图成功!可点击复制按钮复制地图数组到剪切板", - "生成失败! 地图中有未定义的图块,建议先用其他有效图块覆盖或点击清除地图!", - "地图清除成功!", - "复制失败!", - "复制成功!可直接粘贴到楼层文件的地图数组中。", - "复制失败!当前还没有数据", - "修改成功!可点击复制按钮复制地图数组到剪切板", - "选择背景图片失败!文件名格式错误或图片不存在!", - "更新背景图片成功!", - "11:警告", - "12:成功" - ] - tip._mapMsg= '' - tip.mapMsg=function(value){ - if(value!=null){ - document.getElementById('whichShow-if').innerText=value - tip._mapMsg=value - } - return tip._mapMsg - } - tip._whichShow= 0 - tip.whichShow=function(value){ - if(value!=null){ - - var dshow=document.getElementById('whichShow-if') - var dhide=null - if(!value){ - var dtemp=dshow - dshow=dhide - dhide=dtemp - } - if(dshow)dshow.style.display='' - if(dhide)dhide.style.display='none' - - if(dshow)dshow.setAttribute('class',(value%2) ? 'warnText' : 'successText') - - tip.mapMsg(''); - tip.msgs[4] = "复制失败!" + editTip.err; - clearTimeout(tip.timer); - if (value) { - tip.mapMsg(tip.msgs[value - 1]); - tip.timer = setTimeout(function () { - if (!(value % 2)) - value = 0; - }, 5000); //5秒后自动清除success,warn不清除 - } - tip._whichShow=value - } - return tip._whichShow - } - /** * 根据鼠标点击, 得到从元素向上到body的所有id diff --git a/editor-mobile.html b/editor-mobile.html index 60895ee4..e4e15e70 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -37,8 +37,8 @@
  • - - + +
    @@ -325,19 +325,7 @@
    -
    - -
    - -
    -
    - +
    diff --git a/editor.html b/editor.html index 6e59f8c2..3919614e 100644 --- a/editor.html +++ b/editor.html @@ -35,8 +35,8 @@ 保留楼层属性
    - - + +
    @@ -301,20 +301,7 @@
    -
    - -
    - -
    -
    - - +
    - - -
    -
    + + @@ -557,6 +558,7 @@ +
    diff --git a/editor.html b/editor.html index 2e65817b..1cea6d1c 100644 --- a/editor.html +++ b/editor.html @@ -336,6 +336,7 @@ +
    @@ -539,6 +540,7 @@ + diff --git a/libs/maps.js b/libs/maps.js index 9b18679f..2514e4bc 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -1439,10 +1439,14 @@ maps.prototype.showBlock = function (x, y, floorId) { block.disable = false; // 在本层,添加动画 if (floorId == core.status.floorId) { - core.drawBlock(block); - core.addGlobalAnimate(block); + if (block.event.cls == 'autotile') { + core.drawMap(); + } else { + core.drawBlock(block); + core.addGlobalAnimate(block); + core.updateStatusBar(); + } } - core.updateStatusBar(); } } @@ -1454,17 +1458,10 @@ maps.prototype.hideBlock = function (x, y, floorId) { var block = core.getBlock(x, y, floorId, true); if (block == null) return; // 不存在 - // 删除动画,清除地图 - if (floorId == core.status.floorId) { - core.removeGlobalAnimate(x, y); - core.clearMap('event', x * 32, y * 32, 32, 32); - var height = block.block.event.height || 32; - if (height > 32) - core.clearMap('event2', x * 32, y * 32 + 32 - height, 32, height - 32); - } - core.hideBlockByIndex(block.index, floorId); - core.updateStatusBar(); + + // 删除动画,清除地图 + this._removeBlockFromMap(floorId, block.block); } ////// 根据图块的索引来隐藏图块 ////// @@ -1485,6 +1482,20 @@ maps.prototype.hideBlockByIndexes = function (indexes, floorId) { }); } +maps.prototype._removeBlockFromMap = function (floorId, block) { + if (floorId != core.status.floorId) return; + if (block.event.cls == 'autotile') { + core.drawMap(); + } else { + core.removeGlobalAnimate(x, y); + core.clearMap('event', x * 32, y * 32, 32, 32); + var height = block.event.height || 32; + if (height > 32) + core.clearMap('event2', x * 32, y * 32 + 32 - height, 32, height - 32); + core.updateStatusBar(); + } +} + ////// 删除某个图块 ////// maps.prototype.removeBlock = function (x, y, floorId) { floorId = floorId || core.status.floorId; @@ -1493,17 +1504,10 @@ maps.prototype.removeBlock = function (x, y, floorId) { var block = core.getBlock(x, y, floorId, true); if (block == null) return false; // 不存在 - // 删除动画,清除地图 - if (floorId == core.status.floorId) { - core.removeGlobalAnimate(x, y); - core.clearMap('event', x * 32, y * 32, 32, 32); - var height = block.block.event.height || 32; - if (height > 32) - core.clearMap('event2', x * 32, y * 32 + 32 - height, 32, height - 32); - } - core.removeBlockByIndex(block.index, floorId); - core.updateStatusBar(); + + // 删除动画,清除地图 + this._removeBlockFromMap(floorId, block.block); return true; } @@ -1612,7 +1616,9 @@ maps.prototype.setBlock = function (number, x, y, floorId) { return; } var originBlock = core.getBlock(x, y, floorId, true); + var originEvent = originBlock == null ? null : originBlock.block.event; if (floorId == core.status.floorId) { + core.removeGlobalAnimate(x, y); core.clearMap('event', x * 32, y * 32, 32, 32); if (originBlock != null) { @@ -1629,11 +1635,21 @@ maps.prototype.setBlock = function (number, x, y, floorId) { originBlock.block.event = block.event; block = originBlock.block; } - if (floorId == core.status.floorId && !block.disable) { - core.drawBlock(block); - if (block.event.cls != 'autotile') - core.addGlobalAnimate(block); - core.updateStatusBar(); + if (floorId == core.status.floorId) { + // 有任何一个是autotile直接重绘地图 + if ((originEvent != null && originEvent.cls == 'autotile') || block.event.cls == 'autotile') { + core.drawMap(); + } else { + if (originEvent != null) { + this._removeBlockFromMap(floorId, {event: originEvent}); + } + if (!block.disable) { + core.drawBlock(block); + } + } + if (originEvent != null) { + this._removeBlockFromMap() + } } } diff --git a/libs/ui.js b/libs/ui.js index 0f940565..c2a247c1 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -2984,7 +2984,7 @@ ui.prototype.drawHelp = function () { core.status.event.id = 'help'; core.lockControl(); core.setAlpha('ui', 1); - core.fillRect('ui', 0, 0, this.PIXEL, this.PIXEL, '#FFFFFF'); + core.fillRect('ui', 0, 0, this.PIXEL, this.PIXEL, '#000000'); core.drawImage('ui', core.material.images.keyboard, 32 * (this.HSIZE - 6), 32 * (this.HSIZE - 6)); } else { From 9ab7150088a38b91f9fd612016e47f1f9429dd92 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sat, 30 May 2020 18:43:51 +0800 Subject: [PATCH 39/73] =?UTF-8?q?=E7=AE=80=E5=8C=96=E4=BA=94=E5=9B=BE?= =?UTF-8?q?=E5=B1=82=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor.js | 27 ++-- _server/editor_datapanel.js | 2 +- _server/editor_file.js | 13 +- _server/editor_game.js | 3 +- _server/editor_mappanel.js | 55 ++++---- _server/editor_ui.js | 13 +- libs/maps.js | 1 + project/floors/sample0.js | 5 - project/plugins.js | 256 ++---------------------------------- 9 files changed, 59 insertions(+), 316 deletions(-) diff --git a/_server/editor.js b/_server/editor.js index 82186895..e31d6a3c 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -53,6 +53,8 @@ function editor() { lastUsedCtx: document.getElementById('lastUsed').getContext('2d'), lockMode: document.getElementById('lockMode'), gameInject: document.getElementById('gameInject'), + maps: ['bgmap', 'fgmap', 'map'], + canvas: ['bg', 'fg'], }; this.uivalues={ @@ -266,11 +268,9 @@ editor.prototype.mapInit = function () { editor.map[y][x] = 0; } } - editor.fgmap=JSON.parse(JSON.stringify(editor.map)); - editor.bgmap=JSON.parse(JSON.stringify(editor.map)); - editor.currentFloorData.map = editor.map; - editor.currentFloorData.fgmap = editor.fgmap; - editor.currentFloorData.bgmap = editor.bgmap; + editor.dom.maps.forEach(function (one) { + editor.currentFloorData[one] = editor[one] = JSON.parse(JSON.stringify(editor.map)); + }); editor.currentFloorData.firstArrive = []; editor.currentFloorData.eachArrive = []; editor.currentFloorData.events = {}; @@ -282,7 +282,7 @@ editor.prototype.mapInit = function () { } editor.prototype.changeFloor = function (floorId, callback) { - for(var ii=0,name;name=['map','bgmap','fgmap'][ii];ii++){ + for(var ii=0,name;name=editor.dom.maps[ii];ii++){ var mapArray=editor[name].map(function (v) { return v.map(function (v) { return v.idnum || v || 0 @@ -386,10 +386,11 @@ editor.prototype.updateMap = function () { var updateMap = function () { core.removeGlobalAnimate(); - core.clearMap('bg'); + editor.dom.canvas.forEach(function (one) { + core.clearMap(one); + }); core.clearMap('event'); core.clearMap('event2'); - core.clearMap('fg'); core.maps._drawMap_drawAll(); } updateMap(); @@ -418,12 +419,10 @@ editor.prototype.updateMap = function () { // 绘制地图 start for (var y = 0; y < editor.map.length; y++) { for (var x = 0; x < editor.map[0].length; x++) { - var tileInfo = editor.map[y][x]; - drawTile(editor.dom.evCtx, x, y, tileInfo); - tileInfo = editor.fgmap[y][x]; - drawTile(editor.dom.fgCtx, x, y, tileInfo); - tileInfo = editor.bgmap[y][x]; - drawTile(editor.dom.bgCtx, x, y, tileInfo); + drawTile(editor.dom.evCtx, x, y, editor.map[y][x]); + editor.dom.canvas.forEach(function (one) { + drawTile(editor.dom[one + 'Ctx'], x, y, editor[one+'map'][y][x]); + }); } } // 绘制地图 end diff --git a/_server/editor_datapanel.js b/_server/editor_datapanel.js index 21af16b9..336cecfb 100644 --- a/_server/editor_datapanel.js +++ b/_server/editor_datapanel.js @@ -530,7 +530,7 @@ editor_datapanel_wrapper = function (editor) { newFloorData.height = height; // Step 2:更新map, bgmap和fgmap - ["bgmap", "fgmap", "map"].forEach(function (name) { + editor.dom.maps.forEach(function (name) { newFloorData[name] = []; if (currentFloorData[name] && currentFloorData[name].length > 0) { for (var j = 0; j < height; ++j) { diff --git a/_server/editor_file.js b/_server/editor_file.js index 981add58..d414dd15 100644 --- a/_server/editor_file.js +++ b/_server/editor_file.js @@ -83,7 +83,9 @@ editor_file_wrapper = function (editor) { var datastr = ['main.floors.', floorId, '=\n']; var tempJsonObj = Object.assign({}, floorData); - var tempMap = [['map', editor.util.guid()], ['bgmap', editor.util.guid()], ['fgmap', editor.util.guid()]]; + var tempMap = editor.dom.maps.map(function (one) { + return [one, editor.util.guid()] + }); tempMap.forEach(function (v) { v[2] = tempJsonObj[v[0]]; tempJsonObj[v[0]] = v[1]; @@ -164,11 +166,8 @@ editor_file = function (editor, callback) { /* if (!isset(editor.currentFloorId) || !isset(editor.currentFloorData)) { callback('未选中文件或无数据'); } */ - var filename = 'project/floors/' + editor.currentFloorId + '.js'; - var datastr = ['main.floors.', editor.currentFloorId, '=\n']; - if (core.floorIds.indexOf(editor.currentFloorId) >= 0) { - for(var ii=0,name;name=['map','bgmap','fgmap'][ii];ii++){ + for(var ii=0,name;name=editor.dom.maps[ii];ii++){ var mapArray=editor[name].map(function (v) { return v.map(function (v) { return v.idnum || v || 0 @@ -667,9 +666,7 @@ editor_file = function (editor, callback) { Object.keys(editor.file.comment._data.floors._data.loc._data).forEach(function (v) { delete(locObj[v]); }); - delete(locObj.map); - delete(locObj.bgmap); - delete(locObj.fgmap); + editor.dom.maps.forEach(function (one) { delete locObj[one]; }); return locObj; })(), editor.file.comment._data.floors._data.floor, diff --git a/_server/editor_game.js b/_server/editor_game.js index ad659416..a62f54a4 100644 --- a/_server/editor_game.js +++ b/_server/editor_game.js @@ -151,7 +151,8 @@ editor_game_wrapper = function (editor, main, core) { // 补出缺省的数据 editor.currentFloorData.autoEvent = editor.currentFloorData.autoEvent || {}; // - for (var ii = 0, name; name = ['bgmap', 'fgmap'][ii]; ii++) { + for (var ii = 0, name; name = editor.dom.canvas[ii]; ii++) { + name += 'map'; var mapArray = editor.currentFloorData[name]; if (!mapArray || JSON.stringify(mapArray) == JSON.stringify([])) {//未设置或空数组 //与editor.map同形的全0 diff --git a/_server/editor_mappanel.js b/_server/editor_mappanel.js index 895a07ca..e11a193a 100644 --- a/_server/editor_mappanel.js +++ b/_server/editor_mappanel.js @@ -717,29 +717,27 @@ editor_mappanel_wrapper = function (editor) { editor.brushMod = editor.dom.brushMod4.value; } + editor.uifunctions.setLayerMod = function (layer) { + editor.layerMod = layer; + var canvas = ['ev', 'ev2'].concat(editor.dom.canvas); + canvas.forEach(function (one) { + editor.dom[one+'c'].style.opacity = 1; + }); + if (layer != 'map') { + canvas.filter(function (one) { + return one + 'map' != editor.layerMod + }).forEach(function (one) { + editor.dom[one+'c'].style.opacity = 0.3; + }); + } + } + /** * editor.dom.layerMod.onchange * 切换编辑的层 */ editor.uifunctions.layerMod_onchange = function () { - editor.layerMod = editor.dom.layerMod.value; - [editor.dom.bgc, editor.dom.fgc, editor.dom.evc, editor.dom.ev2c].forEach(function (x) { - x.style.opacity = 1; - }); - - // 手机端.... - if (editor.isMobile) { - if (editor.dom.layerMod.value == 'bgmap') { - [editor.dom.fgc, editor.dom.evc, editor.dom.ev2c].forEach(function (x) { - x.style.opacity = 0.3; - }); - } - if (editor.dom.layerMod.value == 'fgmap') { - [editor.dom.bgc, editor.dom.evc, editor.dom.ev2c].forEach(function (x) { - x.style.opacity = 0.3; - }); - } - } + editor.uifunctions.setLayerMod(editor.dom.layerMod.value); } /** @@ -747,11 +745,7 @@ editor_mappanel_wrapper = function (editor) { * 切换编辑的层 */ editor.uifunctions.layerMod2_onchange = function () { - editor.layerMod = editor.dom.layerMod2.value; - [editor.dom.fgc, editor.dom.evc, editor.dom.ev2c].forEach(function (x) { - x.style.opacity = 0.3; - }); - editor.dom.bgc.style.opacity = 1; + editor.uifunctions.setLayerMod('bgmap'); } /** @@ -759,11 +753,7 @@ editor_mappanel_wrapper = function (editor) { * 切换编辑的层 */ editor.uifunctions.layerMod3_onchange = function () { - editor.layerMod = editor.dom.layerMod3.value; - [editor.dom.bgc, editor.dom.evc, editor.dom.ev2c].forEach(function (x) { - x.style.opacity = 0.3; - }); - editor.dom.fgc.style.opacity = 1; + editor.uifunctions.setLayerMod('fgmap'); } /** @@ -977,11 +967,10 @@ editor_mappanel_wrapper = function (editor) { } editor.constructor.prototype.savePreMap = function () { - var dt = { - map: editor.map, - fgmap: editor.fgmap, - bgmap: editor.bgmap, - }; + var dt = {}; + editor.dom.maps.forEach(function (one) { + dt[one] = editor[one]; + }); if (editor.uivalues.preMapData.length == 0 || !core.same(editor.uivalues.preMapData[editor.uivalues.preMapData.length - 1], dt)) { editor.uivalues.preMapData.push(core.clone(dt)); diff --git a/_server/editor_ui.js b/_server/editor_ui.js index 1a83af89..61961c3a 100644 --- a/_server/editor_ui.js +++ b/_server/editor_ui.js @@ -190,9 +190,9 @@ editor_ui_wrapper = function (editor) { e.preventDefault(); if (editor.uivalues.preMapData.length > 0) { var data = editor.uivalues.preMapData.pop(); - editor.map = JSON.parse(JSON.stringify(data.map)); - editor.fgmap = JSON.parse(JSON.stringify(data.fgmap)); - editor.bgmap = JSON.parse(JSON.stringify(data.bgmap)); + editor.dom.maps.forEach(function (one) { + editor[one] = JSON.parse(JSON.stringify(data[one])); + }); editor.updateMap(); editor.uivalues.postMapData.push(data); editor.uifunctions.highlightSaveFloorButton(); @@ -205,9 +205,9 @@ editor_ui_wrapper = function (editor) { e.preventDefault(); if (editor.uivalues.postMapData.length > 0) { var data = editor.uivalues.postMapData.pop(); - editor.map = JSON.parse(JSON.stringify(data.map)); - editor.fgmap = JSON.parse(JSON.stringify(data.fgmap)); - editor.bgmap = JSON.parse(JSON.stringify(data.bgmap)); + editor.dom.maps.forEach(function (one) { + editor[one] = JSON.parse(JSON.stringify(data[one])); + }); editor.updateMap(); editor.uivalues.preMapData.push(data); editor.uifunctions.highlightSaveFloorButton(); @@ -709,6 +709,7 @@ editor_ui_wrapper = function (editor) { html += '
    '; }); html += "

    "; + html += "

    如果文件未在此列表显示,请检查文件名是否合法(只能由数字字母下划线横线和点组成),后缀名是否正确。

    "; uievent.elements.extraBody.innerHTML = html; }); } diff --git a/libs/maps.js b/libs/maps.js index 2514e4bc..a7ac82f7 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -1487,6 +1487,7 @@ maps.prototype._removeBlockFromMap = function (floorId, block) { if (block.event.cls == 'autotile') { core.drawMap(); } else { + var x = block.x, y = block.y; core.removeGlobalAnimate(x, y); core.clearMap('event', x * 32, y * 32, 32, 32); var height = block.event.height || 32; diff --git a/project/floors/sample0.js b/project/floors/sample0.js index db837884..b38c0dff 100644 --- a/project/floors/sample0.js +++ b/project/floors/sample0.js @@ -30,11 +30,6 @@ main.floors.sample0= "background": "winskin.png", "time": 0 }, - { - "type": "setValue", - "name": "status:animate", - "value": "true" - }, "\t[样板提示]首次到达某层可以触发 firstArrive 事件,该事件可类似于RMXP中的“自动执行脚本”。\n\n本事件支持一切的事件类型,常常用来触发对话,例如:", "\t[hero]\b[up,hero]我是谁?我从哪来?我又要到哪去?", "\t[仙子,fairy]你问我...?我也不知道啊...", diff --git a/project/plugins.js b/project/plugins.js index 9ecb01a3..ccb8b675 100644 --- a/project/plugins.js +++ b/project/plugins.js @@ -324,6 +324,8 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = editor.dom.bg2Ctx = core.canvas.bg2; editor.dom.fg2c = core.canvas.fg2.canvas; editor.dom.fg2Ctx = core.canvas.fg2; + editor.dom.maps.push('bg2map', 'fg2map'); + editor.dom.canvas.push('bg2', 'fg2'); // 默认全空 var defaultMap = []; @@ -400,255 +402,13 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = return; } _isEditorInit = true; - // 编辑器更新地图 - editor.updateMap = function () { - var blocks = core.maps._mapIntoBlocks(editor.map.map(function (v) { - return v.map(function (v) { - try { - return v.idnum || v || 0; - } catch (e) { - console.log("Unable to read idnum from " + v); - return 0; - } - }); - }), { 'events': editor.currentFloorData.events }, editor.currentFloorId); - core.status.thisMap.blocks = blocks; - - var updateMap = function () { - // 新增图层也需要刷新 - core.removeGlobalAnimate(); - core.clearMap('bg'); - core.clearMap('bg2'); - core.clearMap('event'); - core.clearMap('event2'); - core.clearMap('fg'); - core.clearMap('fg2'); - core.maps._drawMap_drawAll(); - }; - updateMap(); - - var drawTile = function (ctx, x, y, tileInfo) { // 绘制一个普通块 - - //ctx.clearRect(x*32, y*32, 32, 32); - if (tileInfo == 0) return; - - if (typeof (tileInfo) == typeof ([][0]) || !Object.prototype.hasOwnProperty.call(tileInfo, 'idnum')) { //未定义块画红块 - if (typeof (tileInfo) != typeof ([][0]) && Object.prototype.hasOwnProperty.call(tileInfo, 'images')) { - ctx.drawImage(core.material.images[tileInfo.images], 0, tileInfo.y * 32, 32, 32, x * 32, y * 32, 32, 32); - } - ctx.strokeStyle = 'red'; - var OFFSET = 2; - ctx.lineWidth = OFFSET; - ctx.strokeRect(x * 32 + OFFSET, y * 32 + OFFSET, 32 - OFFSET * 2, 32 - OFFSET * 2); - ctx.font = "30px Verdana"; - ctx.textAlign = 'center'; - ctx.fillStyle = 'red'; - ctx.fillText("?", x * 32 + 16, y * 32 + 27); - return; - } - //ctx.drawImage(core.material.images[tileInfo.images], 0, tileInfo.y*32, 32, 32, x*32, y*32, 32, 32); - }; - // 绘制地图 start - for (var y = 0; y < editor.map.length; y++) { - for (var x = 0; x < editor.map[0].length; x++) { - var tileInfo = editor.map[y][x]; - drawTile(editor.dom.evCtx, x, y, tileInfo); - tileInfo = editor.fgmap[y][x]; - drawTile(editor.dom.fgCtx, x, y, tileInfo); - tileInfo = editor.bgmap[y][x]; - drawTile(editor.dom.bgCtx, x, y, tileInfo); - // 新增图层的未定义图块绘制 - tileInfo = editor.fg2map[y][x]; - drawTile(editor.dom.fgCtx, x, y, tileInfo); - tileInfo = editor.bg2map[y][x]; - drawTile(editor.dom.bgCtx, x, y, tileInfo); - } - } - // 绘制地图 end - - // 下面这行是2.7新增内容 - editor.drawEventBlock(); - this.updateLastUsedMap(); - }; - // 编辑器写入文件 - editor.file.saveFloor = function (floorData, callback) { - //callback(err:String) - var floorId = floorData.floorId; - var filename = 'project/floors/' + floorId + '.js'; - var datastr = ['main.floors.', floorId, '=\n']; - - var tempJsonObj = Object.assign({}, floorData); - // 多写入两个图层 - var tempMap = [ - ['map', editor.util.guid()], - ['bgmap', editor.util.guid()], - ['bg2map', editor.util.guid()], - ['fgmap', editor.util.guid()], - ['fg2map', editor.util.guid()] - ]; - tempMap.forEach(function (v) { - v[2] = tempJsonObj[v[0]]; - tempJsonObj[v[0]] = v[1]; - }); - var tempJson = JSON.stringify(tempJsonObj, editor.game.replacerForSaving, 4); - tempMap.forEach(function (v) { - tempJson = tempJson.replace('"' + v[1] + '"', '[\n' + editor.file.formatMap(v[2], v[0] != 'map') + '\n]'); - }); - datastr = datastr.concat([tempJson]); - datastr = datastr.join(''); - editor.file.alertWhenCompress(); - editor.fs.writeFile(filename, editor.util.encode64(datastr), 'base64', function (err, data) { - editor.addUsedFlags(datastr); - callback(err); - }); - }; - editor.file.saveFloorFile = function (callback) { - //callback(err:String) - editor.util.checkCallback(callback); - /* if (!isset(editor.currentFloorId) || !isset(editor.currentFloorData)) { - callback('未选中文件或无数据'); - } */ - if (core.floorIds.indexOf(editor.currentFloorId) >= 0) { - // 增加背景层2与前景层2的当前地图数据绑定 - for (var ii = 0, name; name = ['map', 'bgmap', 'bg2map', 'fgmap', 'fg2map'][ii]; ii++) { - var mapArray = editor[name].map(function (v) { - return v.map(function (v) { - return v.idnum || v || 0; - }) - }); - editor.currentFloorData[name] = mapArray; - } - } - editor.file.saveFloor(editor.currentFloorData, callback); - }; - // 编辑器取得地图数据 - editor.game.fetchMapFromCore = function () { - var mapArray = core.getMapArray(core.status.floorId, true); - // 2.6.6原写法:var mapArray = core.maps.saveMap(core.status.floorId); - editor.map = mapArray.map(function (v) { - return v.map(function (v) { - var x = parseInt(v), - y = editor.indexs[x]; - if (y == null) { - printe("素材数字" + x + "未定义。是不是忘了注册,或者接档时没有覆盖icons.js和maps.js?"); - y = [0]; - } - return editor.ids[y[0]]; - }); - }); - editor.currentFloorId = core.status.floorId; - editor.currentFloorData = core.floors[core.status.floorId]; - // 补出缺省的数据 - editor.currentFloorData.autoEvent = editor.currentFloorData.autoEvent || {}; - // 前景层2与背景层2的editor地图数据绑定 - for (var ii = 0, name; name = ['bgmap', 'bg2map', 'fgmap', 'fg2map'][ii]; ii++) { - var mapArray = editor.currentFloorData[name]; - if (!mapArray || JSON.stringify(mapArray) == JSON.stringify([])) { //未设置或空数组 - //与editor.map同形的全0 - mapArray = eval('[' + Array(editor.map.length + 1).join('[' + Array(editor.map[0].length + 1).join('0,') + '],') + ']'); - } - editor[name] = mapArray.map(function (v) { - return v.map(function (v) { - var x = parseInt(v), - y = editor.indexs[x]; - if (y == null) { - printe("素材数字" + x + "未定义。是不是忘了注册,或者接档时没有覆盖icons.js和maps.js?"); - y = [0]; - } - return editor.ids[y[0]]; - }); - }); - } - }; - // 选中背景层2或前景层2时其他图层的透明度变更 - editor.uifunctions.layerMod_onchange = function () { - editor.layerMod = editor.dom.layerMod.value; - [editor.dom.bg2c, editor.dom.fg2c, editor.dom.bgc, editor.dom.fgc, editor.dom.evc, editor.dom.ev2c].forEach(function (x) { - x.style.opacity = 1; - }); - - // 手机端.... - if (editor.isMobile) { - var arr = ["bg", "bg2", "fg", "fg2"]; - for (var i = 0; i < arr.length; i++) { - if (editor.dom.layerMod.value == arr[i] + "map") { - var newArr = arr.concat(["ev", "ev2"]); - for (var ii = 0; ii < newArr.length; ii++) { - if (ii != i) editor.dom[newArr[ii] + "c"].style.opacity = 0.3; - } - return; - } - } - } - }; - editor.uifunctions.layerMod2_onchange = function () { - editor.layerMod = editor.dom.layerMod2.value; - [editor.dom.bg2c, editor.dom.fg2c, editor.dom.fgc, editor.dom.evc, editor.dom.ev2c].forEach(function (x) { - x.style.opacity = 0.3; - }); - editor.dom.bgc.style.opacity = 1; - }; - editor.uifunctions.layerMod3_onchange = function () { - editor.layerMod = editor.dom.layerMod3.value; - [editor.dom.bg2c, editor.dom.fg2c, editor.dom.bgc, editor.dom.evc, editor.dom.ev2c].forEach(function (x) { - x.style.opacity = 0.3; - }); - editor.dom.fgc.style.opacity = 1; - }; - // 当背景层2按钮选中情况发生变动 - editor.uifunctions.layerMod4_onchange = function () { - editor.layerMod = editor.dom.layerMod4.value; - [editor.dom.fgc, editor.dom.fg2c, editor.dom.bgc, editor.dom.evc, editor.dom.ev2c].forEach(function (x) { - x.style.opacity = 0.3; - }); - editor.dom.bg2c.style.opacity = 1; - }; - // 当前景层2按钮选中情况发生变动 - editor.uifunctions.layerMod5_onchange = function () { - editor.layerMod = editor.dom.layerMod5.value; - [editor.dom.bg2c, editor.dom.fgc, editor.dom.bgc, editor.dom.evc, editor.dom.ev2c].forEach(function (x) { - x.style.opacity = 0.3; - }); - editor.dom.fg2c.style.opacity = 1; - }; // 绑定onchange - editor.dom.layerMod4.onchange = editor.uifunctions.layerMod4_onchange; - editor.dom.layerMod5.onchange = editor.uifunctions.layerMod5_onchange; - // 编辑器下移动图块 - editor.constructor.moveBgFg = function (startPos, endPos, name, callback) { - if (!startPos || !endPos || ["bgmap", "bg2map", "fgmap", "fg2map"].indexOf(name) < 0) return; - if (startPos.x == endPos.x && startPos.y == endPos.y) return; - editor[name][endPos.y][endPos.x] = editor[name][startPos.y][startPos.x]; - editor[name][startPos.y][startPos.x] = 0; - editor.updateMap(); - editor.file.saveFloorFile(function (err) { - if (err) { - printe(err); - throw (err); - } - printf('移动图块成功'); - editor.drawPosSelection(); - if (callback) callback(); - }); - }; - // 编辑器下交换图块 - editor.constructor.exchangeBgFg = function (startPos, endPos, name, callback) { - if (!startPos || !endPos || ["bgmap", "bg2map", "fgmap", "fg2map"].indexOf(name) < 0) return; - if (startPos.x == endPos.x && startPos.y == endPos.y) return; - var value = editor[name][endPos.y][endPos.x]; - editor[name][endPos.y][endPos.x] = editor[name][startPos.y][startPos.x]; - editor[name][startPos.y][startPos.x] = value; - editor.updateMap(); - editor.file.saveFloorFile(function (err) { - if (err) { - printe(err); - throw (err); - } - printf('交换图块成功'); - editor.drawPosSelection(); - if (callback) callback(); - }); + editor.dom.layerMod4.onchange = function () { + editor.uifunctions.setLayerMod('bg2map'); }; + editor.dom.layerMod5.onchange = function () { + editor.uifunctions.setLayerMod('fg2map'); + } // 继续进行afterCoreReset if (callback) callback(); }; @@ -754,7 +514,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = ], "cannotOut", direction)) return false; if (this._canMoveHero_checkCannotInOut([ - extraData.bgArray[ny][nx], extraData.bg2Array[y][x], extraData.fgArray[ny][nx], extraData.fg2Array[y][x], extraData.eventArray[ny][nx] + extraData.bgArray[ny][nx], extraData.bg2Array[ny][nx], extraData.fgArray[ny][nx], extraData.fg2Array[ny][nx], extraData.eventArray[ny][nx] ], "cannotIn", direction)) return false; From c4d11b1ee5653616b99a55d0c4eda7f2cec21a5c Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sat, 30 May 2020 19:03:56 +0800 Subject: [PATCH 40/73] =?UTF-8?q?=E4=BD=BF=E7=94=A8ajax=E8=8E=B7=E5=BE=97i?= =?UTF-8?q?ndex.html?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/_server/editor.js b/_server/editor.js index e31d6a3c..aefd65fb 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -152,8 +152,14 @@ editor.prototype.init = function (callback) { editor.airwallImg = new Image(); editor.airwallImg.src = './project/materials/airwall.png'; - fs.readFile("index.html", 'utf-8', function(err, data) { - var str = data.split(''); + var xhr = new XMLHttpRequest(); + xhr.open('GET', 'index.html', true); + xhr.onload = function () { + if (xhr.status != 200) { + alert("HTTP " + xhr.status); + return; + } + var str = xhr.response.split(''); if (str.length != 3) window.onerror("index.html格式不正确"); editor.dom.gameInject.innerHTML = str[1]; @@ -252,8 +258,11 @@ editor.prototype.init = function (callback) { mainScript.id = "mainScript"; mainScript.src = "main.js"; editor.dom.gameInject.appendChild(mainScript); - }) - + }; + xhr.onabort = xhr.ontimeout = xhr.onerror = function () { + alert("无法访问index.html"); + } + xhr.send(); } editor.prototype.mapInit = function () { From 0770aa3201c10414acc04a30e36346bcc7f163ae Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sat, 30 May 2020 19:25:52 +0800 Subject: [PATCH 41/73] =?UTF-8?q?=E4=BF=AE=E5=A4=8DsetBlock=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/maps.js | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/libs/maps.js b/libs/maps.js index a7ac82f7..e3541890 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -1618,16 +1618,6 @@ maps.prototype.setBlock = function (number, x, y, floorId) { } var originBlock = core.getBlock(x, y, floorId, true); var originEvent = originBlock == null ? null : originBlock.block.event; - if (floorId == core.status.floorId) { - - core.removeGlobalAnimate(x, y); - core.clearMap('event', x * 32, y * 32, 32, 32); - if (originBlock != null) { - var height = (originBlock.block.event || {}).height || 32; - if (height > 32) - core.clearMap('event2', x * 32, y * 32 + 32 - height, 32, height - 32); - } - } if (originBlock == null) { core.status.maps[floorId].blocks.push(block); } @@ -1642,15 +1632,14 @@ maps.prototype.setBlock = function (number, x, y, floorId) { core.drawMap(); } else { if (originEvent != null) { - this._removeBlockFromMap(floorId, {event: originEvent}); + this._removeBlockFromMap(floorId, {x: x, y: y, event: originEvent}); } if (!block.disable) { core.drawBlock(block); + core.addGlobalAnimate(block); + core.updateStatusBar(); } } - if (originEvent != null) { - this._removeBlockFromMap() - } } } From 256adcc24b8d6f9e656e1212382fb910b2375943 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sat, 30 May 2020 20:23:05 +0800 Subject: [PATCH 42/73] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AF=B9=E8=AF=9D?= =?UTF-8?q?=E6=A1=86=E5=90=A7=E6=A0=87=E9=A2=98=E8=B6=8A=E7=95=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/ui.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libs/ui.js b/libs/ui.js index c2a247c1..257e1513 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -1369,6 +1369,9 @@ ui.prototype._drawTextBox_getHorizontalPosition = function (content, titleInfo, var min_width = 220 - paddingLeft, max_width = validWidth; // 无行走图或头像,则可以适当缩小min_width if (titleInfo.image == null) min_width = 160; + if (titleInfo.title) { + min_width = core.clamp(core.calWidth('ui', titleInfo.title, this._buildFont(core.status.textAttribute.titlefont, true)), min_width, max_width); + } validWidth = this._calTextBoxWidth('ui', realContent, min_width, max_width, this._buildFont()); width = validWidth + paddingLeft + paddingRight; left = core.clamp(32 * posInfo.px + 16 - width / 2 - core.bigmap.offsetX, left, right - width); From c2a2c58b5fd9971c1e2ccc40abadf3e2208be358 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sat, 30 May 2020 23:00:07 +0800 Subject: [PATCH 43/73] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=80=AA=E7=89=A9ID?= =?UTF-8?q?=E9=97=AE=E9=A2=98;=E9=AA=B7=E9=AB=85=E7=B4=A0=E6=9D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor_blockly.js | 9 +++++++++ _server/editor_datapanel.js | 9 ++++++--- libs/ui.js | 2 ++ project/enemys.js | 14 +++++++------- project/floors/sample1.js | 12 ++++++------ project/functions.js | 3 ++- project/icons.js | 14 +++++++------- project/items.js | 5 ++++- project/maps.js | 12 ++++++------ project/materials/enemys.png | Bin 70563 -> 69090 bytes 10 files changed, 49 insertions(+), 31 deletions(-) diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 8b24cb2e..1a8e33c4 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -491,6 +491,15 @@ editor_blockly = function () { }).sort(); } + // 提供 hero.xxx 补全 + index = content.lastIndexOf("hero."); + if (index >= 0) { + var token = content.substring(index+6); + return Object.keys(core.status.hero).filter(function (one) { + return one != token && one.startsWith(token); + }).sort(); + } + var namesObj={}; namesObj.allIds = ["this"].concat(core.getAllIconIds()); diff --git a/_server/editor_datapanel.js b/_server/editor_datapanel.js index 336cecfb..ec94b6e0 100644 --- a/_server/editor_datapanel.js +++ b/_server/editor_datapanel.js @@ -441,9 +441,12 @@ editor_datapanel_wrapper = function (editor) { }) } } else if (cls == 'items') { - if (confirm("你确定要批量清空【全塔道具】的全部属性么?这是个不可逆操作!")) { - for (var id in items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a) - _clearItem(id); + if (confirm("你确定要批量清空【全塔所有自动注册且未修改ID的道具】的全部属性么?这是个不可逆操作!")) { + for (var id in items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a) { + if (/^I\d+$/.test(id)) { + _clearItem(id); + } + } editor.file.saveSetting('items', [], function (err) { if (err) printe(err); else printf("全塔全部道具属性清空成功!"); diff --git a/libs/ui.js b/libs/ui.js index 257e1513..f2d67825 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -2921,6 +2921,8 @@ ui.prototype._drawStatistics_items = function (floorId, floor, id, obj) { def = core.status.hero.def - temp.def; mdef = core.status.hero.mdef - temp.mdef; core.status.hero = temp; + window.hero = core.status.hero; + window.flags = core.status.hero.flags; } else if (obj.cls[id]=='equips') { var values = core.material.items[id].equip || {}; diff --git a/project/enemys.js b/project/enemys.js index 04b8c47b..01985277 100644 --- a/project/enemys.js +++ b/project/enemys.js @@ -51,12 +51,7 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = "yellowGateKeeper": {"name":"初级卫兵","hp":100,"atk":120,"def":0,"money":10,"exp":0,"point":0,"special":0}, "blueGateKeeper": {"name":"中级卫兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, "redGateKeeper": {"name":"高级卫兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, - "blackMS": {"name":"黑衣魔王","hp":1000,"atk":500,"def":0,"money":1000,"exp":1000,"point":0,"special":0,"notBomb":true}, - "yellowMS": {"name":"黄衣魔王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, - "greenMS": {"name":"青衣武士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, "magicMaster": {"name":"黑暗大法师","hp":100,"atk":120,"def":0,"money":12,"exp":0,"point":0,"special":11,"value":0.3333333333333333,"add":true,"notBomb":true}, - "blueMS": {"name":"白衣武士","hp":100,"atk":120,"def":0,"money":17,"exp":0,"point":0,"special":16}, - "redMS": {"name":"红衣魔王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, "devilWarrior": {"name":"魔神武士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, "fairyEnemy": {"name":"仙子","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, "dragon": {"name":"魔龙","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, @@ -73,12 +68,17 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = "greenKnight": {"name":"强盾骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, "bowman": {"name":"弓兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, "liteBowman": {"name":"精锐弓兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, - "crismonZombie": {"name":"红兽人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "crimsonZombie": {"name":"红兽人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, "watcherSlime": {"name":"邪眼怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, "mutantSlimeman": {"name":"变异战士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, "devilKnight": {"name":"恶灵骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, "grayPriest": {"name":"混沌法师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, "greenGateKeeper": {"name":"卫兵队长","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, "ghostSoldier": {"name":"冥队长","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, - "frostBat": {"name":"寒蝙蝠","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0} + "frostBat": {"name":"寒蝙蝠","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "blackKing": {"name":"黑衣魔王","hp":1000,"atk":500,"def":0,"money":1000,"exp":1000,"point":0,"special":0,"notBomb":true}, + "yellowKing": {"name":"黄衣魔王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "greenKing": {"name":"青衣武士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "redKing": {"name":"红衣魔王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "blueKing": {"name":"白衣武士","hp":100,"atk":120,"def":0,"money":17,"exp":0,"point":0,"special":16} } \ No newline at end of file diff --git a/project/floors/sample1.js b/project/floors/sample1.js index ae4695cb..8f3eafaa 100644 --- a/project/floors/sample1.js +++ b/project/floors/sample1.js @@ -52,7 +52,7 @@ main.floors.sample1= "1,7": [ { "type": "setBlock", - "number": "redMS", + "number": "redKing", "loc": [ [ 1, @@ -65,10 +65,10 @@ main.floors.sample1= "type": "sleep", "time": 500 }, - "\t[redMS]\b[this,1,5]欢迎来到魔塔,你是第一百位挑战者。\n若你能打败我所有的手下,我就与你一对一的决斗。\n现在你必须接受我的安排。", + "\t[redKing]\b[this,1,5]欢迎来到魔塔,你是第一百位挑战者。\n若你能打败我所有的手下,我就与你一对一的决斗。\n现在你必须接受我的安排。", { "type": "setBlock", - "number": "blueMS", + "number": "blueKing", "loc": [ [ 1, @@ -252,9 +252,9 @@ main.floors.sample1= } ], "10,4": [ - "\t[blackMS]\b[this]你终于还是来了。", + "\t[blackKing]\b[this]你终于还是来了。", "\t[hero]\b[hero]放开我们的公主!", - "\t[blackMS]\b[this]如果我不愿意呢?", + "\t[blackKing]\b[this]如果我不愿意呢?", "\t[hero]\b[hero]无需多说,拔剑吧!", { "type": "battle", @@ -270,7 +270,7 @@ main.floors.sample1= 7 ] }, - "\t[blackMS]没想到你已经变得这么强大了... 算你厉害。\n公主就交给你了,请好好对她。", + "\t[blackKing]没想到你已经变得这么强大了... 算你厉害。\n公主就交给你了,请好好对她。", { "type": "hide" } diff --git a/project/functions.js b/project/functions.js index b9cf9b75..da60d2fd 100644 --- a/project/functions.js +++ b/project/functions.js @@ -15,6 +15,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = core.status.played = true; // 初始化人物,图标,统计信息 core.status.hero = core.clone(hero); + window.hero = core.status.hero; window.flags = core.status.hero.flags; core.events.setHeroIcon(core.status.hero.image, true); core.control._initStatistics(core.animateFrame.totalTime); @@ -510,7 +511,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = // 光环和支援检查 if (!core.status.checkBlock) core.status.checkBlock = {}; - if (core.status.checkBlock.needCache) { + if (core.status.checkBlock.needCache || floorId != core.status.floorId) { // 从V2.5.4开始,对光环效果增加缓存,以解决多次重复计算的问题,从而大幅提升运行效率。 var hp_buff = 0, atk_buff = 0, diff --git a/project/icons.js b/project/icons.js index 685c3f49..d99197ee 100644 --- a/project/icons.js +++ b/project/icons.js @@ -186,12 +186,7 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "yellowGateKeeper": 20, "blueGateKeeper": 21, "redGateKeeper": 22, - "blackMS": 28, - "yellowMS": 29, - "greenMS": 30, "magicMaster": 46, - "blueMS": 45, - "redMS": 44, "devilWarrior": 41, "fairyEnemy": 58, "dragon": 56, @@ -208,7 +203,7 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "greenKnight": 65, "bowman": 66, "liteBowman": 67, - "crismonZombie": 68, + "crimsonZombie": 68, "watcherSlime": 70, "mutantSlimeman": 71, "frostBat": 72, @@ -216,7 +211,12 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "grayPriest": 74, "greenGateKeeper": 75, "ghostSoldier": 11, - "evilHero": 40 + "evilHero": 40, + "blackKing": 28, + "yellowKing": 29, + "greenKing": 30, + "redKing": 44, + "blueKing": 45 }, "enemy48": { "angel": 0, diff --git a/project/items.js b/project/items.js index 46706167..6ed8ea67 100644 --- a/project/items.js +++ b/project/items.js @@ -296,7 +296,10 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "cls": "items", "name": "圣水", "itemEffect": "core.status.hero.hp *= 2", - "itemEffectTip": ",生命值翻倍" + "itemEffectTip": ",生命值翻倍", + "useItemEffect": "core.status.hero.hp *= 2;", + "canUseItemEffect": "true", + "text": "生命值翻倍" }, "silverCoin": { "cls": "items", diff --git a/project/maps.js b/project/maps.js index 9acc1449..9e7b2037 100644 --- a/project/maps.js +++ b/project/maps.js @@ -168,9 +168,9 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "226": {"cls":"enemys","id":"yellowKnight"}, "227": {"cls":"enemys","id":"redKnight"}, "228": {"cls":"enemys","id":"darkKnight"}, - "229": {"cls":"enemys","id":"blackMS"}, - "230": {"cls":"enemys","id":"yellowMS"}, - "231": {"cls":"enemys","id":"greenMS"}, + "229": {"cls":"enemys","id":"blackKing"}, + "230": {"cls":"enemys","id":"yellowKing"}, + "231": {"cls":"enemys","id":"greenKing"}, "232": {"cls":"enemys","id":"blueKnight"}, "233": {"cls":"enemys","id":"goldSlime"}, "234": {"cls":"enemys","id":"poisonSkeleton"}, @@ -184,8 +184,8 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "242": {"cls":"enemys","id":"devilWarrior"}, "243": {"cls":"enemys","id":"demonPriest"}, "244": {"cls":"enemys","id":"goldHornSlime"}, - "245": {"cls":"enemys","id":"redMS"}, - "246": {"cls":"enemys","id":"blueMS"}, + "245": {"cls":"enemys","id":"redKing"}, + "246": {"cls":"enemys","id":"blueKing"}, "247": {"cls":"enemys","id":"magicMaster"}, "248": {"cls":"enemys","id":"silverSlime"}, "249": {"cls":"enemys","id":"blademaster"}, @@ -212,7 +212,7 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "270": {"cls":"enemys","id":"greenKnight"}, "271": {"cls":"enemys","id":"bowman"}, "272": {"cls":"enemys","id":"liteBowman"}, - "273": {"cls":"enemys","id":"crismonZombie"}, + "273": {"cls":"enemys","id":"crimsonZombie"}, "274": {"cls":"enemys","id":"frozenSkeleton"}, "275": {"cls":"enemys","id":"watcherSlime"}, "276": {"cls":"enemys","id":"mutantSlimeman"}, diff --git a/project/materials/enemys.png b/project/materials/enemys.png index 344f37886dec9a12abe1cb6b1f2db5e97b9805ef..c5f0ca5efe6389be71b9d419c7679e4403fe61b2 100644 GIT binary patch literal 69090 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

    x?x;FSE?)yrV)tIR9prLHS+HS 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 z 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 Date: Sun, 31 May 2020 11:44:05 +0800 Subject: [PATCH 44/73] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8E=A8=E9=98=BB?= =?UTF-8?q?=E5=87=BB=E5=90=8C=E6=97=B6=E5=88=87=E6=8D=A2=E6=A5=BC=E5=B1=82?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/events.js | 87 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 62 insertions(+), 25 deletions(-) diff --git a/libs/events.js b/libs/events.js index a55c540a..a46fa395 100644 --- a/libs/events.js +++ b/libs/events.js @@ -325,9 +325,12 @@ events.prototype.trigger = function (x, y, callback) { return; } if (core.status.gameOver) return _executeCallback(); - if (core.status.event.id && core.status.event.id != 'action') return _executeCallback(); - - var inAction = core.status.event.id == 'action'; + if (core.status.event.id == 'action') { + core.insertAction({"type": "function", "function": "function () { core.events._trigger_inAction("+x+","+y+"); }", "async": true}, + null, null, null, true); + return _executeCallback(); + } + if (core.status.event.id) return _executeCallback(); var block = core.getBlock(x, y); if (block == null) return _executeCallback(); @@ -343,26 +346,39 @@ events.prototype.trigger = function (x, y, callback) { if (noPass) core.clearAutomaticRouteNode(x, y); // 转换楼层能否穿透 - if (!inAction && trigger == 'changeFloor' && !noPass && this._trigger_ignoreChangeFloor(block)) + if (trigger == 'changeFloor' && !noPass && this._trigger_ignoreChangeFloor(block)) return; core.status.automaticRoute.moveDirectly = false; - if (inAction) { - // 切换事件点的坐标 - this.setEvents(null, block.x, block.y); - if (block.event.trigger == 'action') { - this.insertAction(block.event.data); - } - else { - this.doSystemEvent(block.event.trigger, block, _executeCallback); - return; - } - } else { - this.doSystemEvent(trigger, block); - } + this.doSystemEvent(trigger, block); } return _executeCallback(); } +events.prototype._trigger_inAction = function (x, y) { + if (core.status.gameOver || core.status.event.id != 'action') return; + + var block = core.getBlock(x, y); + if (block == null) return core.doAction(); + block = block.block; + + // 执行该点的脚本 + try { + eval(block.event.script); + } catch (e) { main.log(e); } + + if (block.event.trigger && block.event.trigger != 'null') { + this.setEvents(null, x, y); + if (block.event.trigger == 'action') { + this.insertAction(block.event.data); + } + else { + this.doSystemEvent(block.event.trigger, block, core.doAction); + return; + } + } + return core.doAction(); +} + events.prototype._trigger_ignoreChangeFloor = function (block) { var able = core.flags.ignoreChangeFloor; if (block.event.data && block.event.data.ignoreChangeFloor != null) @@ -871,7 +887,10 @@ events.prototype.doEvent = function (data, x, y, prefix) { events.prototype.setEvents = function (list, x, y, callback) { var data = core.status.event.data || {}; if (list) { - data.list = [{todo: core.clone(list), total: core.clone(list), condition: "false"}]; + var l = core.clone(list); + if (!(l instanceof Array)) l = [l]; + l.push({"type": "_label"}); + data.list = [{todo: l, total: core.clone(l), condition: "false"}]; // 结束所有正在执行的自动事件 if (list.length == 0) { core.status.autoEvents.forEach(function (autoEvent) { @@ -975,10 +994,17 @@ events.prototype.insertAction = function (action, x, y, callback, addToLast) { this.startEvents(action, x, y, callback); } else { - if (addToLast) - core.push(core.status.event.data.list[0].todo, action) - else - core.unshift(core.status.event.data.list[0].todo, action); + if (addToLast) { + var list = core.status.event.data.list[0].todo; + var index = 0; + for (var index = 0; index < list.length; index++) { + if (list[index].type == '_label') { + list.splice(index, 0, action); + break; + } + } + } + else core.unshift(core.status.event.data.list[0].todo, action); this.setEvents(null, x, y, callback); } } @@ -1258,6 +1284,10 @@ events.prototype._action_comment = function (data, x, y, prefix) { core.doAction(); } +events.prototype._action__label = function (data, x, y, prefix) { + core.doAction(); +} + events.prototype._action_setText = function (data, x, y, prefix) { ["position", "offset", "align", "bold", "titlefont", "textfont", "lineHeight", "time", "interval"].forEach(function (t) { if (data[t] != null) core.status.textAttribute[t] = data[t]; @@ -1410,6 +1440,7 @@ events.prototype._action_moveAction = function (data, x, y, prefix) { core.insertAction([ {"type": "moveHero", "steps": ["forward"]}, {"type": "function", "function": "function() { core.moveOneStep(core.doAction); }", "async": true}, + {"type": "_label"}, ]); } } @@ -1594,7 +1625,7 @@ events.prototype._action_battle = function (data, x, y, prefix) { events.prototype._action_trigger = function (data, x, y, prefix) { var loc = this.__action_getLoc(data.loc, x, y, prefix); - core.trigger(loc[0], loc[1], core.doAction); + this._trigger_inAction(loc[0], loc[1]); } events.prototype._action_insert = function (data, x, y, prefix) { @@ -1941,8 +1972,11 @@ events.prototype._precompile_forEach = function (data) { events.prototype._action_while = function (data, x, y, prefix) { if (core.calValue(data.condition, prefix)) { + var list = core.clone(data.data); + if (!(list instanceof Array)) list = [list]; + list.push({"type": "_label"}); core.unshift(core.status.event.data.list, - {"todo": core.clone(data.data), "total": core.clone(data.data), "condition": data.condition} + {"todo": list, "total": core.clone(list), "condition": data.condition} ); } core.doAction(); @@ -1955,8 +1989,11 @@ events.prototype._precompile_while = function (data) { } events.prototype._action_dowhile = function (data, x, y, prefix) { + var list = core.clone(data.data); + if (!(list instanceof Array)) list = [list]; + list.push({"type": "_label"}); core.unshift(core.status.event.data.list, - {"todo": core.clone(data.data), "total": core.clone(data.data), "condition": data.condition} + {"todo": list, "total": core.clone(list), "condition": data.condition} ); core.doAction(); } From d5bdb1f49a081f11eef7d1418ed3cdaebb9b807e Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 31 May 2020 13:08:11 +0800 Subject: [PATCH 45/73] =?UTF-8?q?=E9=87=8D=E6=9E=84=E5=AD=98=E8=AF=BB?= =?UTF-8?q?=E6=A1=A3=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaActionParser.js | 4 +- _server/editor_game.js | 2 +- libs/maps.js | 81 ++++++++++++++----------------------- libs/ui.js | 2 +- project/functions.js | 3 +- project/plugins.js | 4 +- 6 files changed, 38 insertions(+), 58 deletions(-) diff --git a/_server/MotaActionParser.js b/_server/MotaActionParser.js index 9d012679..ffa74fa7 100644 --- a/_server/MotaActionParser.js +++ b/_server/MotaActionParser.js @@ -1329,7 +1329,7 @@ MotaActionFunctions.replaceToName = function (str) { str = str.replace(new RegExp("item:(" + list.join("|") + ")\\b", "g"), function (a, b) { return map[b] ? ("物品:" + map[b]) : b; }).replace(/item:/g, "物品:"); - str = str.replace(/flag:/g, "变量:").replace(/switch:/g, "独立开关:").replace(/global:/g, "全局存储:").replace(/temp:/g, "临时变量:"); + str = str.replace(/flag:/g, "变量:").replace(/switch:/g, "独立开关:").replace(/global:/g, "全局存储:"); MotaActionFunctions.pattern.replaceEnemyValueList.forEach(function (v) { @@ -1367,7 +1367,7 @@ MotaActionFunctions.replaceFromName = function (str) { str = str.replace(new RegExp("物品[::](" + list.join("|") + ")(?:$|(?=[^\\w\\u4e00-\\u9fa5]))", "g"), function (a, b) { return map[b] ? ("item:" + map[b]) : b; }).replace(/物品[::]/g, "item:"); - str = str.replace(/临时变量[::]/g, "temp d:").replace(/变量[::]/g, "flag:").replace(/独立开关[::]/g, "switch:").replace(/全局存储[::]/g, "global:"); + str = str.replace(/变量[::]/g, "flag:").replace(/独立开关[::]/g, "switch:").replace(/全局存储[::]/g, "global:"); map = {}; list = []; MotaActionFunctions.pattern.replaceEnemyList.forEach(function (v) { diff --git a/_server/editor_game.js b/_server/editor_game.js index a62f54a4..c267511b 100644 --- a/_server/editor_game.js +++ b/_server/editor_game.js @@ -135,7 +135,7 @@ editor_game_wrapper = function (editor, main, core) { // 获取当前地图 editor_game.prototype.fetchMapFromCore = function () { - var mapArray = core.getMapArray(core.status.floorId, true); + var mapArray = core.getMapArray(core.status.floorId); editor.map = mapArray.map(function (v) { return v.map(function (v) { var x = parseInt(v), y = editor.indexs[x]; diff --git a/libs/maps.js b/libs/maps.js index e3541890..5b8ea85c 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -61,7 +61,7 @@ maps.prototype.loadFloor = function (floorId, map) { } /// 根据需求解析出blocks -maps.prototype.extractBlocks = function (map) { +maps.prototype.extractBlocks = function (map, flags) { map = map || core.status.floorId; if (typeof map == 'string') map = (core.status.maps||{})[map]; if (!map) return; @@ -71,16 +71,16 @@ maps.prototype.extractBlocks = function (map) { return; } var floorId = map.floorId; - map.blocks = this._mapIntoBlocks(this.decompressMap(map.map, floorId), core.floors[floorId], floorId); + map.blocks = this._mapIntoBlocks(this.decompressMap(map.map, floorId), core.floors[floorId], floorId, flags); } -maps.prototype._mapIntoBlocks = function (map, floor, floorId) { +maps.prototype._mapIntoBlocks = function (map, floor, floorId, flags) { var blocks = []; var mw = core.floors[floorId].width; var mh = core.floors[floorId].height; for (var i = 0; i < mh; i++) { for (var j = 0; j < mw; j++) { - var block = this.initBlock(j, i, (map[i] || [])[j], true, floor); + var block = this.initBlock(j, i, (map[i] || [])[j], true, floor, flags); if (block.id != 0 || block.event.trigger) blocks.push(block); } @@ -129,12 +129,12 @@ maps.prototype.getIdOfThis = function (id) { } ////// 数字和ID的对应关系 ////// -maps.prototype.initBlock = function (x, y, id, addInfo, eventFloor) { +maps.prototype.initBlock = function (x, y, id, addInfo, eventFloor, flags) { var disable = null; - id = "" + (id || 0); - if (id.endsWith(":f")) disable = true; - if (id.endsWith(":t")) disable = false; - id = parseInt(id); + if (eventFloor != null) { + if (flags == null) flags = (core.status.hero || {}).flags || {}; + disable = flags[[eventFloor.floorId, x, y, 'md'].join('@')]; + } var block = {'x': x, 'y': y, 'id': id}; if (disable != null) block.disable = disable; @@ -221,30 +221,9 @@ maps.prototype._initMaps = function () { return maps; } -maps.prototype._initFloorMap = function (floorId) { - var map = core.clone(core.floors[floorId].map); - - var mw = core.floors[floorId].width; - var mh = core.floors[floorId].height; - - for (var x = 0; x < mh; x++) { - if (map[x] == null) map[x] = []; - for (var y = 0; y < mw; y++) { - if (map[x][y] == null) map[x][y] = 0; - // check "disable" - var event = core.floors[floorId].events[y + "," + x]; - if (event && event.enable === false && main.mode == 'play') { - map[x][y] += ":f"; - } - } - } - - return map; -} - ////// 压缩地图 maps.prototype.compressMap = function (mapArr, floorId) { - var floorMap = this._initFloorMap(floorId); + var floorMap = core.floors[floorId].map; if (core.utils.same(mapArr, floorMap)) return null; var mw = core.floors[floorId].width; @@ -268,14 +247,14 @@ maps.prototype.compressMap = function (mapArr, floorId) { ////// 解压缩地图 maps.prototype.decompressMap = function (mapArr, floorId) { - var floorMap = this._initFloorMap(floorId); - if (!mapArr) return floorMap; + var floorMap = core.floors[floorId].map; + if (!mapArr) return core.clone(floorMap); var mw = core.floors[floorId].width; var mh = core.floors[floorId].height; for (var x = 0; x < mh; x++) { if (mapArr[x] === 0) { - mapArr[x] = floorMap[x]; + mapArr[x] = core.clone(floorMap[x]); } else { for (var y = 0; y < mw; y++) { @@ -307,7 +286,7 @@ maps.prototype.saveMap = function (floorId) { var map = maps[floorId]; var thisFloor = this._compressFloorData(map, core.floors[floorId]); if (map.blocks) { - var mapArr = this.compressMap(this._getMapArrayFromBlocks(map.blocks, map.width, map.height, true), floorId); + var mapArr = this.compressMap(this._getMapArrayFromBlocks(map.blocks, map.width, map.height), floorId); if (mapArr != null) thisFloor.map = mapArr; } return thisFloor; @@ -359,29 +338,21 @@ maps.prototype.resizeMap = function (floorId) { } ////// 将当前地图重新变成二维数组形式 ////// -maps.prototype.getMapArray = function (floorId, showDisable) { +maps.prototype.getMapArray = function (floorId) { floorId = floorId || core.status.floorId; var map = core.status.maps[floorId]; if (!map.blocks) return map.map; - return this._getMapArrayFromBlocks(map.blocks, map.width, map.height, showDisable); + return this._getMapArrayFromBlocks(map.blocks, map.width, map.height); } -maps.prototype._getMapArrayFromBlocks = function (blockArray, width, height, showDisable) { +maps.prototype._getMapArrayFromBlocks = function (blockArray, width, height) { var blocks = []; var allzero = []; for (var y = 0; y < width; y++) allzero.push(0); for (var x = 0; x < height; x++) blocks.push(core.clone(allzero)); blockArray.forEach(function (block) { - var x = block.x, y = block.y; - if (block.disable) { - if (showDisable) blocks[y][x] = block.id + ":f"; - } - else { - blocks[y][x] = block.id; - if (showDisable && block.disable === false) - blocks[y][x] = block.id + ":t"; - } + blocks[block.y][block.x] = block.id; }); return blocks; } @@ -414,8 +385,8 @@ maps.prototype._getBgFgMapArray = function (name, floorId, noCache) { for (var x = 0; x < width; x++) { for (var y = 0; y < height; y++) { arr[y] = arr[y] || []; - var flag = "__" + name + "Map__" + floorId + "_" + x + "_" + y; - var vFlag = "__" + name + "Value__" + floorId + "_" + x + "_" + y; + var flag = [floorId, x, y, name+'_disable'].join('@'); + var vFlag = [floorId, x, y, name+'_value'].join('@'); if (core.hasFlag(flag)) arr[y][x] = 0; else arr[y][x] = core.getFlag(vFlag, arr[y][x] || 0); if (main.mode == 'editor') arr[y][x] = arr[y][x].idnum || arr[y][x] || 0; @@ -1437,6 +1408,7 @@ maps.prototype.showBlock = function (x, y, floorId) { // 本身是禁用事件,启用之 if (block.disable) { block.disable = false; + core.setFlag([floorId, x, y, 'md'].join('@'), false); // 在本层,添加动画 if (floorId == core.status.floorId) { if (block.event.cls == 'autotile') { @@ -1471,6 +1443,7 @@ maps.prototype.hideBlockByIndex = function (index, floorId) { core.extractBlocks(floorId); var blocks = core.status.maps[floorId].blocks, block = blocks[index]; block.disable = true; + core.setFlag([floorId, block.x, block.y, 'md'].join('@'), true); } ////// 一次性隐藏多个block ////// @@ -1519,6 +1492,7 @@ maps.prototype.removeBlockByIndex = function (index, floorId) { core.extractBlocks(floorId); var blocks = core.status.maps[floorId].blocks, block = blocks[index]; blocks.splice(index, 1); + core.setFlag([floorId, block.x, block.y, 'md'].join('@'), true); } ////// 一次性删除多个block ////// @@ -1552,7 +1526,7 @@ maps.prototype._triggerBgFgMap = function (type, name, loc, floorId, callback) { if (loc.length == 0) return; loc.forEach(function (t) { var x = t[0], y = t[1]; - var flag = "__" + name + "Map__" + floorId + "_" + x + "_" + y; + var flag = [floorId, x, y, name+"_disable"].join('@'); if (type == 'hide') core.setFlag(flag, true); else core.removeFlag(flag); }) @@ -1620,6 +1594,7 @@ maps.prototype.setBlock = function (number, x, y, floorId) { var originEvent = originBlock == null ? null : originBlock.block.event; if (originBlock == null) { core.status.maps[floorId].blocks.push(block); + core.setFlag([floorId, x, y, 'md'].join('@'), false); } else { originBlock.block.id = number; @@ -1792,7 +1767,7 @@ maps.prototype.setBgFgBlock = function (name, number, x, y, floorId) { else number = core.getNumberById(number); } - var vFlag = "__" + name + "Value__" + floorId + "_" + x + "_" + y; + var vFlag = [floorId, x, y, name + "_value"].join('@'); core.setFlag(vFlag, number); core.status[name + "maps"][floorId] = null; @@ -1811,6 +1786,10 @@ maps.prototype.resetMap = function (floorId) { var needRefresh = false; floorId.forEach(function (t) { core.status.maps[t] = core.maps.loadFloor(t); + // 重置本层的全部独立事件 + Object.keys(core.status.hero.flags).forEach(function (one) { + if (one.startsWith(floorId + '@')) delete core.status.hero.flags[one]; + }) if (t == core.status.floorId) needRefresh = true; }); if (needRefresh) this.drawMap(); diff --git a/libs/ui.js b/libs/ui.js index f2d67825..ab653296 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -2712,7 +2712,7 @@ ui.prototype._drawSLPanel_drawRecord = function(title, data, x, y, size, cho, hi core.strokeRect('ui', x-size/2, y+15, size, size, cho?strokeColor:'#FFFFFF', cho?6:2); if (data && data.floorId) { var map = core.maps.loadMap(data.maps, data.floorId); - core.extractBlocks(map); + core.extractBlocks(map, data.hero.flags); core.drawThumbnail(data.floorId, map.blocks, { heroLoc: data.hero.loc, heroIcon: data.hero.image, flags: data.hero.flags }, { diff --git a/project/functions.js b/project/functions.js index da60d2fd..d143ce97 100644 --- a/project/functions.js +++ b/project/functions.js @@ -120,6 +120,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = core.status.maps[floorId].blocks.forEach(function (block) { if (block.disable && core.enemys.hasSpecial(block.event.id, 23)) { block.disable = false; + core.setFlag([floorId, block.x, block.y, 'md'].join('@'), false); } }); core.control.gatherFollowers(); @@ -947,7 +948,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = // 读档操作;从存储中读取了内容后的行为 // 重置游戏和路线 - core.resetGame(data.hero, data.hard, data.floorId, core.maps.loadMap(data.maps), data.values); + core.resetGame(data.hero, data.hard, data.floorId, core.maps.loadMap(data.maps, null, data.hero.flags), data.values); core.status.route = core.decodeRoute(data.route); // 文字属性,全局属性 core.status.textAttribute = core.getFlag('textAttribute', core.status.textAttribute); diff --git a/project/plugins.js b/project/plugins.js index ccb8b675..e18ab765 100644 --- a/project/plugins.js +++ b/project/plugins.js @@ -541,7 +541,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = loc.forEach(function (t) { var x = t[0], y = t[1]; - var flag = "__" + name + "Map__" + floorId + "_" + x + "_" + y; + var flag = [floorId, x, y, name+'_disable'].join('@'); if (type == 'hide') core.setFlag(flag, true); else core.removeFlag(flag); }); @@ -564,7 +564,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = else number = core.getNumberById(number); } - var vFlag = "__" + name + "Value__" + floorId + "_" + x + "_" + y; + var vFlag = [floorId, x, y, name + "_value"].join('@'); core.setFlag(vFlag, number); core.status[name + "maps"][floorId] = null; From 753bd92cc1ef4bebd997845a2f1817f570011586 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 31 May 2020 13:17:40 +0800 Subject: [PATCH 46/73] =?UTF-8?q?=E6=90=9C=E7=B4=A2=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor_blockly.js | 2 +- editor-mobile.html | 2 +- editor.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 1a8e33c4..2924cb28 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -291,7 +291,7 @@ editor_blockly = function () { 'sleep_s', 'setBlock_s', 'insert_1_s' - ]; // 最常用的15个图块 + ]; // 最常用的15个事件 editor_blockly.lastUsedTypeNum=15; editor_blockly.addIntoLastUsedType=function(blockId) { diff --git a/editor-mobile.html b/editor-mobile.html index d064b28d..d063a74b 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -212,7 +212,7 @@

    - +
    diff --git a/editor.html b/editor.html index 22116b23..f7db0cdd 100644 --- a/editor.html +++ b/editor.html @@ -207,7 +207,7 @@
    - +
    From d6a3f119be7a0c58d754ce4da4b3f8605cf9e368 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 31 May 2020 13:46:23 +0800 Subject: [PATCH 47/73] Fix setBlock --- libs/maps.js | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/maps.js b/libs/maps.js index 5b8ea85c..73f0798a 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -1595,6 +1595,7 @@ maps.prototype.setBlock = function (number, x, y, floorId) { if (originBlock == null) { core.status.maps[floorId].blocks.push(block); core.setFlag([floorId, x, y, 'md'].join('@'), false); + delete block.disable; } else { originBlock.block.id = number; From 81542758842f630a2abdfc316197b343f84a5392 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 31 May 2020 16:52:27 +0800 Subject: [PATCH 48/73] =?UTF-8?q?=E6=A5=BC=E4=BC=A0=E8=90=BD=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 4 ++-- _server/table/comment.js | 36 ++++++++++++++++++++++-------------- project/functions.js | 3 +++ 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index a6261e49..f2f4fc01 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -3194,8 +3194,8 @@ Event_List /*Event_List ['null','afterBattle','afterGetItem','afterOpenDoor']*/; Floor_Meta_List - : '楼层中文名'|'状态栏名称'|'能否使用楼传'|'能否打开快捷商店'|'是否不可浏览地图'|'是否不可瞬间移动'|'默认地面ID'|'楼层贴图'|'宝石血瓶效果'|'上楼点坐标'|'下楼点坐标'|'背景音乐'|'画面色调'|'天气和强度'|'是否地下层' - /*Floor_Meta_List ['title','name','canFlyTo', 'canUseQuickShop', 'cannotViewMap', 'cannotMoveDirectly', 'defaultGround', 'images', 'ratio', 'upFloor', 'downFloor', 'bgm', 'color', 'weather', 'underGround']*/; + : '楼层中文名'|'状态栏名称'|'能否使用楼传'|'能否打开快捷商店'|'是否不可浏览地图'|'是否不可瞬间移动'|'默认地面ID'|'楼层贴图'|'宝石血瓶效果'|'上楼点坐标'|'下楼点坐标'|'楼传落点坐标'|'背景音乐'|'画面色调'|'天气和强度'|'是否地下层' + /*Floor_Meta_List ['title','name','canFlyTo', 'canUseQuickShop', 'cannotViewMap', 'cannotMoveDirectly', 'defaultGround', 'images', 'ratio', 'upFloor', 'downFloor', 'fwlyPoint', 'bgm', 'color', 'weather', 'underGround']*/; Global_Attribute_List : '全局字体'|'横屏左侧状态栏背景'|'竖屏上方状态栏背景'|'竖屏下方道具栏背景'|'边框颜色'|'状态栏文字色'|'楼层转换样式'|'装备列表' diff --git a/_server/table/comment.js b/_server/table/comment.js index 42da4cbc..1531ff7a 100644 --- a/_server/table/comment.js +++ b/_server/table/comment.js @@ -169,18 +169,19 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "special": { "_leaf": true, "_type": "popCheckboxSet", - "_checkboxSet":function(){ - var array=functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a.enemys.getSpecials() - var b=[],c=[]; + "_checkboxSet": function () { + var array = functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a.enemys.getSpecials() + var b = [], + c = []; for (var index = 0; index < array.length; index++) { b.push(array[index][0]) var name = array[index][1]; if (name instanceof Function) name = name({}); - c.push(name+"("+array[index][0]+")") + c.push(name + "(" + array[index][0] + ")") } return { - "prefix":c, - "key":b + "prefix": c, + "key": b } }, "_data": "特殊属性" @@ -310,8 +311,8 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_leaf": true, "_type": "checkboxSet", "_checkboxSet": { - "prefix":["上: ","下: ","
    左: ","右: "], - "key":["up","down","left","right"] + "prefix": ["上: ", "下: ", "
    左: ", "右: "], + "key": ["up", "down", "left", "right"] }, "_docs": "不可出方向", "_data": "该图块的不可出方向\n对背景层、事件层、前景层上的图块均有效" @@ -320,8 +321,8 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_leaf": true, "_type": "checkboxSet", "_checkboxSet": { - "prefix":["上: ","下: ","
    左: ","右: "], - "key":["up","down","left","right"] + "prefix": ["上: ", "下: ", "
    左: ", "右: "], + "key": ["up", "down", "left", "right"] }, "_docs": "不可入方向", "_data": "该图块的不可入方向\n对背景层、事件层、前景层上的图块均有效" @@ -336,7 +337,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_leaf": true, "_type": "select", "_select": { - "values": [null,1,2,3,4], + "values": [null, 1, 2, 3, 4], }, "_docs": "动画帧数", "_data": "null代表素材默认帧数" @@ -344,7 +345,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "doorInfo": { "_leaf": true, "_type": "event", - "_event": "doorInfo", + "_event": "doorInfo", "_docs": "门信息", "_data": "该图块的门信息,仅对animates和npc48生效。" }, @@ -465,6 +466,13 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_docs": "下楼点", "_data": "该层下楼点,如[2,3]。\n如果此项不为null,则楼层转换时的stair:downFloor,以及楼传器的落点会被替换成该点而不是该层的下楼梯。" }, + "flyPoint": { + "_leaf": true, + "_type": "point", + "_range": "thiseval==null||((thiseval instanceof Array) && thiseval.length==2)", + "_docs": "楼传落点", + "_data": "该层楼传落点,如[2,3]。\n如果此项不为null,则楼层飞行器强行落到此点,无视上下楼或平面塔属性。" + }, "defaultGround": { "_leaf": true, "_type": "textarea", @@ -567,8 +575,8 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_leaf": true, "_type": "checkboxSet", "_checkboxSet": { - "prefix":["上: ","下: ","
    左: ","右: "], - "key":["up","down","left","right"] + "prefix": ["上: ", "下: ", "
    左: ", "右: "], + "key": ["up", "down", "left", "right"] }, "_docs": "不可通行性", "_data": "该点不可通行的方向 \n 可以在这里定义该点不能前往哪个方向,可以达到悬崖之类的效果\n例如 [\"up\", \"left\"] 代表该点不能往上和左走" diff --git a/project/functions.js b/project/functions.js index d143ce97..187a1569 100644 --- a/project/functions.js +++ b/project/functions.js @@ -194,6 +194,9 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = if (core.flags.flyRecordPosition) { loc = core.getFlag("__leaveLoc__", {})[toId] || null; } + if (core.status.maps[toId].flyPoint != null && core.status.maps[toId].flyPoint.length == 2) { + loc = {x: core.status.maps[toId].flyPoint[0], y: core.status.maps[toId].flyPoint[1]}; + } if (loc == null) { // 获得两个楼层的索引,以决定是上楼梯还是下楼梯 var fromIndex = core.floorIds.indexOf(fromId), From 1e7bbac498b9610bc888c4cd348709c96505f74a Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 31 May 2020 21:59:40 +0800 Subject: [PATCH 49/73] Copy floorId --- _server/editor_ui.js | 5 +++++ editor-mobile.html | 1 + editor.html | 1 + 3 files changed, 7 insertions(+) diff --git a/_server/editor_ui.js b/_server/editor_ui.js index 61961c3a..d0f87779 100644 --- a/_server/editor_ui.js +++ b/_server/editor_ui.js @@ -526,6 +526,11 @@ editor_ui_wrapper = function (editor) { node.onclick = uievent.triggerBigmap; continue; } + if (ii == 5) { + node.onclick = function () { + alert(core.copy(uievent.values.floorId) ? ('楼层ID '+ui.values.floorId+' 已成功复制到剪切板') : '无法复制楼层ID'); + } + } (function (x, y) { var move = function () { uievent.move(x, y); diff --git a/editor-mobile.html b/editor-mobile.html index d063a74b..c65c0fa7 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -416,6 +416,7 @@ + diff --git a/editor.html b/editor.html index f7db0cdd..df6f4682 100644 --- a/editor.html +++ b/editor.html @@ -398,6 +398,7 @@ + From 48c4d57cd36886db1f0c4c660b42b2ef6b184246 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Mon, 1 Jun 2020 11:25:02 +0800 Subject: [PATCH 50/73] Fix small bugs --- _server/MotaAction.g4 | 14 +++++++------- _server/editor.js | 8 ++++++++ _server/editor_blocklyconfig.js | 4 ++-- libs/ui.js | 3 ++- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index f2f4fc01..22069f27 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -57,7 +57,7 @@ autoEvent_m /* autoEvent_m tooltip : 自动事件 helpUrl : https://h5mota.com/games/template/_docs/#/event -default : ["flag:__door__==2",0,true,false,false,null] +default : ["flag:__door__===2",0,true,false,false,null] var code = { "condition": EvalString_0, // 条件不可为null "currentFloor": Bool_0, // 是否仅在本层检测 @@ -487,7 +487,7 @@ return code; // doorInfo 事件编辑器入口之一 doorInfo_m - : '门信息' '开关门时间' Int '开门音效' EvalString? '关门音效' EvalString? BGNL? Newline '需要钥匙' doorKeyList+ BEND + : '门信息' '开关门时间' Int '开门音效' EvalString? '关门音效' EvalString? BGNL? Newline '需要钥匙' doorKeyList+ '如需撞到开门还需要把图块触发器改成 openDoor' BEND /* doorInfo_m @@ -2951,7 +2951,7 @@ var orders = { '-': Blockly.JavaScript.ORDER_SUBTRACTION, '*': Blockly.JavaScript.ORDER_MULTIPLICATION, '/': Blockly.JavaScript.ORDER_DIVISION, - '^': Blockly.JavaScript.ORDER_MEMBER, //recieveOrder : ORDER_COMMA + '**': Blockly.JavaScript.ORDER_MEMBER, //recieveOrder : ORDER_COMMA '==': Blockly.JavaScript.ORDER_EQUALITY, '!=': Blockly.JavaScript.ORDER_EQUALITY, '===': Blockly.JavaScript.ORDER_EQUALITY, @@ -3158,8 +3158,8 @@ ShopUse_List /*ShopUse_List ['money','exp']*/; Arithmetic_List - : '+'|'-'|'*'|'/'|'^'|'=='|'!='|'==='|'!=='|'>'|'<'|'>='|'<='|'且'|'或' - /*Arithmetic_List ['+','-','*','/','^','==','!=','===','!==','>','<','>=','<=','&&','||']*/; + : '加'|'减'|'乘'|'除'|'乘方'|'等于'|'不等于'|'大于'|'小于'|'大于等于'|'小于等于'|'且'|'或'|'弱等于'|'弱不等于' + /*Arithmetic_List ['+','-','*','/','**','===','!==','>','<','>=','<=','&&','||','==','!=']*/; AssignOperator_List : '='|'+='|'-='|'*='|'/='|'**='|'//='|'%=' @@ -3261,8 +3261,8 @@ Id_List /*Id_List ['flag','status','item', 'switch', 'temp', 'global']*/; EnemyId_List - : '生命'|'攻击'|'防御'|'金币'|'经验'|'加点'|'属性'|'名称'|'映射名'|'value'|'atkValue'|'defValue'|'notBomb'|'zoneSquare'|'range'|'n'|'add'|'damage' - /*EnemyId_List ['hp','atk','def','money','exp','point','special','name','displayInBook','属性值','退化扣攻','退化扣防','不可炸','九宫格领域','领域范围','连击数','吸血到自身','固伤值']*/; + : '生命'|'攻击'|'防御'|'金币'|'经验'|'加点'|'属性'|'名称'|'映射名'|'属性值'|'退化扣攻'|'退化扣防'|'不可炸'|'九宫格领域'|'领域范围'|'连击数'|'吸血到自身'|'固伤值' + /*EnemyId_List ['hp','atk','def','money','exp','point','special','name','displayInBook','value','atkValue','defValue','notBomb','zoneSquare','range','n','add','damage']*/; Equip_List : '生命'|'生命上限'|'攻击'|'防御'|'护盾'|'魔力'|'魔力上限' diff --git a/_server/editor.js b/_server/editor.js index aefd65fb..ec93c476 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -240,14 +240,22 @@ editor.prototype.init = function (callback) { // --- 所有用到的flags editor.used_flags = {}; + // 楼层属性 for (var floorId in editor.main.floors) { editor.addUsedFlags(JSON.stringify(editor.main.floors[floorId])); } + // 公共事件 if (events_c12a15a8_c380_4b28_8144_256cba95f760.commonEvent) { for (var name in events_c12a15a8_c380_4b28_8144_256cba95f760.commonEvent) { editor.addUsedFlags(JSON.stringify(events_c12a15a8_c380_4b28_8144_256cba95f760.commonEvent[name])); } } + // 道具效果 + for (var id in items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a) { + editor.addUsedFlags(JSON.stringify(items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a[id])); + } + // 全局商店 + editor.addUsedFlags(JSON.stringify(editor.main.core.firstData.shops)); if (editor.useCompress == null) editor.useCompress = useCompress; if (Boolean(callback)) callback(); diff --git a/_server/editor_blocklyconfig.js b/_server/editor_blocklyconfig.js index 9fec43a7..5961514a 100644 --- a/_server/editor_blocklyconfig.js +++ b/_server/editor_blocklyconfig.js @@ -24,7 +24,7 @@ editor_blocklyconfig=(function(){ {"type": "hide", "time": 500}, ],'event'), MotaActionFunctions.actionParser.parse({ - "condition": "flag:__door__==2", + "condition": "flag:__door__===2", "currentFloor": true, "priority": 0, "delayExecute": false, @@ -302,7 +302,7 @@ editor_blocklyconfig=(function(){ '', MotaActionFunctions.actionParser.parse([ {"type": "setValue", "name": "flag:__door__", "operator": "+=", "value": "1"}, - {"type": "if", "condition": "flag:__door__==2", + {"type": "if", "condition": "flag:__door__===2", "true": [ {"type": "openDoor", "loc": [10,5]} ], diff --git a/libs/ui.js b/libs/ui.js index ab653296..4825563a 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -2577,10 +2577,11 @@ ui.prototype._drawEquipbox_drawStatusChanged = function (info, y, equip, equipTy if (nowValue == newValue) continue; var text = this._drawEquipbox_getStatusName(name); this._drawEquipbox_drawStatusChanged_draw(text + " ", '#CCCCCC', obj); + var color = newValue>nowValue?'#00FF00':'#FF0000'; nowValue = core.formatBigNumber(nowValue); newValue = core.formatBigNumber(newValue); this._drawEquipbox_drawStatusChanged_draw(nowValue+"->", '#CCCCCC', obj); - this._drawEquipbox_drawStatusChanged_draw(newValue, newValue>nowValue?'#00FF00':'#FF0000', obj); + this._drawEquipbox_drawStatusChanged_draw(newValue, color, obj); obj.drawOffset += 8; } } From 45e6864c07202ceeaf6400ba57876dbc33eac3ce Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Mon, 1 Jun 2020 11:28:10 +0800 Subject: [PATCH 51/73] Fix small bugs --- _server/editor_ui.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_server/editor_ui.js b/_server/editor_ui.js index d0f87779..3e7c7d34 100644 --- a/_server/editor_ui.js +++ b/_server/editor_ui.js @@ -528,7 +528,7 @@ editor_ui_wrapper = function (editor) { } if (ii == 5) { node.onclick = function () { - alert(core.copy(uievent.values.floorId) ? ('楼层ID '+ui.values.floorId+' 已成功复制到剪切板') : '无法复制楼层ID'); + alert(core.copy(uievent.values.floorId) ? ('楼层ID '+uievent.values.floorId+' 已成功复制到剪切板') : '无法复制楼层ID'); } } (function (x, y) { From 8f9d28aab9dde0972e2f34d118d1824a5cdb5d54 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Mon, 1 Jun 2020 21:18:59 +0800 Subject: [PATCH 52/73] replace enemys.png --- project/materials/enemys.png | Bin 69090 -> 69077 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/project/materials/enemys.png b/project/materials/enemys.png index c5f0ca5efe6389be71b9d419c7679e4403fe61b2..fa9e58bff6c26d4975c8fe8a18bca9d4e6b5fffa 100644 GIT binary patch delta 18364 zcmXtf1ymK?_x4;G>F!35kd~H`66x*+1(a@(xim^kNOw0%cXvukH%ND0;JfedzrMBR z&YC;1=j^lhdCs1Fp1qNZG?R){)!Ys0;d(Hqv6!O#A|>HDnkR$)pv!#qSpYZhq;vgr zMD058)h7?{#2gM~kItk5WA=bG_m4LmNXGJJ&QP?>&9HyRm+!809<{WswY1%C*d@mt zEX{TdN>oSyZNtZmfej{xJxs~|-|;vB64a=Y zhq`2F3FBSX&6}!wB`Q`M)PwkpXb8n^*ps25_6114eNbx$w<7B{X*(2}Be9W&ngIkL zQnp(Gpx+Gvtbf1d?}`CnBJ&;~g-{s=MHNQY^0DByd-D+x<1a(#crN4B$#hQ~>E0Y! zykbT`%dk~!sb*Xi*(T%9hI49Ueso>D(#S1Ymg@jXyLme1gTL7t=JWRBK4SQsry`XZ_qPB0GlP)?{Z95fyzLi%or|!Ncc4bjc~`tssXcv5~i!~qJC$1 zB|)A@2ORC>S-ARs1V1vf4vT-B867{^U!zpxoRIX*iDjk3Ise{pD$0@^uX8Z*QoD_c zQ>9|^Y!NzcDTmUagMh2-Vw3J7vkCQi39OQ05w2P!g{FFnjt7>G?Q&A=-y^K^321-% z*>{`(0Qljo!vSNr$F0OrhVc`;=@UKY)D+#%l#ZN8wDZD}phuL$2>Ax>JI)65~y8UHTh&xkULPt!i17JjChA0|FHdmIC9+6Wx2wt4X6IA0R z4tVYI-;4<>$=7O-U+M3P&Ry8$`cJgtXUS7t7*-k|q$qC@bzFO=j?P{fItV)m|I{TJ z_+=hjXYXT_2x2zD_)Y-jW-jLxguLazyhrLVi;UG*Li=^qQ^d3mRQs}+ZDzS>^~3E& z6SWi^&|?o-FXRD@Pjb)z}P~zq=n!InL;%d|iY%F9Ku57NBTp)k;*Q=Ie zf7I@(mNTpUv%zo-;Z0k|{3zJn+HGj`!<$C!!Dc=z2_y(co*iXCqf?$i3wP|0x<;FP z8@TI*o}Gw%4BWGI8GVXYmEQ8frGng2PfV^x93GCWoL05Arp=w6Hun1A4v5B@MnKck z5eI`+V!YQwK60K;+Sk*yB-2`E{de|lytWB-4<&5@_A9hxqh@&sy7WVuNKU~)2)jukRvjaC+GQz)zi4MO2 zi8lfEM6VnO^JGkoQIi@pQUSao1=n!vG>g1QG8`0i)ih*cAv^VtYB4nQNr8jnl|*sL4XRp zAI|nc%IIVX7s8LzoCu;N5o#VP&h&^o|_< z@6lGSRWQPxJ07l432b@U_n|lC5aM87#3eh(@tYm~4x6`<)_S_~NNMgk9o&_OeoQGH zqS#4`z|Efr@td`qmvAp2dy%b*uy_u>{j#`tw71H2H5IXh;IjQsIY#9}dI%ozKd9mI zTH=Y!@7j`c*CocKoGfAJvq{k60>CFzz*^4Rm7@*SWbcN|q6i*;-k4wP`o8+TD;>NM z<-D(G3pd5nO++kPh_Kc2j_a9CjDCFl8&p(sOMlUsc=CSZCG}G}rNru&Mhr3#I&fEZ z_QD`W8u{ztlkh9;rMeZpC*`_wiRT>`R^BMneq7HBB4LA+i$*) z+nypOA7Chfd`7B{H6z33vX2!4wW)P~(RUHiQ(HIXv(W2Qq8?_FqUVKHjzN6+N=k<< zk;)+j(Jk+qm#xhb`J^`b2^GDlGp5FQ#xG#X!w`M{sHiALbY&H{?2kS*i(kq}sS`Vh zcIVWL_NOS7CPYm8>=bHju(_NJPVjR-o(3gIiXdnta3W}Vm9UkGh*k`P+|U)scRB*K zBpcwWn1ffv6U|-f*U|9eCyA_OZ1kxNBn?7gRN%}ffF65-9NLuN-j{1%&&iyLW7*Wl z57WvMGX3bl{KG=V^@R}a#ru(cY(NM>FMQ;ai>!NMv{>4Bsy(?EvXb-{ zcKddGY{`8a?^z#yi4u5KFCuLDh1r6 zJY!OF9<9XBRV>HsSEnx@T8Q&DxF5+{2Bj}ks4KAaH**gCbazk?e)iK4^H_vm3Sn=? z)-I(M6S-voIs{7EqeKw>2Q352NyKX7uVq7)SG+|_z?%gukY)K6E|B6+GGM?dYX4G> z&TMcq_gfIgH*`wD@3g}mwRQrGXNShkbeXHh{ad{xXZU{Tiw4mmBFzGMX#l4#D-I!_ zMB&tANaM-Fhw(Z~q)PqnN}MN7LDEf%nQHLEtAZjb ztG?g@alM*{DGtxra~-){RVIQf8nJ=#O-h9*g)nvfzEPsWfB|YlIP7OMv@q|*6 zHJaHljU>qz7QCdsOdtI;W}&-3I>6rRHcjd8%6$FK+Q?fqPlV_Bl|2hTFP0qiO-h-1 zMPbcgGbiMjG%3ES_G;-;mxpuy{CT>?ZiG0GuPO;;W{+V3<;Z?6m!?P=Ya#&k)0kPw=Gv*MHQ*Q?5uS|g%5HSWlOeo zk*LSmK8w+@@z%`6!=3Y%AYgvQhlEah&`l8h@}#Ijh}TEhCu1M_b2M|9LPpJ1c8~9N z_k2LK$E!;5sj;B=`;W0epHc9?Nqm>^;{&2&ojB0(_Xz;t#}m)>_sa&gCVEfyWj;;f z9eEAkttd98Z%`e3-&Q8-YlrzAKIBBkZU?pa76)Ivsz4;OFlH!HNVQ}!_qBk~gIa?X zu$%ha+RoXZc89tR;%hU{{{pm&=w*}oAxoq-OA7={+XC&=^$Ro-A!@z_)hcz@pFV} zuCFg=hZf@vDkB3|q&N>Wa@XV$bf(f_QhDjz!PHg2<=<0Ee$Gz!`Hq2bi6(1vyp^XX z&hR-C2g2BG|4;Yw32Hc-ne#jzTKx#AT`kuAKNF^!kV`)x>YG$3N58xXc>Vlf|0O0K zg_yuUSSQr3UE|v|>eks)4z8?egE$mZ4ar5OqgB;+(sT62DSa8^DTuc2W<@4U%b7|!ReXv- zCWt%ODRyz)>SFg?R*f(nPZ;Z|QIrSAiJCnQtgtD`$-7uHzR3Jv>_z66XnM$#@%8#| zu)VA2-S$rxH-~1rQtifhOR5ys54T)Y4h{8T<-H-=Jy)sf~Kje zA`Y(7ijn+k&Zh?&Cc>wU_GhzoXB*Flqk4i2L&mm?^b{(&Lrj_U40ifVIX@;Z_y?}ZSJXZY>>G%!xU`t%L`;#}zv@pj=j(@M{1 zj54&wK%HVFm1bvKMEzR(A_m4vm+ecWUuFQ&LWK^b0 zF}#%_4~V~zCh&^oDGu|{vqai{yU_km+5fLA)IbY$nULrNglmg=us`1I5GVzI1m$gk zbNHG*Uwbu)YCpgqkQ}v}j<*9V5GLt;c4_Bw4&jBRb;rgyVirp%XVR5qhzkqT03%WO1q5C2dZw z{U-D@waee4df+{cSbmU_hsWy#nlE>y9Gy9kX1as(ew9GN7VG5XHwDN#@^r|6AhdUr z{(%gX*^{57kEnqt#~^;6ptsN-kC_i0WupaG!#zs0EAW02hRZ)klS3b)MZ<@6URr@T zlDP8sn1E5xQY^ci(cgyoq_-OJp#iuZ$H&%uNvcGj>KE~1-vg|<*!qI{N7^l4l^a{h zDV?!)Q8$j#8eGq1DA~D7nqnaM43g*4^^1`o9a&zYOT75;g9!rf*lII*$LaM`+&QLq zsMs_wG#(idquIx(kROFm9Q^dclr%*w1IGg`;Gs<<}Rb_VuM-5G-jc ze2Ywdg`20)>pO23%UG(caU(@I_$kRz_ipc6f#?BtQ~(g_@Z@ETzRtr%09UqO7lzx9 z+#A}^UWVAl%oDnO6rM->f${UqZsS{$k3zqLEkX&Rpzmt5jM-;>80XW5H~`eaJP%J# z?Q8X`8Kt#x0%*DE38W-yL~esuA6ixaxjV=GDJ#2nG#^-j81_qIC zMtn6EDd3;`^`HN1wxc73lk>#xMGCz7#UovT{DXVZam0X$3t$cTEX_0^2r241m#N|J z3VV-=yo-c+DkZMB@!?UQx}z~pPhureX)30Kk}CWJrCJb8m5T((j_Ucdo)Ru{>h1oJ z#dvfIpqF_Miv6KK-F%q3XW4ZA63$zN*h>D6r#%N%>)F=* zsaYOg!z^8y{2=~I)GZzWmnJF&7fJH?&WmVYB1|<%+)j$I9 z+BVUvFI`S#aoNK=oHddgAJJz~vaajPWTIuDDDri72+(}Up0=RfePb9)w)kpCV5TuZ@uw4;#l z9h_@^%ZGEnb2lGY)Q8}chsmHEn_X*o24u(zJ&StSxg+OR>sT89&^_)^taE3MT+iyy z56u+Bo$W&E+}dgqkz<7HKdX-w=`k{9_!2Vk3*dS_b#CPHyjLP3z$2CGLTSfr#$)rI zPV}=qO5bRIYO3VrgQ0?iL+oGhdOZ>>9U&I@n#s{TyEj^NWBR50pANJ21KqCv99yRCHXQY?oL z60YwU?7c+LD}7FBn|L{?YwMt+h-H`Vj)tpIlpSxkzijWKLXE1ih|-!d0poI%$&*e0 zCnjNBK(x&Bw@E-;#|rVp!WTJ$$bACP*m{dM06zC)>q?T=5q@J^dC~GZb`Zyv&K+Wk zoD=6e))~(gz~JGLzjw1fV|!ciEE=Uh%7svn6+>j?5BG-t4N`M~I}r&w=^|K#KOa*E z_k`XzV$=61KsKWOnf;+IrNJ5Ea@8@rtJH4Y;^Fqe(Gw&k;l1L&BIh0M^B_=u>sRr% z3mWdsI3-k@*IhZGci?1vmbU25vC*QxfCmN5k`Q9Hhd5gMhLVyx=U_Z2@2qw%OdwMJ zN(oOxR0FUMo2|KXqoqIIEWcf%Hp<=HUFwmvdgXlUCYl4`$6fgBVcxB}FVGr7!ot}^ zzmBH`&~N_LeoJg+_EH}k8wZ>;H0U0(C&^*U5#N_`gDt_`Tw$c+Qtxe_l?w~(ekxMw zv6EKwb9?x)p8&pTuYsgRE*^SkbBz~Ll^gI?;4E(BvfcYwm$HA1puoWD9Rnayt{;iC zMuI2-Etf~TPt^e^P^FE`QN;aoW(XuN`w!L~Az6KO-7$c$DyW z2b$+ilW)`+(mX|u@4fazj)=E20eWZZ&l9Zjers_yv#J^hu9dOT9(OF`J?tFk*9=GUwM-3){n)-ndSSeIQt z&F}TvT%bKF2ME`efQ4k3qcltT_fnl#J;giGCpvDmIWqG3eiTIFb7tkW;?Tbi~vW& z57-VC|Lv6&U2mGR`-R!Q`T4;^`ZesT^*JM)5&C{U7KBgE5)bEXQ!jk~c~O)5a|$d{ zg@%^Y*CLqif9XCvs1}Tp^=TO`Kv!Dw#b-<*GKWQK>*{#4r*1JbOZ4ne%4?^e)f&?x zqS57mbR}1!W*=WB)}rfWXAaUJ@$iXRE3iC*3S&Z2v^Ew@xQ-;EI-7zIod9)u1;P z&ZiN}ErK%E2xfhMn&Z(AHV7@F9 zBEXA!de)J%zw^rVOnd4Bt7wMl&FraW##Ht;YLySI^TloxEj_i$+RQ<>`=w?Z%BSeJ=VhtB)0q5`(DFe&>qTApufVy8G7 zco9&JSLOrpVE6xl!Hs)bLM>g18sFv5_+_>ThlvR)aEbEORFu1Jik|i)+#fJReM+GT zhIzYC5ioy7fFH9wFX{Il-$AtT;|)PYCW5lcV3+Hsl<2|??-u}lu4YNX1T6uXOkYk% zYg5~-^h{~+ca<);h|$6d)7D1n!NicZ^9OU0_x;&Gf-N$9OYg?EttDrjc`-YeQl!b| zc~m>sbu#K^D%vUi`>oQ;dSn)r5Wg$g=k6f@patGbOKQ$&_iWGX>t2;)gNie(tTPI> zM!pEdReT*i@Aa>PNsPlHPW9Q+Jki=SL)+W1b>d94oDCG2;^e*b@qOUZrGnXZ&kWkH z3;-xMqk^M)ZdP+0u~G*DaVvl&4|ViPVK=l$aHMp{wlL7W^?jb4jQvbW-Sv0j*D;;u z(;HC9ph7%dgAzML)-N5z>_hv6+{WnKhMSyd_8#pj#S0Iduv^uw=z+bTb9@WWujVxk z^G#xvC>&6$=@n~p9b#zOI&}`*8=96>;vEJVSbKPsrvNuCLvUbUb6@7Ue>4urq>$>* zr9wSbWmX5-o|;>6t{lv{NTrjL*i7IOC^0P%^3bz24Beot;J9asrICQ9B-ggxjBQPu zYN{VZ7n^RBgt;Hkjw>^wV`nAM&fHr(0UZ5SPQghrwuz^Br%b|8+1rt>& z(zL(o9mAc*9sKpTs?XLn-m1UT2w9Y*PRPHsO!`nI(h`udly#e|i9R*6t@D8(n zHVmBQf{k1sJ>lHp-39M-MJj;OtS90Ow0p;mB zXiKzmsVx|}S~|m>5fLHm7C)%}SY(Ya8?o>uf-ZNxXkqThd47Cneiao33wBsfN`(4d zt3FlS;Hw}0lmHMlU78}u8WdKB6Z9p_8xmlTo+>IH(&Nb0^S$yJz5I2H@Hp8~p#kVn>u5?FMb0yQ?%TD_KAZI0#4ggfvnM6{l5F}B^qd}H8l1Ae)KB_>) zBO3eV0_8 zVdf0zjD)OSw9GeT-Zm-+op&nJ79U-UeEH>B!z3|ufh51$ALE#&t|&2n5z!4QrvuPd zL_xWHegA{RPSCt#ytUNv^ivcWbb$khPD5NtHDTAtvRuD6n)^bz2G3>TX}Sr=9YL>D zn{F9j`a5EaK9#vJmMqMWTI~ASshlhl7PgwFkz8-|L_JOD=OFZsL(=rPw3 z;2YRi&*XO|FF@LVP(GnQw}TID8pCP6)%yjvuUYjn##>@cr8$D&9<4tP%M+4#O(KK2 z*-f_A z0nzivSj8N|*4Lva=ow?Rct{o9VH?6aN-v10r3}V$!TgEJ!BanF+FNdpMm8`oU;D{7?YiYKYxZ7l`c^NBW zAE2Gi&2`d%c%+LorweufF7I~^1WjiJ$@B{cNv&Gd&IOcSJ#5_vRy$y6XDWCgOGLC%G^_h5quSRS8ykK}& z#kh%MFbv+m87-Hg>sYF_*m^%mFT08h+B;pKp6C*u;#{Pds#a5*zF^1dnvnLY8@l4@ zNO)#PZ#YSMYipYp0c|z}AV3AfcOhpRiju^AmW1a|t3$gVw>dQZV+krbM*)fX{#n~> z&^d4g7@O~OXrD#Gb$46lIL&@~12-4^MMXNImk-(NC0EI@0}cG&eY9{KyL*)y@DpZ) zLjoJ{pc5DBV>`@G+F~@B42D=(SN{sdBPzu}BqDM|McNNeLZ}|7x2qLbr>iZhsIMpX zuTf#mE4yo2>3ie=T(oG*6US4{7x3)&Jxc?kw28zL^;&&pC4;Y+D#0=b*IrL1FXh=B zl-n@OjHZdOzJBg!3)xG|wRi<6yJRAzpv5=a@+ir6RBpmO_mADGwXZ|W#G&l(FGCQV zyPT_5$)6Z{kwDejtbaqj<3UNT>!O;tmo2NVMDo%^(&9F zz*HK9)7-d*Jz8+H8}}>TBDGvt;lDFQey93S_-rTX0A&t{UK>soP%GD=>&FNG2urta z^git!m+6=0>Q|aioMf-2UcInPVot3jz37M=)ydN-mb^snb1cljOt@cIXEJu6S}Pq7 z^+~WLu`SZHJKbNe`8rw(Y^pj{?gT4+e07?yGv}iCEdgXSZ1{9sPyTfUQMH1%tHeWtM#p}gcK#ipe@8wn>l zYj0rHvti+d|1fgt5GR6P;+*OOxb`MjVPHa^` zc4nvZz6ae6%XQYZSOI{9Bg5;Ap2N6h&$sRGkIc3OOp*_}k4$`zZzz3B5m7lZ8r|_K z>-{1W+^h=bRe{YdH{^eVm}k5@-kkMTwj=5G zYi6Vi`Fe?p7_pwCseG&wr$8@I>-GGUcrneY`SQ_q@Nz z2eo1Rf7WHG-eDdG#nOKuz4QS%n5G|)TY~8L)iG)5LJ*!CFX)@T0JoHFey25v5+Xn1 zqA=u?*G%zWDx#AFwsp)o7`bIM5{qqJ(P%ysL76I$bfDLzw@tRtvh9D&oJKzr6tDvQ zaFhrADL()N)B7X)W4-hr%ON_=P;a+4vnxgodpGw*v!$N& zw_)z{dafYcCl7vjC$^Dxm3qPb?^Occ2T#`uZ6oA(Dug~bViHVYtloZ zg_P55#?v!1Y}8PXZXc+@`ou-U?{7L-ZZwBTJU=8iq0F4YLpmjIFj2n>9y4nCrNmke zN|x)(I5?t4iAc6Kkz=F%EH1)T9m1Qzr%2|AUU1-DnBKN_JG;atz9CqmpMVS>2EHQAi=j8TdJ3ejuUXVmzOu)FrCJDeL*WK zdYcrwo`o|>;`!_DdtPTe_CF<4cC~UJ$8}IPIRg_yw(|J($aD%~om)c_FV)RH^q@Hx z_p@U7$q`q%HlZtY=ee>z!~OQCmR*SSmn7LTaUq?S{FF33$%sPWO9rj6AJY0rFwIvn zBz(VN9WE-H=|7FXMeXW2&=T?h=%=wCD>vjgO)@_~rCP=x31EBqpnsnZNb>6ECcf^3Pgb`eY;8Xc{MI>}$ffBH*2f}^ggTRv zM$#TH^;XSwM;qUhG+I^>$0OZNI2g;cdP9uM5#moURFsk71L6ZWg46Ry6Bt(7%^1V0 zcJw*7N$R%<09x9Kq{26yvzy6-E6`acVCE9@#`m!+w?Y423|23U>+l3@jMA7Mg$g(k zt;&`E`W`KMqhdZcf>Ba9^Fp;)2X|@iUEx&cl`WCZsgCE+S406EoXI9fh)$Y-TIJlN z_mzzu84s33Ld$|TdF>Eu#l}N}muHxJZ9wVGvaF*CPH5$7$CdtVt9tPkKG;FLC@x4M zCTEHe_RsESONb=O_2X(fI#WgX(Fx}sI)3bx$yf66tFhoCEM5oz#5rAl-3SVdUA>ni zt86(B)}@k>n5(Na={>4H?r<|&Dtqgnwc0<^2^^iR%GvosbWjnI0_lWHGebm@*RBmb z%F<2i(b5Bo1oK zx|_G~1bgp%JmJ4jV%PJ0ux>lB_=;yK4(}LyMQXFO9pfZ6)WXfB2jzu;4yZKCT6#+D zMf%^^5Trz4&Nfewqml8r5IB7{e8L=Ztaks`-WO>Aq5z(-Kg|Exm%9t;`QHl7=FiIZ z2$4rW&!a|{?DLoCaC~=I?OVXXsX>efyJwg!^VKEu>%N;kD-VdvMf)( z2&Zmj2nxGElxU1Fs|>9b0rAh|XzV>RW4E1dTcB`8(i2zO_UrT()HDo+ES_a1pH06lR+0iZ6KQ#E*$!F=$*ALmI{Wcp9nw{(uXK47r=zY|lQr}sT3mEIkng4P{Lc_lQ% zc@v8?S(6&- zwKUX%(z6uTa14VZ!x$Mq$i1;7l&{_u1iI`> zMJtoY`gGTK$qY`SwfX~n*p|geX=zzVWEdCyy)+_%LY-A}fg)s}8768d%?x8t96?7T z&8wg5O&lo>kHrM%tFB9b9!bpz#YQ)-zi95eHM}z0NK`A<>2VuF^g!<|w3t1kr6J|@3tr9xP3Px!$3jG9QEQXXF9`@ z=0|O3Id5?(3Wt@jMC(pw5gr#Fsq{Nv)nKEZu5_XY@BH)?dGQ{aDW2GeoZ zPIHy?0)lkVcX7V)T0>o|8sgApr($*+PA6EGzJ;$JErO)i-bJGKdu63%b51%-k@Ra_ z?@G_Ut0=EEaTw0^7UgjRP_7!e6B%vIv(tUnzTM+@peOS$!8L?!J+$jk54f#Ff2B~O zM2{~E4EMeKR=uOVMAlAHXBRZtF$o^LR_qh+d>8G2Nr-}LHLH-1AAAiz_3a?v zmlIz%hjNDi`DJ`=-9G#?d`;cw72k+~gKwq~?N+5>1JtaNge+h9HAWC3+ngKR?<&|| z_90jSqzV4(H$Gt^fX=!V1e;&>Lia7LqOLK{x zJYH%mAB6}CL58L{eo~N`HTzv=laGlX%4DnHc*7k(Rx+fU&VIF#ikCH=EjR6xJ_jJ` zchf=kb?vDL>)#L46J^1wBKX>)$aA;^3!kimqYqP0FovMh%X^QI{cW{$xL=I|>Hf$P0?_B`cmHFJ;Vpb;gfG zk|UL|cpbN8XuV>`&K=n%|q8F~q$dV&FP80jy(`g)K(E+3%`brxdp=7P7Y!EMu8bC>jt zgK5s)Ue7s)+s{i>(&e;&%);TZT7z0es(iP;Ic82h{ZM%aE0(eciH<=`Jr{E&}&HXoRorzU(!yVr3;!BUk0c8Am$ zZz`v#jciet1gY&pBclxAat4W^8`a|A$AivD#D@Ij!v5W341zzOf)w&|j%0`-^{yb_ z?K-yOa+L`7F6PCfY-f|}Um=oU5FP(SNc`KFj1eVgvni$MC5zXJ2#&**Xis`G=~vSo zsM=uqG4i$Jib$r{@Ti#;2YF~IkWrqezt^{HM9)L?IR41C;VAXeJ8=2 z&`#Wn1E#)*;w$|GVGj;P2^&G7Z%oQVo8R0;O$Y^A#^uw}q&EY&oBu+(diXO|-u_9? zJ`%OG#uqjGDrKzSj5JBoz;+yh7)zi;k;#-_-(%1)jX4aKy0-g*hvk>YZ!rFw6ffd3 zk%o3@S9}S8wNDE|k*6GQ+o&rvuaNDd=JHdnwBVsH)(P(qS+x}goXr*wYIyr*pU`rD zgs)RLtm&k-lT*L?>9itZ@<}%7Vs4)Xk;{i*#!*o5@(Q3`R`;~OjQbR%Upmcur%~<# zj}~%##g9cK`M_qL5Q0=TRpho4#-$H})X#DeVvgcz)qIKLU86H@dcw&=pnVe$A9ZTs zwAe!Yrpwsp7V&f?g#(oE*U`_q&mnumG|G2M%Lvu-Prk#O5uWe7&bq}Ol%{`SR%7}- zY@e|-DwG8v>DAyR_GTX3K`7Y5%6leKpx&QXpGce=t5h-lnjaw=2c^TR!m4B%BCi9i z&JA#ae@j(<`s*`layvIl=(oQ+)s=HwjvvedQEMnhU>C;Yh--J`%&L>a->C8S&p$hP z)E%lp!bkF7dZ>>3dG`*Y8@G6u1`50@*Jd;Ox^nELuHT0h3+FeDjAjx;mKOM_vn-mL zzDvW`+%e>!?Qu0?rq_Vcl>K76-cH8F^O9W0HjW5(WTGpXa3!kZi-IfQr}&{D6Ek~2 zreH)@Y_KMq6WbKcbA?DDt2wXz99BEYXl61ZzxL%joi`X$j+&2(R&G_vU=gj~8~ok% z-FGfp_0j}c@NDa5P@s3a?VO@K`Nrl!FgCyT%`qY=u-Fxu_l zYLB<>N@NvzLE>+9x|>0uXxBfSglWY8Y)*Z5D;81;$D2uh`7W`H@mrN zeLeo8la})<#Ue6*(B}TWw{Cs$VAhGXdWRQ-5 z%rFr&LPdYla)GTsL-pBsC5j!JF@ZN-r#Zi|dJT;alm%#%AZCoPt<1;eJ(a7n;}(0( zB$DB%juHD9Q*vZ{S44aI06T@*0NfAI$y4qLt+MhSH`-&Uo3J~uCNx^cKFY9)iH~*vLpdq zrekFJ#!ZVyKf#KYU9U-unAXix6)p3VPb&8y8#R9m3V%yT9cJavp*yyWI*yIWvx9wP zDI>+*T7h?(HnYP&TzB21rO@DH8%i3Q+(|T|EvurzH{@9Gf1#tw#Rep9UY1)9B|8)3 z9fUlFVIl4Q36I!8xRW2LI80g&!-yoxg1S^KWAQxOgv7)`a1k_DrZp9pY}8Euu*`uB ze1f+kDAIinck;2Vxo^?w@Kz~mMUkGSSD`3J2jsFyAG zmFl90b}LiT{(02qinz6hk9MwnzVW8Sz=i06*fMcJBQpGMo|j|v6J&}qmH;)!<;N1- zs^Ni_mQg_yEIk8M>GyN083!NohH%3Hv1#NHx`YI%YZX;N2~XZ^@+8CjUfd@H(RHg@ zaihwrJ?q?a<{x?HNC~TXIFcfSb!YLBySZDodWA=BwkL7!^*?)!JjD{;Ksdl-0!3J4 zh}VWzXz-J_ua%WmaU26b!(hvR-@g*NhZG6CUq!E~8fA2LD9O11088}0_3~Ke7k^Be zQZ&45LpA-38TRZazbrPDHY%UMR+Sx8o@k@ER&~ z5A^y*^7ZXZ^@v?0N|Mg0%ye(%qWyxnP{_~Gjal-nS7)LDNtUOrx7-?<|HdY3ZQ%8Z zdtu=(V&rfQ$m(FH(Q~yfv@fZ~hp8yg3-Dav2@h2DAEEC7VE&CLI6rj*jY1n&zP#5+YjX=P%$sD9S&D{=om2ONxFRxIux=d42_Z5l&JsB@c&ef86k1j=zM!|G4iA)Xq)h=MBK zWNHl^9?LFW3e8<z((y5V!94dd2pDZF3HYltwyxGiwSi; zCk8^yB0)XxEux~CM=nubR0PO$#hbhv!ge-LFK;& z@5uMmv@g+19&3utr-YWTygE@8MNrjCR=tEYlFN3;>=1lwq!T8J-oKs28=OoiW*1K+ zQY%?E7cd`s<^!?i+2XX}L?0$|jbLHOpCN1XoW!XFwS#pOe)wK}y#IK`b8n27AP=#9 zRleEHX!>*fm-K3;D)w!!biE76@S1X|Pc{YPN^}@zmEv&ez=pmxQps&`Bvgi+PRA(R z5JzydY1}cy{MGc>)@1C{zX%e}3P-fw9C```NG53D6Tih^%ahC{8Eta^`WLyu#U_$R4qJ`F&V78O~sij>>!Cz3YfDb8ew`NU-;l+EPgLX(GVaU>0_lzNh1_xxjfRw>^nqG zpKJ2-DA!YjGWGVbUmq^MBuC%0vGGd5x`ad9`17f~4xa z^GADN_0XL`25NK)tz13Eq`jP#du?qGymYoZbG-2JuslELql*s(s))#7#m5rSgwgw> ziDOORo;p#WUZ<-7_fzd+HXfa;D;%jh6*Z_YKXj8R&Iq`)jwI7dX;qUOo-E8%81c1NCPqSj`Z!ixykQBWB(GEXn zuHQuXYI>whBaI?*NXys@+4D>W6BSWrB8nde&(kF>9JB=z#N7qtNxm9h*GRjp_ma2} zJ%3i(*!)EjC5myXadH0m8eaBGij4x_;8nclyXGkKM`%l;4d|8B*o;qqibMM`(9GC? z&_RgIZSZ{PiGz%iKZsNC>KWcCo6(bZpOp}jB6Gwzd~QD!QU_;OsD#Ki7|8&utKWz2 zjSZpmZdCr!!^T~3Y9gG@$<5%njm`}*ZghT+&+TQlT-?79p(KDrTg#@|EYTIY%y!1C zc73m#NlvFCAP-xAb|TX})O4B<)(pFyWLjL z!}B~$<+GN-+5pQEAP-F30MKr?BN_4_*G9=K0n*kN<^dU>xDO5vaKIvwzLN~T?`Jku zf|UWL%h1*W1VLaefGuK%-BkwX%J)1@D0VxXA;2=gZ^D|&Ew%bR&$A691L!=~Znqse zUPOQ(2%=n|)_-rCBj$-D&Tm3YIN$ft>2#w13H-RO{VSx}I@G#=xDnD6<=3RiK-}sz zIuN%D09(F?RuEU-_kHj#kB$e*qNGWAejRIp=r={@;dj*wI-L&M?Y5&E zK&Z!b0+_CAx7!XU&l;el@q3;JbVFG?oet2QHAfq{Idb2z@f(xbQ&eW%V9~ok?%lLH z_@Iri1(>2Hi=)uJ0ELt2CIu*pJcd(4S?!hbaDNmsKv4k}35$stD->QFU6cTMz-Od% zFM2348Ix;5M4b}jZ+asE7CjH3gKltE6or2}8+*x_Vu)oRYd(_r^E$!W0H*L$v5Y9N zEf zh6Wly7ie#?^|>yhOo$f1TaWRqe#~aw#@WN-8hz*G8&!V$N zYH2e!X%0vvIF(=Q#|)&(ZE`@al_7O(u0FC$XGC3Q&Qd<@95;rJKTCeq0jUO{LL1&j zltE{L>;qyNf-Cz*#(M!u7=JDfJrNyuGeo4wD1s;n#6+L^mT@^KG`XF{bY-_^m2& zrPDq^;<=;&kk#%KsLKc}6 zJq`ZMZg4Al@KJL2^>%aHp^9}ONqc*X;xza(SBLl6jYgi4-J({Cm(8!u0Th0w%xbb~ z+9v6pgB_W7VdOOU69(YP$CPQal91^-8zY=Hf2>OhaPkfIC_Fl*BjD$=uHzg!+zb9h z1W-X5SLix-PXdZ*3*{{tLfI-t2N1sVVV002ovPDHLk FV1hJ2ZhZg% delta 18373 zcmb4qWmFtp&}I(|7Tnz(f&_O64#C|eKyXWN>%rZECO9O)0)zy23z}fTg1bAxVc2>1 z+dunj&z^Hs@iA!Q?la{txsp;~Ny!2@O5lD)}^NCkfCSuI9&&&6&=&lmZ!TE!u zvL!H+Zm01@?UKIn?LB-e3*>06a3Ff#gX!;o`BN&Rh(Ge@ zULO3>-DdQO^!N=9k`eS1`!_Y7IoL(z?^QkY5IYE)n#Q8{cmyLf~5?QXwl+nbsxG;Uk{~2pw`f+v;Zgd6@b? zE{Y=`O5OHe78%7s-J#+(E6U(_Btx3j*1q{8-Mr=(FTa+!LvnpV9|~xw9zT5PFnIJd z9;fsPlP2V31SM5r{TJYC3TsVV*UYlyoi8qtr1865W+`YqX2V$Kg52CD=C#k=f{#Zd z?}obl)xE_Z=~8@kf%%`G^Jg=DGlpxFDwc%0`3jvZu5?f>)9j$!HU-((^N6{f7bgN= zTD({78X6mG+uQR@QAgFivr|4oHRWIeZt%Ybs2Mr4-R+vnWUyy>nE>?JMIE0Rsy=8Ve&%4PNVjVwzfP@)a1wZz;cf7qllFCST={m-hGg8p}70mqd)76G6 zy>|&XSCX<=XLoO0y9~cGA}?}5&`bTD^WG_Jz*?Ds6*6q16`Snn96yP%@XG2P9?Jbk zlpaU7uj9)Ut)@tT@}izGiC4exNdrLTACg=cGWLF9s_!*|mLBMy!Ds>B1=%$0^>gtI zG*dPIAgn_F%f$G{-}_Zw6+rc1kX6l{Bk#zUA1iJR`$GcjWC$Ozs^F~3f4*DodH0g; z%Ajd<3x2r! z99z%PIS+@|Q50t3eV(=j44pZqR9_EI-fbZ zGRUwLaG{cU`w84j`G|~w?&SV7SlT*9qm*!2+4_m_sy%V{PT7k7tzhU^bm%0tjJK^q zp>|m@c}5gP0+*ZMx)(7zrhMDoaG?fN^w= zVwB5%koZP_MgL`V3zzfYHKYCuQ$~+5e72s3#+=&rL~s#uzl@6D)gsky!xYk=877PcSvg1YqW z!h(7<2!Fdv6Kd}fM|a*a{5$d8?c3i)sg4H1W`4GcsyYNnZ%~bhrqI`MR)423q$KH* z=b-1lvLXm;eEic>Om*7v*c~yC6)(0L>3-f*d`Os+DO6Sn3+sO8rRrB_uP|)T&zIH}v-Vlp~pSD$d|E zw%e^mok=B!=74$+*Ru-bnCe?WT*9 z{2hgrXRO~~gYrG%T=1}E{$Hxz~hJ9{DIp3ODY=mZbOi~VUV zBc)3Ybjf9?-|+hsqY$z;DQtsA{#HYA=qGq*ynmKHGQ7PE=z_rUTU6McMsAu)DRM^#9?ySuCWe)XRoX+VQg>r#K*nl*-* zX9)H5XQ|&4(01fEZC~VbwgJM%OYRo|sG3IPb&S0Fw+vbtr7b-zy&Ekc74j~1AsHWj z)ZI{>eMkjN7@158!b@zZ#>28-SX(ftu@ zSgT?94G|9%Po?54)*Xa=(0py+Yn2*?y=7=(-j@U6DKI?yYM)RYgOemFof$!i_py&u zX^pB&jsqRZYhj@l5_|}l%l|M__q8FQ~JFoSHU(+5BZbi zRp#~22Y$mAhq+3lFUWk1GS}l}P?|e8<%toXNX%ZBA4EaIqp*Id z8Nc(4DczpxflN5eBpRn&ov!l8p54Tj#G#DQ(c#xeO6hqAf#OE}aS1wX1AMK%k_*L` z3>VJ(2zLD&j^3VW9KVRc1YXTx|6vo>Zns8f{aRO1%CaNjO1GukuT&|bl)nfjQ5Diw zm$s#m2jW|WH>WFSKL@zj3*XO;VOLwU(~w)+U$>;|44)lip8s5;d_UT`l0LR1g!qel zq&j@MB6mqX) z83lWM&#TV*_#Qs_gNwYoa^^HA{0S4M|K`o*54>=xbHDtQ%5N&3#3Mq`$Xh6E18Eeh zl@rGGm3uYLuo9e}`X1g*cNIL*KloPGqGPJZpJ+BT;YAI;-e>jiL@zpOfz%3H!y1do zgDA$`s=YfIzpn{Hwh=o8parKMKI5+qz%4<*?Fb|7ytTE}p|#TRJ7Rd58LWdU z2Ks3EWk_x#+;IDd@*I+wt!95v`Jr3_9biz1otvUznM# zPj+-h2NcKfe&OZjqqYzNx!s8rCWwpv ztQL$gUf}I?^WE;4eBn?P!#x&yLTukrmRh+-xLtqY0APQQ3?Qy$o>umK-KRrbZ(D1R z_u)X=I!C5!jP43;7x8tQiIXw?UF}J{kYXm``T1v((UK+{+XVl_LJrsWpJUDvQDXE! z=GOC-mAGT+s_@-aDXp?BcTd^J5hqV zF;=?vxtoquRPH^pL=7ta-R{$Z%o}q0c<|yCf8^kJjwJ=mExn?@G(hd)1+s1G*bnKh zesrPXfomj**iAUh7J-ox>bJ88PD`+QV|X)G9%oK|j)*12PeCr9If4s}2)jr2dT2hu zI%ArB+K~f>zL|=Vv`f=vU6$@XU0Az-GDp`O{|CbDEYt}&Y$mJnkIhh<)yPvvtFW>v za(rx8k8iYdr(x_B+U6O&7*ElvNg9Tw4SlE3wWJj^;kP0Pkv+P81LhYD;GdWx0|G65gv!{tMs9F&T z&M8UdV{+l({ZS(!lJ?KGgaAqNfw8}K6rb7(n(uz)5n_G{}ihk#4w>YTmf9KfS{h}V~wtSq`Gl+?#FB|SMQ03-1yPf zhe8u{Ampj@!Qr3ulWwZPsGctc$u!EF=?s78!}uq-5=La_%?YU2WJa+Za(@)TN*a3- za@`s`7;}l_BwM64!CvemD74jazjVU#7JJ74tWi1W^nP&M@*}qp;)9h-zPbGA7*;;u zjZ`*kcX_FBt1e;p2cw>khPs0Ew%$omXxj0QH&?i&!tuh!7d#>AF=RnmwN#ym6}{3N zgF#!-B~RTIXH(XfiFlON&qJ0(!ct;j&mmKBqAxS?T^8(3_=iSn-d6JU1wf=K){kNh z!S{my^nSQy0$&dF?c&e>*b}vH^Aa4+hcdJ*u1qS<+STJ}g3()rpQn=pKipGYOVXNv&h=Lnq1uuDd39RfB%?AZynpaN zdq-#uDS3Z2{TSz=D`rZVtk=C_W!l_Um90fp{YPz`*!S~i(hcbFx;w%@+Ly(3 zDY{(43wi8lWtSK1wQ+6X6x7l?I<@UfSl4K_7=?^FsX}uqgfhNC_B%5B@84L2=%a3Y zEDY#j0vaoDT9`SOE5S{3@|o#^=oQq+D>Pf|0JSZW?s|t18=k@>hzpdTdaRY<*R8rY zcihweJdRUL93|PF7oU(sgQLm<;E3RBL5jzs&B4XqQG&&S+Sek)BI_BNh7_{Lx?%}F z=faT>Kgx$$K;ee;4ZvU+tDizwfxj&%qYZzKy!jDZhyuiRadT5#F|8s2n36o*pA(F% z`YK5Ol-EtU6ivm@Q=HZKywz!UcCZ?dZ_JzYb)3`0hunLc{QwE3PE=NSsw-VULh|!O znf)@DTJE~6QeB3~tpaF~cTiO<#@(C#wdja37bVS!(IP}Bq=PVoWtv-iT^_5j-&j5$ z9;}_Sbik{7o%zi$I`qwniBv=sQBqPew?oG(z5AS_awb2#6&-x@otgdk zBBG>W`)jf~#?wHb>jLAavm7j|$x19hHlk>^s~bOQ91-mJ-~vh_vN@7HG&1Y0`^;7| zZ~olbt+U{r{ER2fD=A_0k0^oK<3TatR(Ic{K{|A%U{n~l?6GoYNwtfa%ddR)VY!#+ zR=&Rc6l!J9>K2Y-2AO~iZ8R>bDj&{esnSIYY@Ft(3*<8&4KuM@2AoVXee*#eHkHo5 zc;Tp@zbXAalnzBjB@M{Q$(iG26503gi*ZgXLXO6bEDw1fszkDb6GrDfKGpL}#07+b zqKx868&uTPD(6lgfhq&eFKs9HwbP3lrQzXuGD3~^njxEuj^#$MjQ^QsN{c z_L3m(E=Il)2q1&Qs}Z$1kxwMs)e5$4c}*l57jR-nENfvCm=+(ap;5j(@3(vS=*O^~ zKY5n(5w;KDtX$h@lbMn{#dqG|0x&LV8gYp>(<+1K7^&0Ybjk^X5qNkV%Sr^_LJ{F*XwubZG#^t(cf)|JMyloIn5HGS zffjc2*&Tlxyoh`>fG1`LO31|IQAaD-{rl<-eTeKwWP*iF*!ab3cj3&iivT*Gdz0Fh zAz%vnbJ^_|zQPSe9Ifvy2=nzHIpcO0T`H-TxOynVNVzP3+F|5ElJ1bMD&XUeZa~Xk zr-hf`iaq^Yu#B9CUYu8|_FTW#Sl!VnjmQ5IIW=K4KTgDZ-7B^Q0hI1vSeIcCt&Q!Y zJ|1Nfa>c#r4h?r$0)|ox!~{@!x(RD~qoO}jyN4}rah0Nj^UCQURmun;6C~m!iwA9< z-O(>YrkBNse?>`ML@l(bc<;FL9a_7_JzUVtkZxF5hcaOIJc>J~a~w6cfYpc+Hox-S zE#NtlfXw%HR=|h?_NB*oWK042EwT#Pq>2P_;8u_IK_!JJ5#LKiqtWX(sX-h|_p!EN zh4-7GuI{W(z0G4Il<$Sh?e*pb!l5h4gDv+ivIaa>iB|4%6$Rn#*hA6>!`#nC*2ktX zPvd;=OuyGo$k>#G=D}xlGAvoZj)e_MY-pghTCBO$s2LM6r9!vv-wt{Ff9= zpS*sY%QX6ULoF=trQX`!oKodDvYCu^TG@G5xyLLnC2y~|=+;;w*oe?~I&|5WKH>n@ zj})R$qE-_R-OEufmdlzQZpmX!dN&=kTx=hG+{o3bf&*Ln&G?=>Gg#Vrp zx`b4v>a%dEd=|B`2-$yOLK#@Q!HoxUJhq?w#V{sff#@Mv(pc=jn4e3`vlj*E7zM-z zYJCV;(lUv9dbi(LEe5qUlgoFGeTK^SySPM@i0T7Y+kg{FZXgXDaaRF}ybMVS55B+q z){wfioiSJLX}(P^K=4%81l#6hkkPZ!O{#>P1bJpggI1KPNb*a5sm%spgSZyGy|p4q z@Fwd?s=~~nkrP1)7k_c1GlSQlEs+%kL`uRhkMvX$q`a;d3eCig*(kFzGS0Sc&hQtO zUv{jYKW%`@3k$4gHm04npy3vaU#uh6o|EWObw?YxJQ{>7>Mk3EgaC8I3tHXHBf#pk z6W*iL@qv3WGNh|FP8hsr7Qr}lg;Xv1)Qy)(t=TC`F%A-RZNi8ntY4)ztygs|5PW!$ zA$?5>7|@9g?NF&;S`#5L(Ea<4wO) zuUS(Vj;~hslLv`mgMJPA$qL3sv6`!&dToAEOfY($9p^j14PV#vf3kFCK%3CL7KhVAR{1* zROl;X5wZ>+c)FP_j%H28;xN<6Z=olkleJe^xbhnM76ZscAwR$M_U^phMoaA7mM8dH zzo0Q|+1UH6`oL*~nWv+z^z1lU!>`U$AuoupQcQ^qHiZQdV{q!2jE>k zGq`@OKt>-!$@D%ncn5Fkv_&53ht0G9*5SAshu5Hu7@@!X5OK~}7Ce9JJ9`2d1%zN7 zzEqSkpU;GaC|;14Elh|DiF|bgHYqmY!U@P9mm0P+1DhLM{-P# z@pS7=>&B_pWrG2r*6wN)EJ-pj;gH<;SD+|1hbK(FQZ}J;;@QFev2WVLCKQaB`-nVL z!QU~1X$#QH3&_`7upWNx`z}P!`H%lLTqdf2K#e_8F5{)I*;Ydf|EKB${4(`Pi9!VY z{-M1F{`^lb0-s>=d99IY4;0OqDd1{OhTG z_GZO=He@4Sf2iseaqRne45kM`X}xcoJ(fAgowVpT2L}Lbxezyjwcp1Cx*7Ze4|dRH zc~O#L>0WKK9--a^T3#@26_{7fNlJIAhP{s;vJJbe_xQbRd2!Z9s0ql}rmNNyP}nk* z3>pzN8P3jrEDNaDI#cnZwYiApG;*(2`u@47=AmOwW73mN=CjF5#Mt>3Zc-JcT907F z!ZH2KBKUIpH1HiYnI`Xqi>B_7>&xM^B1`|z#3qqC#sCP=0V?t@^*sIS#SGe=*mUdT zRO{cHkXph}o@4WRzRwJX-|jFnw#`2yrRh1@S*xk(o!&IeSR_dsV$#WXi*3K#uPo}x zxVXt%xupiW$OxE4%C*PMP2)+dAn_J3R3;g}z>m+(Y%)Bkd~j?`jcx*-5K*iP6;03I z`R~W{dLUd7R5z`bHrJ)XiBb&7!|F$OKxU{6%9b|m1N!-A0z)lsWnoss zvlY|3aM>!8pJW7_Auu=bW!I(d5L2pRVij{U5HWFfA!FzBB@RGib#maD2Zn$qB= zv^Y9p`}ne5D^8*Puq8LrUX63#xQG|Fi(1_Gi9!qUz$daUZ}SA!G`4?H;q=RP;timF zq<_qQ8!qs&3L|wgO0-|KV(-wcXXWFgz;fn_w>g#JV>a?lURgHeMxsqeGI?!PLoc;+ zS~ifM3SBUax)&#LQ*&ztvAo$E{*zM}mN4VU!NL>N)erLMfy#Dkb=bg$v91l2`fqUy)BF!QH!fQXa9Y zt}Org&QS<$wZWQtX^-QBMOD(7t?g8K$@7_gCBZb_*HdmbSmfAB(;b=VJfE?+Bah~k zJ!P0?Y}1ENruVbe6jQM_0l?#v#dM!Gy}WHOor~NQCZ1R0x1kFgWh^wguQzuE`n{FPT!qyP)U5WK`m?;ksF-SB-GpTCpE4#I3xVkM(Em? z+aO(kjCc*2snAz$gr=?oH3rey+~N4rS<%UlppLU5qx8D)p5C@=mh=)vwsAhX^R!cX z3c@XziFWsS+8luegOPan{`0%Z`!pIEx`}-kxU_~T8@WSdk8249Sh|-^B6Apg2-A*L zGTlp%LHZ=QVTldWT5OMJ_0TGd(Wxg1gdmbJQ+%YBUt8Fv6qrXYGDry$5KPgX)DJQW z1klR1ies!F5IWH9sp>(6HZc8ax1q5l)-V(K>%HSSsQ1|bg@v#7AN1Fqo9VfP@&PJO zl{pe#HMSqa^Eb{9X3k+$`wbj49p*e}?j z7`Z`{Uy*#|;Id`dM=B*h}dX*1!f zl?DK_*f}_m|LMm;J>YNIDs3g9a)|4(76Ar6BZ;uj(H9MkAVY7erd*(1t+~w>`6KzP zPTGp0H>MVr0a>i=`?TqBjg~@RVd32%ZS@h81cg+iPEE--_7)Cf&G%zyVLYt4wT7zw zyQ}2!_}(gM@pd)ovk%yHnE%N6;}OCvyr`4*(k&jtcGKURM|Qe0Y79f-uy9{r`x2~} zH@$$4UA%s4qy+2iz=6kf&B0-YmME}nZ7=-7_og-sC2Sk_$Q2gE(@ui(v@*&F3H=9Z z>Am0N!W*+JGJ#X)OZV-0+S8MOP7L6t|2I$H6&iYN*hrT1%+bc#t63)CA^fg$c#(Eh z1PAps@7B{|`qNM!9N-Rrfke{@{!=4uJ7JoMx@W2yB!V9n%{(INAGQ6|y98p|V#M7>#ZK0q(Posw_F z#1cE(!BTnS>!VT-K!L4v{9pClS-TMlb2X1ElYoS^<3kv z=Wyv>5wsVw-?<6v2adXkKSwo^*Z^yhmN33nZ#Bo+U&|t z=c)ogci=pWryuLo@50Ww+<_pFza7U^^&t!bAIT<^sT#$TXOiYeVYQxozmjb5{gdFc)t2uofa$r0A7 zGNd0M04K%d+t+`>9efO`rnRdKU+i9wpZpF$;rq4mJ1fzD^=x}&vT};<4#}oTS2IdA z_|b!~rXJ_Cey68hwH{MYuR_r8(&KN(wm!_WtjX}A=L=K-0L8yEzj36qq@BL=^fCTxPp6)7IbvWh~S)l;8wiXhqc=E6PmVrPg*U6 z5G$#;;ZUC=#Rg;I57@Zj)c&kS2Ld#Coc+Tj^*mcw*tz(f`S368_vssq%9V&Ool)Vl z;vTE(dzGYTCI_r#dWLV}uu*t5EOw@y%FN3kj2Sj0UhXtkukDA=UY}uhUM*^Go+%HR z2<|fv_SOf?HMFTRtL76X7N5kbBq@=Lry{p~jGnCPQ1zZkng*{dDh*!HK)f2?Q=R&y zB}3M^7+4a+PlZS$rGcPFt3TxbPEzaJo;aV|J>wU@h?I&pOc9kFr>N}0t zt3%Hw2JiNNep}&IiLs`A>;`O_*fP@Y37HlLd70G^IUqUasRQmL@f?|lB!3B{j*xF3 znj{|+bJqOsF2K(QK@@u)B}w$CjlIgL%vg7l04d@ABY{O99wj?!3Z7i()1p6QNeBqS zSrPFYh7?i{sSHFivU>2w5`2k>e`&c&DO}){-$5a@c}c7HL=0o8h8n`IIB%kyU|$#h zBwMzyaAr`TKGNjAM;6TlSjwh(0Ga0t2dCwnQc^qAAVe3^;l_5I7+(4sr)vrVoght} zWP=Dc5Oc@fJ8F9T>v37^TyH!TJz)z50RT&|u~d4+We5>82iSS5`e0fdA?;638wL8V z6|WqWnAEJ-t}@PB+fO_~l7(wj_Kojeqt|Q~=~NZzDL!ADXg2XC*789oyGGM%-^;fA zbchRD9W8|tveV|j)vEE+HZ-j91D3IO0O8)E9Z!408nS&v6ky8~-VaH(e3nt8=S+rk z=dq|#_8`DG^gi6AK5ltch{`uCz*~?ips^>E6g#+4{T{h#eV^LoIN10ZG3~!V1bV%d zQTS`=xmvf5nrEwbtv6{i;$;8OK5POhTOiDRF=*1C%KEr^Nrp&g2*SigZf`ZHAnw5 zDaa_{eFPP{n(yVir_u@}UUJtje&I9_L@wYf$L8#&9ix zI_Rz(cSCbty1!7ktF*wyq~>7`;Y-gmDBrhq!L9HV`j|V(6A5X|KvK)VV|0Pj;kU5q z;L!hMzoo7AVzQmv-ZJVx@A2TxRqTys+^TvLtUJf{bo1F+=bu6wtFps}Y)pn(|Jd_? zw{Knz*J3F}0GobTT?$p8MSP2N&Hl?wCaLXcx$W8NNE>f&$!fM@h4+{=HzFJq7#3yg zMfHD$=7n+ZC$vOgMNOgmwcUPCw;{(2-oFcQ`E)s6QXlj1@aesha9}!M&roYpRT6=L zBen(yFfi1p5(0|sj-#XRY0r46{?XqdB@0_-3S>{xw__wQS9s%s+>2~~(&*`W|E|p9 z3Q;3si+gK!fnUXKn%@ zy)`wuUH>Bjf2@IkMjiAFqWS&=(jj{$UTx?#mngaaLZhXlFzYFJDIi;Xyc91NJHoAN zqG>yCc%EU}aP|g|!FAg%)}IK(0GaDO9>sz4x2D8Q>raRAosk#I{?IMqwHEIAl4t-3 zy$DujKYIq33TR)}VFbq39y|cs(M#Xyw+LoTu{vg)^kG8F*w_ub;&|+XZdIDC@nk?i)QH#n)0A9|ukT<%G^! zbmA0ZDgAg^%$xfnpm9aE>U$ieAnidoveo+P$FIGT`?@SGDIxn9deKzdlJ6LCu#+?CdHizA<_BeEqBCgOy-nzP zC@d|eze}Zz)ER>4X;rMP;G{hD9(`wWVgqDq%GNH+@h?KmanqFWNZ%N!7-$b zC#M%O`j5_lgILe0lI+UeW-ugPw_I;^y3NSc@N7?MrdVkiogS7(xVqR}MqXsr|82H+ z{z!TPN5}0eJnE~y!J6bhy1pD~tXoalpB%W-3CG*+YfoVF19|$|>!V39@j&#Jcpt?_qQp2E9ke z9l#slezou@4918z2C!woaWodMzg?9e+v~jrwP`fp+;#!>&$Y|-cs-Zc&S%`g1&mwj z)lDX|P>RIU-5TjIC7xiu2e679ZhptaOR?tDNz2}eAdgO1qP&8=C9fam7_C)L_e9Rk z1xDLtnz3fRCxQ+%^R!YZlT2Gk854R+RTf(!Roih$nbj8gI5M6^_0mT*xFv@RDI`@8RyqU0lSM``_-rei!!}13z6a0a=UC-&da_ICAOlh(hE?*n5Q%>&L3L-CjrAi5kTBeJiq`(EfCi`JbhE4`0ALCTH)RvIUg5r5J3(VG z*3|IO+*|&3cqIIKHY@L4s#K%<(&P@1D~^_+QOw0kW!XhJiq2>y5OzH-M}`wkre44= zLWQ#?NmPxa4zdsiK^otv9BwjEU?lOz-FYP`oluFC;4V^b;h7U0F5#dVT<)Xz?SSNL zk^Q^aJxxlII*3%yXZY0)-sOvKE1rIUzu`R7ReWNX`NzXyw*dOqfIYR&?hydTs~ zck3o+X>StxcA;!py?j{zP0yKim-kL8+I!7=zzwS3AT4{i-oD4HkjR(EEIRgU@O0vXJJyNp z=l2nR5*uvo(}sTEl(%^}_Y2!zH63Mi4<2DpW~G0cgA8A9SMaB%s%>}yKd!{%qR&6+ zJp(fee7u|Y>-rL>S5iKoF}dX1F=yrGs^x5lBOcX%4tM_Twn^K&SJ#T+xZJRVs3q;D zH%(2KGC1rja-T_(cyOv|BfhJ>kn+{cPElgi;~;kBc^y_?hlU%ZntwgoYbuHBd5@z= zn~i~ReSg}UXhs8f>XASAYx|5UtXYQjfq|o%CGWIJ2S!YK<^iJlVjhIuzec98f3Oh2 zA;Vg0srG4;#>J7IPft&AR8}|61#ub&qj6qT0p;KLy1Y;L30PURrN!Q)QPZipZ0sGT zzKQbB?Ber0Hp_@z)C~gU}TN1{!==O1lBe<9UP>y57*JRZAvx`4HWcp!deYC!veRVyow5)n!q09K6 z>o%?gvAPb`wR+chCuWghUa!`gCp1g&O{#PXI0>o)3sME*{?P>B?X+JYTvP3X99f1L z)`}l;=kmklsZ4Xi#qzBhTn{|>Zzunpws*Pn#W$*dW6msR=j}~9(24y?G7Xn1I)ml=gti@~#SsyjC#3`_51!mwflRbG#QQ=l9D5>5I`=%M z1?6?>!|fFs?>hF@Pu%-MVeJvVKE9iyYc#bX{nx}ygT;y8p2N+?aINNyULI=TRSi`R zTpfY*S(qcMjTC4pm(vSYVp`<7;#^^N=cdWfAF?$Le_MZB`fbaum4--hJ&#*)OHQGO zXg8H3Jr~30PV4mGDQr+8Sg#8R{d{)vC_h{WC4h!5-p8gz-^xMc(?)J{!L%ZS%8YMP z?$;9RTsE?wHg>4qU6d*SjSY!tyV=#%4EW#J;63=OCrnki*^)A|bqiPSnau|eou~L7 zx4lVnCCuhgqX&?*Fh|L*EnM-WA&mG{R-6(KTl#6$#o>Pgod=`kadQa^-n}OZ7xvq* zMB>MB{og$TRQl4o#?&q(AV-X4VxRxb?YP-A*93HzpJ!9V+Mz;M0|zW6*43i+_%vN3 zOYDXJz_NiTcs1Ms#9nS2V=D7cN<1j;kl5`3rd<-W14x^iKV-*}fpb>w>+^_Rpu zmu|z@veD<{-)*;yh9?E_PDbJ>x&>gORST#8(^>LgsoD-@GaAujVu3Br3+H>|ThUw1wXv zxAI&`TWc$R0~4h(W~0O}KUGK==E?~oQE&7R3CgDKGR}F}Q&{=hiR(DM<0UNCUs6do z9DBz|^g_nqA7l?-c@g#(y`Pw#VP`lnkaL38aKW{z##0k7qw^lFwljpz0)H4;*FEWYyju7b-Tvs9f zqk)^5j(Hh=aEgH~{b&!80y<*{^ZRCOWT7m!$9VobdA{Qn$5t2TKDM58<+*!p^IX3Z zQIrZ_fJiqE&(ImyN}mo-6u}C6?;Y=wo;D*N=o_DK=pVL}LdulWP?dZ)En(C-DqH!& zwV;_80YNm6n$MBn6VLq%`KQ|O9V&!p%>bhZt*K0LP9%L}7dtiq%DSI?EV2!Rd<#QH z)k5XZYHv_zb{ zf&r?dA?z9muGp6|;jYI1UN;&9-w+Y16^ zrPt2SbKdGH4vdXhcKH3p*plcUj`K&he$6d2Oig=m-Rrp}Ifh6p9#Thx6$FR{CoRvw zZ)<{xQD^7Zt~Y9VR)=T_NU}8K!P|c=R+ERN{n?o3)nwi*J_h~xk&kCkP=X?(UP@LG z%dCTdM^F%zkoade^Qo=W)Xwsca?XJ6pa(q#9M#}T98Xrhz`H5v>^q|YP)qPkE>%Hs z^>+K_hD;V+%U@Ubg=eWks7k3>@;JD;lmL|nk!=HiW*AjY+AX4dearB>+8tg`Rvb9^rG`hI{)p| z$dTULkzBJ{N3V3i-3+1_24P-7!6StE^Oi{~XT_iti0LG4HF3BxY4IROm?{L1mcP zavYqHJu7iFeLLkU{t~5c6RZofbdF9H+AtqBmkoBxF{PpD z?-~mSQ_HNb4Ou_U{UkG3A>80L1`AxVx9zl|R~D4)`2PL-)KC1JR9g$%&c}#FDgeM% z`7d4WJ(CiwUWjh2M>MB4p}!d$_Aje?TQ7f}KBHh3y@kES)wEGCYy$94pWO=ePqZ>A z01nagg%k(#kiScGjqw!!J{LRpSYUWZRamLF1L<&SAH+yBnJsSC1$zgH#2nX3TfgjD zvALToY)T^f@lJmv=OMHE;v9nLDWyS9!r57V6SKP1BW*JdFn<(FdGm*sqc4wXHhzDf zyH!Er2*wy=R8UvqY55g0j;YLZ`tx{UNlj&dKeRT(dIa~$&s-c$XY#CVu{PC;;sq%p zZA!=NpA7|I=Dp#dWH9b-%(t)VdgXlbv((Dvx)q!~ca1qoB^<97#h9Xc6kn^!&C3EI zRaJCfob^(|Dsnj*%iZb|Ml|Qq>zBN8lh8BPK;z+@{XZ}DlSFn~s*brSXvVWMo&DBc zROAeoPOEtQd3F}(cRxx16J|DjxodJ^{Q1|hTc3KtJ9Ftsuow3W2HLNltn{BVBu%`n ziKnful1?J$<8FS|Klsc~_|dd3_|MK;rj!%k!eX=2v_6=-L?Wq;cnLSuA)Pw=FBvx% zrfMe#1k<{I8X4#wDnl-4arW^>yxkmFxzOa2C7UaJ?0b>#=e1|=>B34)<^>|+PNOmK}*eNC1ym*~zy z-(|($;{Fouq(50?3vi-l~sUOQX z!z0=Aj`+{hRzm2~?Z;LKuKsbyuN<8m5uFo(r3HJBVIzG#H|jM_2^ped@6UIYD++ya zSb4eJd)+r+cIVmMF78Si?g6aabd|2pUW|N8L={?a zb!k{Qvym+{ue8>UQ3i;;s%fD*k5#EA`NN9+dp^A$hBxI;tRZ14q&;=P(K!ji3)CCQ z1%rsv0r6M}1}`N{ps~@uUloE2$~mDTnk{(@M8T1ZRc*q}T_5`Sqq1Ms4VfbIM?NW_35WBZtfda_N;#|)iO%I8+TIA=RK2I={?`RQk^40s`3#RKtg8M^p5s+liv}~ zJ1skLudSR{W@0=Kt7y7=v|@!Dnd;=5O22{~9le=)kQnQI(~8WUA8RQHKI3`y(5K$U zp`4Tr0pw+~i8L|Y#Ym;*`!xW*uyXQWy(@c%iV_vbyJiC9>%XmZ2_Xtri~yP-^6{Gg zjcD0u@Rpw~Y<|mCiRNgCYo*sMy0PT%#*4C7Dwy4ENO(=iWt7gdPA`&o)>y-R#abQw zX*i}i04uper7f{MbGC3W!I&(hfrUOG_~Emz=I>u(Kbt4Y%(k|&LP;&UJb1OBM-CTw zp~3^rH>Idrw>Cdsw(M?vFJ=CS$v1tq|_?UI#ZoRUAp!sifG~$bs z@^`r@t@d|gBeI5cXIUDO5*9M(rvDXau=VitNd<}1ePR(S9s7ND;BE@tzvbmR?o;we;oAX*)pA2O4U`rPy4;xT zL9a9{Vp;I8Hz%r11<<#qI|gJ5pg(TP4e?(~3#}h|t>52bo)8M8rja)AIzMwn@+iXr zU?EyrK{P2p$7&-ty-XCgWueJPd301nyZaxz+6vigO*)e-seg{T0xQ?d>{J0$5^5-K zf_YC?b`-j1pf|d&hwxgXHiU2nLkf$3PVwR6=Ys=x@Bdc-O9r(0`O$8-XRAdP-QlbU z@MV@GteQYp8PhV_qMJb0a-9xYGNeWT5m#P*Idx^lW&vc;P$x{fUZLfA=m&vJGeW9$ z(z-z+sPXV*Sd{m=8++ne*u;uKwfSdXtmpI^*lV!!&E+N8LSPkECKSs#0>!Lb~}wE#g7SPNi_m|=I7!MXB1j}wYbhcg6N z2KXebsZ6QW?|GhW7#Tq4v39%d(D5Py1VIqx0=0hIe;hGSByoNdV#4{pk4~o({ZHV> zb?sjv)z+cb1;mYzrYOHAO$OptuhD_HT>#kfJ+y+j^1knbcX@O?P;N?^l;_vccdDZm z_}F5Mo7bswCX%4ed#Y8l1mM@0>a+pz&~;w8sR7g-^FLK_ z&Smvve`!jsO?0=ak7>fnPmelNfjHCY^m<^mK>qMH<;DDoIi4P~`g%EM8} ze*i@VSR^bKW~@;7=IEjX$OFD2rF+psk;Rx?3nJ>07=P0n39#sO03CFLv!W>c)7jWd z&J;r|16k{l#Gls*)&?+zpNeHffh~6tBV^_P-tA-wK%lk=%)d--t31GWg$V0>ka|+r z=55G1<{cXpQ9cj9u?ZAaUNklIQK94KFL~8L?ILaXjpKmr=C;GFf0?B` zKgXk_i1IrAEagpQviMU6LaGq8cWP*$0d#@(Cc8h^MRfe|g+pudEF_F@9IgfG`01~+ z8(*l&;?JB6Z8x_aYLlj$lBVN}NQTSij|^}mlfSoDm$=rRThmrzI!=P?MsgRO{0~|2 zbuSP|Ic|e85Gvo8F7c{M-Rk&SR+j_#F-n9g)cTL)k>p0OaRAAac8tqvL&*@kbL%sT1Q$pXL>a_0I2no!6O5x!l}2xdH=360zbyf(vrE2ans6h z<+ARVmJ0zs4V&X<8HHbKazI(VfZvzl3jr8^R%&eS;+pmt#1=w`U+fzPLF(;w6_Ei< zOWUd^BC8*7U}M7zpIst0Af`Wy&Kjwut=yzJAd%oyez6}jkSe#y0lDrBsbh2XkzG0? z>N0bd@@eO|F?9S{@~aL=H2@Xb@HV0hIum3c5YrG`**7Y`h&93n8in~)s17jB1t?*E z2qCa9_G5i0k%^W48F|%a|FO!ce~0%9OyWz;(I z8i6~&ieDu8Z5$A50z6sh1{S7~mTtM)ggi|`O}s_;vmB6khKOlIm6fE_Yjo@Ox_UWG z4w#2u$H5UzMzYr1Y*%AU-&OFbDsiWOC9!$% z?NG(Kkfgo6MR6MZnRkcx*+e7H$Zk=0ikHo=%>fjCrp#)xYT730or4{j_r}OyY49fu zz>|+D(`F?h({(mRIBot|6X4_<>`{1hOh>@aXI;lRbhsP*i3p&AG_Kac Date: Tue, 2 Jun 2020 00:17:13 +0800 Subject: [PATCH 53/73] Update uievent onKeyDown --- _server/editor_ui.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/_server/editor_ui.js b/_server/editor_ui.js index 3e7c7d34..2412581f 100644 --- a/_server/editor_ui.js +++ b/_server/editor_ui.js @@ -137,13 +137,7 @@ editor_ui_wrapper = function (editor) { // UI预览 & 地图选点 if (editor.uievent && editor.uievent.isOpen) { - e.preventDefault(); - if (e.keyCode == 27) editor.uievent.close(); - else if (e.keyCode == 13) editor.uievent.confirm(); - else if (e.keyCode == 87) editor.uievent.move(0, -1) - else if (e.keyCode == 65) editor.uievent.move(-1, 0) - else if (e.keyCode == 83) editor.uievent.move(0, 1); - else if (e.keyCode == 68) editor.uievent.move(1, 0); + editor.uievent.onKeyDown(e); return; } @@ -572,6 +566,17 @@ editor_ui_wrapper = function (editor) { uievent.setPoint(core.floorIds[index]); } + uievent.onKeyDown = function (e) { + if (e.keyCode == 27) editor.uievent.close(); + else if (e.keyCode == 13) editor.uievent.confirm(); + if (uievent.mode == 'selectPoint') { + if (e.keyCode == 87) editor.uievent.move(0, -1) + if (e.keyCode == 65) editor.uievent.move(-1, 0) + if (e.keyCode == 83) editor.uievent.move(0, 1); + if (e.keyCode == 68) editor.uievent.move(1, 0); + } + } + // ------ 搜索变量出现的位置,也放在uievent好了 ------ // uievent.searchUsedFlags = function () { From 5c16fa55b2f855e1bb75f994760b51b9e20922fb Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 2 Jun 2020 11:21:50 +0800 Subject: [PATCH 54/73] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=94=E5=9B=BE?= =?UTF-8?q?=E5=B1=82=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor_ui.js | 1 - project/plugins.js | 36 ++++-------------------------------- 2 files changed, 4 insertions(+), 33 deletions(-) diff --git a/_server/editor_ui.js b/_server/editor_ui.js index 2412581f..49680762 100644 --- a/_server/editor_ui.js +++ b/_server/editor_ui.js @@ -568,7 +568,6 @@ editor_ui_wrapper = function (editor) { uievent.onKeyDown = function (e) { if (e.keyCode == 27) editor.uievent.close(); - else if (e.keyCode == 13) editor.uievent.confirm(); if (uievent.mode == 'selectPoint') { if (e.keyCode == 87) editor.uievent.move(0, -1) if (e.keyCode == 65) editor.uievent.move(-1, 0) diff --git a/project/plugins.js b/project/plugins.js index e18ab765..44a805ee 100644 --- a/project/plugins.js +++ b/project/plugins.js @@ -350,6 +350,9 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = input.id = id; input.value = value; editor.dom[id] = input; + input.onchange = function () { + editor.uifunctions.setLayerMod(value); + } editor[value] = editor[value] || defaultMap; return input; }; @@ -391,37 +394,6 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = parent.insertBefore(input, parent.children[1]); parent.appendChild(input2); } - - var _isEditorInit = false; - - // 这里写编辑器复写的内容 有关游戏进程的函数复写请在下面复写 - var _afterEditorInit = function (callback) { - // 防止多次调用 - if (_isEditorInit) { - if (callback) callback(); - return; - } - _isEditorInit = true; - // 绑定onchange - editor.dom.layerMod4.onchange = function () { - editor.uifunctions.setLayerMod('bg2map'); - }; - editor.dom.layerMod5.onchange = function () { - editor.uifunctions.setLayerMod('fg2map'); - } - // 继续进行afterCoreReset - if (callback) callback(); - }; - // 将复写编辑器的内容插入changeFloor之后 afterCoreReset之前 - // 加载队列:int main => core => plugin(即plugin这个文件里的插件内容) => editor(此时才开始加载编辑器)=> afterMainInit - // => editor_file(此时才能开始复写编辑器内容) => changeFloor(在这里插入编辑器复写内容的加载) => afterCoreReset(此时才开始进行地图的绘制) - // 直接复写由于加载插件时 复写的editor函数还未加载 会导致出错 - var _changeFloor = core.events.changeFloor; - core.events.changeFloor = function (floorId, stair, heroLoc, time, callback) { - return _changeFloor.call(core.events, floorId, stair, heroLoc, time, function () { - _afterEditorInit(callback); - }); - }; } ////// 绘制背景层 ////// @@ -541,7 +513,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = loc.forEach(function (t) { var x = t[0], y = t[1]; - var flag = [floorId, x, y, name+'_disable'].join('@'); + var flag = [floorId, x, y, name + '_disable'].join('@'); if (type == 'hide') core.setFlag(flag, true); else core.removeFlag(flag); }); From c7dc28f3a9b9372bd422735b1584575b0394f7dd Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 2 Jun 2020 14:06:08 +0800 Subject: [PATCH 55/73] =?UTF-8?q?=E7=BF=BB=E8=AF=91=E6=95=B0=E5=80=BC?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E8=BF=90=E7=AE=97=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 22069f27..53942603 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -3162,8 +3162,8 @@ Arithmetic_List /*Arithmetic_List ['+','-','*','/','**','===','!==','>','<','>=','<=','&&','||','==','!=']*/; AssignOperator_List - : '='|'+='|'-='|'*='|'/='|'**='|'//='|'%=' - ; + : '设为'|'增加'|'减少'|'乘以'|'除以'|'乘方'|'除以并取商'|'除以并取余' + /*AssignOperator_List ['=','+=','-=','*=','/=','**=','//=','%=']*/; Weather_List : '无'|'雨'|'雪'|'雾' From 5e7458442602ab22b9a72cc02f66374a9e0fa2d9 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 2 Jun 2020 14:47:31 +0800 Subject: [PATCH 56/73] =?UTF-8?q?=E8=BF=90=E7=AE=97=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 53942603..f2f20310 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -2943,7 +2943,7 @@ expression //todo 修改recieveOrder,根据Arithmetic_List_0不同的值设定不同的recieveOrder var code = expression_0 + Arithmetic_List_0 + expression_1; var ops = { - '^': 'Math.pow('+expression_0+','+expression_1+')' + '**': 'Math.pow('+expression_0+','+expression_1+')' } if (ops[Arithmetic_List_0])code = ops[Arithmetic_List_0]; var orders = { @@ -2951,6 +2951,7 @@ var orders = { '-': Blockly.JavaScript.ORDER_SUBTRACTION, '*': Blockly.JavaScript.ORDER_MULTIPLICATION, '/': Blockly.JavaScript.ORDER_DIVISION, + '%': Blockly.JavaScript.ORDER_MODULUS, '**': Blockly.JavaScript.ORDER_MEMBER, //recieveOrder : ORDER_COMMA '==': Blockly.JavaScript.ORDER_EQUALITY, '!=': Blockly.JavaScript.ORDER_EQUALITY, @@ -2961,7 +2962,8 @@ var orders = { '>=': Blockly.JavaScript.ORDER_RELATIONAL, '<=': Blockly.JavaScript.ORDER_RELATIONAL, '&&': Blockly.JavaScript.ORDER_LOGICAL_AND, - '||': Blockly.JavaScript.ORDER_LOGICAL_OR + '||': Blockly.JavaScript.ORDER_LOGICAL_OR, + '^': Blockly.JavaScript.ORDER_BITWISE_XOR } return [code, orders[Arithmetic_List_0]]; */; @@ -3158,8 +3160,8 @@ ShopUse_List /*ShopUse_List ['money','exp']*/; Arithmetic_List - : '加'|'减'|'乘'|'除'|'乘方'|'等于'|'不等于'|'大于'|'小于'|'大于等于'|'小于等于'|'且'|'或'|'弱等于'|'弱不等于' - /*Arithmetic_List ['+','-','*','/','**','===','!==','>','<','>=','<=','&&','||','==','!=']*/; + : '加'|'减'|'乘'|'除'|'取余'|'乘方'|'等于'|'不等于'|'大于'|'小于'|'大于等于'|'小于等于'|'且'|'或'|'异或'|'弱等于'|'弱不等于' + /*Arithmetic_List ['+','-','*','/','%','**','===','!==','>','<','>=','<=','&&','||','^','==','!=']*/; AssignOperator_List : '设为'|'增加'|'减少'|'乘以'|'除以'|'乘方'|'除以并取商'|'除以并取余' From 934aa025f88e081bc989e9b2ba365563c454fae9 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 2 Jun 2020 16:40:25 +0800 Subject: [PATCH 57/73] =?UTF-8?q?=E6=98=BE=E7=A4=BA=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E7=AB=8B=E7=BB=98=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 79 +++++++++++++++++++++++++++++++++ _server/MotaActionParser.js | 35 ++++++++++++++- _server/editor_blocklyconfig.js | 1 + libs/ui.js | 8 ++-- 4 files changed, 118 insertions(+), 5 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index f2f20310..6aab1465 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -595,6 +595,7 @@ return JSON.stringify(code); action : text_0_s | text_1_s + | text_2_s | comment_s | autoText_s | scrollText_s @@ -754,6 +755,84 @@ var code = '"'+title+EvalString_2+EvalString_3+'",\n'; return code; */; +text_2_s + : '标题' EvalString? '图像' EvalString? '对话框效果' EvalString? ':' EvalString BGNL? Newline textDrawingList* Newline + + +/* text_2_s +tooltip : text:显示一段文字(剧情),选项较多请右键点击帮助 +helpUrl : https://h5mota.com/games/template/_docs/#/event?id=text%EF%BC%9A%E6%98%BE%E7%A4%BA%E4%B8%80%E6%AE%B5%E6%96%87%E5%AD%97%EF%BC%88%E5%89%A7%E6%83%85%EF%BC%89 +doubleclicktext : EvalString_3 +allIds : ['EvalString_1'] +default : ["小妖精","fairy","","欢迎使用事件编辑器(双击方块进入多行编辑)",null] +var title=''; +if (EvalString_0==''){ + if (EvalString_1=='' )title=''; + else title='\\t['+EvalString_1+']'; +} else { + if (EvalString_1=='')title='\\t['+EvalString_0+']'; + else title='\\t['+EvalString_0+','+EvalString_1+']'; +} +if(EvalString_2 && !(/^(up|center|down|hero|this)(,(hero|null|\d+,\d+|\d+))?$/.test(EvalString_2))) { + throw new Error('对话框效果的用法请右键点击帮助'); +} +EvalString_2 = EvalString_2 && ('\\b['+EvalString_2+']'); +var code = '"'+title+EvalString_2+textDrawingList_0.replace(/\s/g, '')+EvalString_3+'",\n'; +return code; +*/; + +textDrawingList + : textDrawing + | textDrawingEmpty; + + +textDrawing + : '立绘' EvalString '翻转' Reverse_List '绘制坐标' 'x' IntString 'y' IntString '宽' IntString? '高' IntString? BGNL? Newline + '裁剪坐标' 'x' IntString? 'y' IntString? '宽' IntString? '高' IntString? '不透明度' EvalString? '旋转角度' IntString? + +/* textDrawing +tooltip : 立绘 +helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawImage%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9b%be%e7%89%87 +default : ["fairy.png","null","0","0","","","","","","","",""] +colour : this.subColor +allImages : ['EvalString_0'] +if (Reverse_List_0 && Reverse_List_0 != 'null') EvalString_0 += Reverse_List_0; +var list = [EvalString_0, IntString_0, IntString_1]; +if (IntString_2 || IntString_3) { + if (list.length != 3 || !IntString_2 || !IntString_3) { + throw "绘制的宽和高需同时设置"; + } + list.push(IntString_2); + list.push(IntString_3); +} +if (IntString_4 || IntString_5 || IntString_6 || IntString_7) { + if (list.length != 5) throw "如设置裁剪区域,请先设置绘制区域的宽高"; + if (!IntString_4 || !IntString_5 || !IntString_6 || !IntString_7) { + throw "如设置裁剪区域,请同时设置全部的裁剪坐标和宽高"; + } + list.splice(1, 0, IntString_4, IntString_5, IntString_6, IntString_7); +} +if (EvalString_1) { + if (list.length != 9) throw "如设置不透明度,需填满所有坐标和宽高"; + var opacity = parseFloat(EvalString_1); + if (isNaN(opacity) || opacity < 0 || opacity > 1) throw "不合法的不透明度,必须是0到1之间" + list.push(opacity); +} +if (IntString_8) { + if (list.length != 10) throw "如设置旋转角度,需填满所有坐标和宽高,以及不透明度"; + list.push(IntString_8); +} +return "\\f[" + list.join(",")+"]"; +*/; + +textDrawingEmpty + : Newline + +/* textDrawingEmpty +var code = ''; +return code; +*/; + comment_s : '添加注释' ':' EvalString Newline diff --git a/_server/MotaActionParser.js b/_server/MotaActionParser.js index ffa74fa7..7202bd61 100644 --- a/_server/MotaActionParser.js +++ b/_server/MotaActionParser.js @@ -210,7 +210,38 @@ ActionParser.prototype.parseAction = function() { return; case "text": // 文字/对话 var info = this.getTitleAndPosition(data.text); - if (info[0] || info[1] || info[2]) { + var textDrawing = []; + info[3] = (info[3] || "").replace(/(\f|\\f)\[(.*?)]/g, function (text, sympol, str) { + var ss = str.split(","); + if (ss.length == 3 || ss.length == 5 || ss.length >=9) { + var swap = function (i, j) { var x = ss[i]; ss[i] = ss[j]; ss[j] = x;} + if (ss.length >= 9) { + swap(1,5); swap(2,6); swap(3,7); swap(4,8); + } + textDrawing.push(ss); + } + return ''; + }); + if (textDrawing.length > 0) { + var buildTextDrawing = function (obj) { + if(!obj) obj=[]; + var text_choices = null; + for(var ii=obj.length-1,choice;choice=obj[ii];ii--) { + var reverse = 'null'; + if (choice[0].endsWith(':o') || choice[0].endsWith(':x') || choice[0].endsWith(':y')) { + reverse = choice[0].substring(choice[0].length - 2); + choice[0] = choice[0].substring(0, choice[0].length - 2); + } + text_choices=MotaActionBlocks['textDrawing'].xmlText([ + choice[0], reverse, choice[1], choice[2], choice[3], choice[4], choice[5], choice[6], + choice[7], choice[8], choice[9], choice[10], text_choices]); + } + return text_choices; + } + this.next = MotaActionBlocks['text_2_s'].xmlText([ + info[0], info[1], info[2], info[3], buildTextDrawing(textDrawing), this.next + ]); + } else if (info[0] || info[1] || info[2]) { this.next = MotaActionBlocks['text_1_s'].xmlText([ info[0], info[1], info[2], info[3], this.next]); } @@ -1154,7 +1185,7 @@ MotaActionFunctions.JsonEvalString_pre = function (JsonEvalString) { } MotaActionFunctions.IntString_pre = function (IntString) { - if (!/^\d*$/.test(IntString)) throw new Error('此项必须是整数或不填'); + if (!/^[+-]?\d*$/.test(IntString)) throw new Error('此项必须是整数或不填'); return IntString; } diff --git a/_server/editor_blocklyconfig.js b/_server/editor_blocklyconfig.js index 5961514a..179f0a56 100644 --- a/_server/editor_blocklyconfig.js +++ b/_server/editor_blocklyconfig.js @@ -87,6 +87,7 @@ editor_blocklyconfig=(function(){ '显示文字':[ MotaActionBlocks['text_0_s'].xmlText(), MotaActionBlocks['text_1_s'].xmlText(), + MotaActionFunctions.actionParser.parseList("\t[小妖精,fairy]\f[fairy.png,0,0]欢迎使用事件编辑器(双击方块进入多行编辑)"), MotaActionBlocks['comment_s'].xmlText(), MotaActionBlocks['autoText_s'].xmlText(), MotaActionBlocks['scrollText_s'].xmlText(), diff --git a/libs/ui.js b/libs/ui.js index 4825563a..771708f8 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -1347,9 +1347,11 @@ ui.prototype._drawTextBox_drawImages = function (content) { core.drawImage('ui', ss[0], parseFloat(ss[1]), parseFloat(ss[2])); else if (ss.length==5) core.drawImage('ui', ss[0], parseFloat(ss[1]), parseFloat(ss[2]), parseFloat(ss[3]), parseFloat(ss[4])); - else if (ss.length==9 || ss.length==10) { - if (ss.length==10) core.setAlpha('ui', parseFloat(ss[9])); - core.drawImage('ui', ss[0], parseFloat(ss[1]), parseFloat(ss[2]), parseFloat(ss[3]), parseFloat(ss[4]), parseFloat(ss[5]), parseFloat(ss[6]), parseFloat(ss[7]), parseFloat(ss[8])); + else if (ss.length >= 9) { + if (ss.length >= 10) core.setAlpha('ui', parseFloat(ss[9])); + var angle = (parseFloat(ss[10]) || 0) * Math.PI / 180; + core.drawImage('ui', ss[0], parseFloat(ss[1]), parseFloat(ss[2]), parseFloat(ss[3]), parseFloat(ss[4]), + parseFloat(ss[5]), parseFloat(ss[6]), parseFloat(ss[7]), parseFloat(ss[8]), angle); core.setAlpha('ui', 1); } return ""; From 35e8784da5ab1abce84144ad68c230e2678948bc Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 2 Jun 2020 18:03:23 +0800 Subject: [PATCH 58/73] =?UTF-8?q?=E9=A2=84=E8=A7=88=E7=AB=8B=E7=BB=98?= =?UTF-8?q?=E5=92=8C=E5=9B=BE=E7=89=87;=E9=80=89=E6=8B=A9bgm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 8 +++ _server/editor_blockly.js | 101 ++++++++++++++++++++++++++++++++++---- 2 files changed, 99 insertions(+), 10 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 6aab1465..c316dfcc 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -795,6 +795,7 @@ tooltip : 立绘 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawImage%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9b%be%e7%89%87 default : ["fairy.png","null","0","0","","","","","","","",""] colour : this.subColor +previewBlock : true allImages : ['EvalString_0'] if (Reverse_List_0 && Reverse_List_0 != 'null') EvalString_0 += Reverse_List_0; var list = [EvalString_0, IntString_0, IntString_1]; @@ -1815,6 +1816,7 @@ helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showImage%ef%bc%9a% default : [1,"bg.jpg","null","0","0",1,0,false] allImages : ['EvalString_0'] colour : this.printColor +previewBlock : true if(Int_0<=0 || Int_0>50) throw new Error('图片编号在1~50之间'); if (Reverse_List_0 && Reverse_List_0 != 'null') { Reverse_List_0 = ', "reverse": "' + Reverse_List_0 + '"'; @@ -1836,6 +1838,7 @@ helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showImage%ef%bc%9a% default : [1,"bg.jpg","null","0","0","","",1,"0","0","","",0,false] allImages : ['EvalString_0'] colour : this.printColor +previewBlock : true if(Int_0<=0 || Int_0>50) throw new Error('图片编号在1~50之间'); if (Reverse_List_0 && Reverse_List_0 != 'null') { Reverse_List_0 = ', "reverse": "' + Reverse_List_0 + '"'; @@ -1893,6 +1896,7 @@ helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showgif%EF%BC%9A%E6 default : ["","",""] allImages : ['EvalString_0'] colour : this.printColor +previewBlock : true EvalString_0 = EvalString_0 ? (', "name": "'+EvalString_0+'"') : ''; var loc = (PosString_0 && PosString_1) ? (', "loc": ['+PosString_0+','+PosString_1+']') : ''; var code = '{"type": "showGif"'+EvalString_0+loc+'},\n'; @@ -1928,6 +1932,7 @@ tooltip : setCurtain: 更改画面色调,动画时间可不填 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setcurtain%EF%BC%9A%E6%9B%B4%E6%94%B9%E7%94%BB%E9%9D%A2%E8%89%B2%E8%B0%83 default : ["255,255,255,1",'rgba(255,255,255,1)',500,true,false] colour : this.soundColor +previewBlock : true IntString_0 = IntString_0 ?(', "time": '+IntString_0):''; Bool_0 = Bool_0 ? ', "keep": true' : ''; var async = Bool_1?', "async": true':''; @@ -2085,6 +2090,7 @@ tooltip : playBgm: 播放背景音乐 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=playbgm%EF%BC%9A%E6%92%AD%E6%94%BE%E8%83%8C%E6%99%AF%E9%9F%B3%E4%B9%90 default : ["bgm.mp3", 0, true] allBgms : ['EvalString_0'] +material : ["./project/bgms/", "EvalString_0"] colour : this.soundColor Int_0 = Int_0 ? (', "startTime": '+Int_0) : ''; Bool_0 = Bool_0 ? ', "keep": true' : ''; @@ -2126,6 +2132,7 @@ tooltip : loadBgm: 预加载某个背景音乐,之后可以直接播放 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=loadBgm%ef%bc%9a%e9%a2%84%e5%8a%a0%e8%bd%bd%e4%b8%80%e4%b8%aa%e8%83%8c%e6%99%af%e9%9f%b3%e4%b9%90 default : ["bgm.mp3"] allBgms : ['EvalString_0'] +material : ["./project/bgms/", "EvalString_0"] colour : this.soundColor var code = '{"type": "loadBgm", "name": "'+EvalString_0+'"},\n'; return code; @@ -2155,6 +2162,7 @@ helpUrl : https://h5mota.com/games/template/_docs/#/event?id=playsound%EF%BC%9A% default : ["item.mp3",false] colour : this.soundColor allSounds : ['EvalString_0'] +material : ["./project/sounds/", "EvalString_0"] Bool_0 = Bool_0 ? ', "stop": true' : ''; var code = '{"type": "playSound", "name": "'+EvalString_0+'"'+Bool_0+'},\n'; return code; diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 2924cb28..6f8e1843 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -234,18 +234,86 @@ editor_blockly = function () { if (b && MotaActionBlocks[b.type].previewBlock) { try { + // 特殊处理立绘 + if (b.type == 'textDrawing') { + var str = Blockly.JavaScript.blockToCode(b); + var list = str.substring(str.indexOf('[')+1, str.lastIndexOf(']')).split(","); + if (list.length == 3 || list.length == 5 || list.length >= 9) { + var arr = []; + var name = list[0]; + var obj = {"type": "drawImage"}; + if (name.endsWith(":o") || name.endsWith(":x") || name.endsWith(":y")) { + obj.reverse = name.substring(name.length-2); + name = name.substring(0, name.length - 2); + } + obj.image = name; + obj.x = parseFloat(list[1]); + obj.y = parseFloat(list[2]); + if (list.length >= 5) { + obj.w = parseFloat(list[3]); + obj.h = parseFloat(list[4]); + } + if (list.length >= 9) { + obj.x1 = parseFloat(list[5]); + obj.y1 = parseFloat(list[6]); + obj.w1 = parseFloat(list[7]); + obj.h1 = parseFloat(list[8]); + } + if (list.length >= 10) { + arr.push({"type": "setAttribute", "alpha": parseFloat(list[9])}); + } + if (list.length >= 11) { + obj.angle = parseFloat(list[10]); + } + arr.push(obj); + console.log(arr); + editor.uievent.previewUI(arr); + } + return true; + } + var code = "[" + Blockly.JavaScript.blockToCode(b).replace(/\\(i|c|d|e|z)/g, '\\\\$1') + "]"; eval("var obj="+code); - if (obj.length > 0 && b.type == 'waitContext_2') { - var dt = obj[0]; - editor.uievent.previewUI([{"type": "fillRect", "x": dt.px[0], "y": dt.py[0], - "width": "(" + dt.px[1] + ")-(" + dt.px[0] + ")", "height": "(" + dt.py[1] + ")-(" + dt.py[0] + ")", - "style": "rgba(255,0,0,0.5)"}]) - } - else if (obj.length > 0 && b.type.startsWith(obj[0].type)) { - if (b.type == 'previewUI_s') - editor.uievent.previewUI(obj[0].action); - else editor.uievent.previewUI([obj[0]]); + if (obj.length == 0) return true; + obj = obj[0]; + switch (b.type) { + case 'waitContext_2': // 等待用户操作坐标预览 + editor.uievent.previewUI([{"type": "fillRect", "x": obj.px[0], "y": obj.py[0], + "width": "(" + obj.px[1] + ")-(" + obj.px[0] + ")", "height": "(" + obj.py[1] + ")-(" + obj.py[0] + ")", + "style": "rgba(255,0,0,0.5)"}]); + break; + case 'showImage_s': // 显示图片 + case 'showImage_1_s': + if (obj.sloc) { + editor.uievent.previewUI([ + {type: "setAttribute", alpha: obj.opacity}, + {type: "drawImage", image: obj.image, x: obj.sloc[0], y: obj.sloc[1], w: obj.sloc[2], h: obj.sloc[3], + x1: obj.loc[0], y1: obj.loc[1], w1: obj.loc[2], h1: obj.loc[3], reverse: obj.reverse} + ]); + } else { + editor.uievent.previewUI([ + {type: "setAttribute", alpha: obj.opacity}, + {type: "drawImage", image: obj.image, x: obj.loc[0], y: obj.loc[1], w: obj.loc[2], h: obj.loc[3], reverse: obj.reverse} + ]); + } + break; + case 'showGif_s': // 显示动图 + if (obj.name && obj.loc) { + editor.uievent.previewUI([{type: "drawImage", image: obj.name, x: obj.loc[0], y: obj.loc[1]}]); + } + break; + case 'setCurtain_0_s': // 更改色调 + if (obj.color) { + editor.uievent.previewUI([{type: "fillRect", x: 0, y: 0, width: core.__PIXELS__, height: core.__PIXELS__, style: obj.color}]); + } + break; + case 'previewUI_s': // 预览 + editor.uievent.previewUI(obj.action); + break; + default: + if (b.type.startsWith(obj.type)) { + editor.uievent.previewUI([obj]); + } } } catch (e) {main.log(e);} return true; @@ -263,6 +331,19 @@ editor_blockly = function () { return; } + if (b && MotaActionBlocks[b.type].material) { + var material = JSON.parse(MotaActionBlocks[b.type].material); + console.log(material); + editor.uievent.selectMaterial([b.getFieldValue(material[1])], '请选择素材', material[0], function (one) { + return /^[-A-Za-z0-9_.]+$/.test(one) ? one : null; + }, function (value) { + if (value instanceof Array && value.length > 0) { + b.setFieldValue(value[0], material[1]); + } + }); + return; + } + var f = b ? MotaActionBlocks[b.type].doubleclicktext : null; if (f) { var value = b.getFieldValue(f); From 425c2c26511feb0726fd587d9d04c044b746370e Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 2 Jun 2020 20:28:12 +0800 Subject: [PATCH 59/73] =?UTF-8?q?=E7=A7=BB=E9=99=A4html=E4=B8=AD=E7=9A=84s?= =?UTF-8?q?ize?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 20 ++++++++++---------- libs/core.js | 5 +++++ 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/index.html b/index.html index 818a381e..e6c2633d 100644 --- a/index.html +++ b/index.html @@ -166,16 +166,16 @@
    - - - - - - - - - - 此浏览器不支持HTML5 + + + + + + + + + + 此浏览器不支持HTML5
    diff --git a/libs/core.js b/libs/core.js index bb01d112..148d537b 100644 --- a/libs/core.js +++ b/libs/core.js @@ -226,6 +226,11 @@ core.prototype.init = function (coreData, callback) { this._init_others(); this._initPlugins(); + // 初始化画布 + for (var name in core.canvas) { + core.canvas[name].canvas.width = core.canvas[name].canvas.height = core.__PIXELS__; + } + core.loader._load(function () { core.extensions._load(function () { core._afterLoadResources(callback); From 7bc2a868b45997363b85a4e4c1784eb5588ffe6e Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 2 Jun 2020 20:38:52 +0800 Subject: [PATCH 60/73] Remove 416 from editor --- _server/editor.js | 4 ++++ editor-mobile.html | 8 ++++---- editor.html | 8 ++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/_server/editor.js b/_server/editor.js index ec93c476..5198a509 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -216,6 +216,10 @@ editor.prototype.init = function (callback) { } var afterCoreReset = function () { + var canvases = document.getElementsByClassName('gameCanvas'); + for (var one in canvases) { + canvases[one].width = canvases[one].height = core.__PIXELS__; + } editor.game.idsInit(core.maps, core.icons.icons); // 初始化图片素材信息 editor.drawInitData(core.icons.icons); // 初始化绘图 diff --git a/editor-mobile.html b/editor-mobile.html index c65c0fa7..19cf4c3c 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -300,15 +300,15 @@
    - - + +

    - +
    diff --git a/editor.html b/editor.html index df6f4682..180330e9 100644 --- a/editor.html +++ b/editor.html @@ -295,8 +295,8 @@
    - - + +
    @@ -342,7 +342,7 @@

    (Ctrl+滚轮放缩,右键置顶)

    - +

    - +
    From fdd65bc02824af52c0b9c5ab4a816d07c43006ca Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 2 Jun 2020 22:47:27 +0800 Subject: [PATCH 61/73] =?UTF-8?q?=E8=B7=B3=E8=B7=83=E9=9F=B3=E6=95=88;?= =?UTF-8?q?=E6=80=AA=E7=89=A9=E6=89=8B=E5=86=8C48=E9=AB=98=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/events.js | 1 - libs/maps.js | 3 +-- libs/ui.js | 20 +++++++++++++++----- project/functions.js | 2 +- project/items.js | 2 +- 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/libs/events.js b/libs/events.js index a46fa395..21b76daa 100644 --- a/libs/events.js +++ b/libs/events.js @@ -2950,7 +2950,6 @@ events.prototype.jumpHero = function (ex, ey, time, callback) { var sx=core.status.hero.loc.x, sy=core.status.hero.loc.y; if (!core.isset(ex)) ex=sx; if (!core.isset(ey)) ey=sy; - core.playSound('jump.mp3'); var jumpInfo = core.maps.__generateJumpInfo(sx, sy, ex, ey, time || 500); jumpInfo.icon = core.material.icons.hero[core.getHeroLoc('direction')]; jumpInfo.width = core.material.icons.hero.width || 32; diff --git a/libs/maps.js b/libs/maps.js index 73f0798a..1c778f8d 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -1976,7 +1976,6 @@ maps.prototype.jumpBlock = function (sx, sy, ex, ey, time, keep, callback) { var block = blockArr[0], blockInfo = blockArr[1]; var canvases = this._initDetachedBlock(blockInfo, sx, sy, block.event.animate !== false); this._moveDetachedBlock(blockInfo, 32 * sx, 32 * sy, 1, canvases); - core.playSound('jump.mp3'); var jumpInfo = this.__generateJumpInfo(sx, sy, ex, ey, time); jumpInfo.keep = keep; @@ -2164,7 +2163,7 @@ maps.prototype.drawBoxAnimate = function () { core.clearMap('ui', obj.bgx, obj.bgy, obj.bgWidth, obj.bgHeight); core.fillRect('ui', obj.bgx, obj.bgy, obj.bgWidth, obj.bgHeight, core.material.groundPattern); core.drawImage('ui', obj.image, core.status.globalAnimateStatus % obj.animate * 32, obj.pos, - 32, obj.height, obj.x, obj.y, 32, obj.height); + 32, obj.height, obj.x, obj.y, obj.dw || 32, obj.dh || obj.height); }); } diff --git a/libs/ui.js b/libs/ui.js index 771708f8..61fd58a5 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -1915,11 +1915,21 @@ ui.prototype._drawBook_drawBox = function (index, enemy, top, pageinfo) { var img_top = border_top + 5, img_left = border_left + 5; core.strokeRect('ui', 22, border_top, 42, 42, '#DDDDDD', 2); var blockInfo = core.getBlockInfo(enemy.id); - core.status.boxAnimateObjs.push({ - 'bgx': border_left, 'bgy': border_top, 'bgWidth': 42, 'bgHeight': 42, - 'x': img_left, 'y': img_top, 'height': 32, 'animate': blockInfo.animate, - 'image': blockInfo.image, 'pos': blockInfo.posY * blockInfo.height - }); + if (blockInfo.height >= 42) { + var drawWidth = 42 * 32 / blockInfo.height; + core.status.boxAnimateObjs.push({ + 'bgx': border_left, 'bgy': border_top, 'bgWidth': 42, 'bgHeight': 42, + 'x': img_left - 5 + (42 - drawWidth) / 2, 'y': img_top - 5, 'dw': drawWidth, 'dh': 42, + 'height': blockInfo.height, 'animate': blockInfo.animate, + 'image': blockInfo.image, 'pos': blockInfo.posY * blockInfo.height + }); + } else { + core.status.boxAnimateObjs.push({ + 'bgx': border_left, 'bgy': border_top, 'bgWidth': 42, 'bgHeight': 42, + 'x': img_left, 'y': img_top, 'height': 32, 'animate': blockInfo.animate, + 'image': blockInfo.image, 'pos': blockInfo.posY * blockInfo.height + }); + } } ui.prototype._drawBook_drawName = function (index, enemy, top, left, width) { diff --git a/project/functions.js b/project/functions.js index 187a1569..4af024fa 100644 --- a/project/functions.js +++ b/project/functions.js @@ -228,7 +228,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = if (guards.length > 0) { // 记录flag,当前要参与支援的怪物 core.setFlag("__guards__" + x + "_" + y, guards); - var actions = []; + var actions = [{ "type": "playSound", "name": "jump.mp3" }]; // 增加支援的特效动画(图块跳跃) guards.forEach(function (g) { core.push(actions, { "type": "jump", "from": [g[0], g[1]], "to": [x, y], "time": 300, "keep": false, "async": true }); diff --git a/project/items.js b/project/items.js index 6ed8ea67..f081dd34 100644 --- a/project/items.js +++ b/project/items.js @@ -498,7 +498,7 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "cls": "tools", "name": "跳跃靴", "text": "能跳跃到前方两格处", - "useItemEffect": "core.insertAction({ \"type\": \"jumpHero\", \"loc\": [core.nextX(2), core.nextY(2)] });", + "useItemEffect": "core.playSound(\"jump.mp3\"); core.insertAction({ \"type\": \"jumpHero\", \"loc\": [core.nextX(2), core.nextY(2)] });", "canUseItemEffect": "(function () {\n\tvar nx = core.nextX(2),\n\t\tny = core.nextY(2);\n\treturn nx >= 0 && nx < core.bigmap.width && ny >= 0 && ny < core.bigmap.height && core.getBlockId(nx, ny) == null;\n})();" }, "skill1": { From 3ecc62b11ff5ecdc49d2e8fe29ffc971e992e323 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Wed, 3 Jun 2020 10:50:40 +0800 Subject: [PATCH 62/73] Small fixes --- _server/MotaAction.g4 | 25 +++++++++++++++---------- _server/MotaActionParser.js | 2 +- _server/editor_blockly.js | 8 +++++++- libs/events.js | 2 +- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index c316dfcc..a33485f5 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -464,6 +464,7 @@ tooltip : 楼层贴图 default : ["bg.jpg","null","bg",0,0,false,"","","","",""] helpUrl : https://h5mota.com/games/template/_docs/#/event allImages : ['EvalString_0'] +previewBlock : true if (Reverse_List_0 && Reverse_List_0 != 'null') { Reverse_List_0 = ', "reverse": "' + Reverse_List_0 + '"'; } else Reverse_List_0 = ''; @@ -955,7 +956,7 @@ return code; setEnemy_s - : '设置怪物属性' ':' '怪物ID' IdString '的' EnemyId_List '值' expression Newline + : '设置怪物属性' ':' '怪物ID' IdString '的' EnemyId_List '为' expression Newline /* setEnemy_s @@ -970,7 +971,7 @@ return code; setFloor_s - : '设置楼层属性' ':' Floor_Meta_List '楼层名' IdString? '值' JsonEvalString Newline + : '设置楼层属性' ':' Floor_Meta_List '楼层名' IdString? '为' JsonEvalString Newline /* setFloor_s @@ -986,7 +987,7 @@ return code; setGlobalAttribute_s - : '设置全局属性' ':' Global_Attribute_List '值' EvalString Newline + : '设置全局属性' ':' Global_Attribute_List '为' EvalString Newline /* setGlobalAttribute_s @@ -1000,7 +1001,7 @@ return code; setGlobalValue_s - : '设置全局数值' ':' Global_Value_List '值' EvalString Newline + : '设置全局数值' ':' Global_Value_List '为' EvalString Newline /* setGlobalValue_s @@ -1412,17 +1413,19 @@ return code; */; setHeroIcon_s - : '更改角色行走图' EvalString? Newline + : '更改角色行走图' EvalString? '不重绘' Bool Newline /* setHeroIcon_s tooltip : setHeroIcon:更改角色行走图 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setheroicon%EF%BC%9A%E6%9B%B4%E6%94%B9%E8%A7%92%E8%89%B2%E8%A1%8C%E8%B5%B0%E5%9B%BE colour : this.dataColor -default : ["hero.png"] +default : ["hero.png", false] allImages : ['EvalString_0'] +material : ["./project/images/", "EvalString_0"] EvalString_0 = EvalString_0 && (', "name": "'+EvalString_0+'"'); -var code = '{"type": "setHeroIcon"'+EvalString_0+'},\n'; +Bool_0 = Bool_0 ? (', "noDraw": true') : ''; +var code = '{"type": "setHeroIcon"'+EvalString_0+Bool_0+'},\n'; return code; */; @@ -1709,6 +1712,7 @@ tooltip : follow: 跟随勇士 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=follow%ef%bc%9a%e8%b7%9f%e9%9a%8f%e5%8b%87%e5%a3%ab default : ["npc.png"] allImages : ['EvalString_0'] +material : ["./project/images/", "EvalString_0"] colour : this.dataColor var code = '{"type": "follow", "name": "'+EvalString_0+'"},\n'; return code; @@ -1723,6 +1727,7 @@ tooltip : unfollow: 取消跟随 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=unfollow%ef%bc%9a%e5%8f%96%e6%b6%88%e8%b7%9f%e9%9a%8f default : [""] allImages : ['EvalString_0'] +material : ["./project/images/", "EvalString_0"] colour : this.dataColor EvalString_0 = EvalString_0 ? (', "name": "' + EvalString_0 + '"') : ""; var code = '{"type": "unfollow"' + EvalString_0 + '},\n'; @@ -3283,8 +3288,8 @@ Event_List /*Event_List ['null','afterBattle','afterGetItem','afterOpenDoor']*/; Floor_Meta_List - : '楼层中文名'|'状态栏名称'|'能否使用楼传'|'能否打开快捷商店'|'是否不可浏览地图'|'是否不可瞬间移动'|'默认地面ID'|'楼层贴图'|'宝石血瓶效果'|'上楼点坐标'|'下楼点坐标'|'楼传落点坐标'|'背景音乐'|'画面色调'|'天气和强度'|'是否地下层' - /*Floor_Meta_List ['title','name','canFlyTo', 'canUseQuickShop', 'cannotViewMap', 'cannotMoveDirectly', 'defaultGround', 'images', 'ratio', 'upFloor', 'downFloor', 'fwlyPoint', 'bgm', 'color', 'weather', 'underGround']*/; + : '楼层中文名'|'状态栏名称'|'能否使用楼传'|'能否打开快捷商店'|'是否不可浏览地图'|'是否不可瞬间移动'|'默认地面ID'|'宝石血瓶效果'|'上楼点坐标'|'下楼点坐标'|'楼传落点坐标'|'背景音乐'|'画面色调'|'天气和强度'|'是否地下层' + /*Floor_Meta_List ['title','name','canFlyTo', 'canUseQuickShop', 'cannotViewMap', 'cannotMoveDirectly', 'defaultGround', 'ratio', 'upFloor', 'downFloor', 'fwlyPoint', 'bgm', 'color', 'weather', 'underGround']*/; Global_Attribute_List : '全局字体'|'横屏左侧状态栏背景'|'竖屏上方状态栏背景'|'竖屏下方道具栏背景'|'边框颜色'|'状态栏文字色'|'楼层转换样式'|'装备列表' @@ -3296,7 +3301,7 @@ Global_Value_List Global_Flag_List - : '显示当前楼层'|'显示勇士图标'|'显示当前等级'|'启用生命上限'|'显示生命值'|'显示魔力值'|'显示攻击力'|'显示防御力'|'显示护盾值'|'显示金币值'|'显示经验值'|'允许等级提升'|'升级扣除模式'|'显示钥匙数量'|'显示绿钥匙'|'显示破炸飞'|'显示毒衰咒'|'显示当前技能'|'楼梯边才能楼传'|'楼传平面塔模式'|'铁门不需要钥匙'|'开启加点'|'开启负伤'|'夹击不超伤害值'|'循环计算临界'|'允许轻按'|'允许走到将死领域'|'允许瞬间移动'|'阻激夹域后禁用快捷商店'|'虚化前景层'|'检查控制台' + : '显示当前楼层'|'显示勇士图标'|'显示当前等级'|'启用生命上限'|'显示生命值'|'显示魔力值'|'显示攻击力'|'显示防御力'|'显示护盾值'|'显示金币值'|'显示经验值'|'允许等级提升'|'升级扣除模式'|'显示钥匙数量'|'显示绿钥匙'|'显示破炸飞'|'显示毒衰咒'|'显示当前技能'|'楼梯边才能楼传'|'楼传平面塔模式'|'铁门不需要钥匙'|'开启加点'|'开启负伤'|'夹击不超伤害值'|'循环计算临界'|'允许轻按'|'允许走到将死领域'|'允许瞬间移动'|'阻激夹域后禁用快捷商店'|'虚化前景层' /*Global_Flag_List ['s:enableFloor','s:enableName','s:enableLv', 's:enableHPMax', 's:enableHP', 's:enableMana', 's:enableAtk', 's:enableDef', 's:enableMDef', 's:enableMoney', 's:enableExp', 's:enableLevelUp', 's:levelUpLeftMode', 's:enableKeys', 's:enableGreenKey', 's:enablePZF', 's:enableDebuff', 's:enableSkill', 'flyNearStair', 'flyRecordPosition', 'steelDoorWithoutKey', 'enableAddPoint', 'enableNegativeDamage', 'betweenAttackMax', 'useLoop', 'enableGentleClick', 'canGoDeadZone', 'enableMoveDirectly', 'disableShopOnDamage', 'blurFg']*/; Colour diff --git a/_server/MotaActionParser.js b/_server/MotaActionParser.js index 7202bd61..43c59ca1 100644 --- a/_server/MotaActionParser.js +++ b/_server/MotaActionParser.js @@ -385,7 +385,7 @@ ActionParser.prototype.parseAction = function() { break; case "setHeroIcon": // 改变勇士 this.next = MotaActionBlocks['setHeroIcon_s'].xmlText([ - data.name||"",this.next]); + data.name||"", data.noDraw || false, this.next]); break; case "move": // 移动事件 data.loc=data.loc||['','']; diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 6f8e1843..7354304d 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -307,6 +307,13 @@ editor_blockly = function () { editor.uievent.previewUI([{type: "fillRect", x: 0, y: 0, width: core.__PIXELS__, height: core.__PIXELS__, style: obj.color}]); } break; + case 'floorOneImage': // 楼层贴图 + obj.w = obj.w / (obj.frame || 1); + editor.uievent.previewUI([ + {type: "drawImage", image: obj.name, x: obj.sx || 0, y: obj.sy || 0, w: obj.w, h: obj.h, + x1: obj.x, y1: obj.y, w1: obj.w, h1: obj.h, reverse: obj.reverse} + ]); + break; case 'previewUI_s': // 预览 editor.uievent.previewUI(obj.action); break; @@ -333,7 +340,6 @@ editor_blockly = function () { if (b && MotaActionBlocks[b.type].material) { var material = JSON.parse(MotaActionBlocks[b.type].material); - console.log(material); editor.uievent.selectMaterial([b.getFieldValue(material[1])], '请选择素材', material[0], function (one) { return /^[-A-Za-z0-9_.]+$/.test(one) ? one : null; }, function (value) { diff --git a/libs/events.js b/libs/events.js index 21b76daa..d934c52d 100644 --- a/libs/events.js +++ b/libs/events.js @@ -1741,7 +1741,7 @@ events.prototype._action_setGlobalFlag = function (data, x, y, prefix) { } events.prototype._action_setHeroIcon = function (data, x, y, prefix) { - this.setHeroIcon(data.name); + this.setHeroIcon(data.name, data.noDraw); core.doAction(); } From d2d93589b967da602c2dceffbfcaa4e75e888676 Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Wed, 3 Jun 2020 14:02:20 +0800 Subject: [PATCH 63/73] =?UTF-8?q?blockly=E6=96=B9=E5=9D=97=E5=B5=8C?= =?UTF-8?q?=E5=85=A5=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _docs/blocksdemo.md | 55 +++++++++++++++++ _docs/index.html | 145 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 198 insertions(+), 2 deletions(-) create mode 100644 _docs/blocksdemo.md diff --git a/_docs/blocksdemo.md b/_docs/blocksdemo.md new file mode 100644 index 00000000..e5acfb27 --- /dev/null +++ b/_docs/blocksdemo.md @@ -0,0 +1,55 @@ +http://127.0.0.1:1055/_docs/#/blocksdemo + +方便测试用 + +这种写法不会生成按钮 +```js +'run'; +return bg.parseList(['行内']); +// return bg.parse(['asdasd','df'],'event')+'
    '+bg.parseList(['asfewg','sty']); +``` +并且是行内的 + +这种写法之后的版本会补一个按钮'添加到常用事件', 目前先这样吧 + +``` MotaAction.event +[ + '显示文章', + '...' +] +``` + +``` MotaAction.shop + [{ + "id": "shop1", + "text": "\t[贪婪之神,moneyShop]勇敢的武士啊, 给我${20+2*flag:shop1}金币就可以:", + "textInList": "1F金币商店", + "choices": [ + {"text": "生命+800", "need": "status:money>=20+2*flag:shop1", "action": [ + {"type": "setValue", "name": "status:money", "operator": "-=", "value": "20+2*flag:shop1"}, + {"type": "setValue", "name": "flag:shop1", "operator": "+=", "value": "1"}, + {"type": "setValue", "name": "status:hp", "operator": "+=", "value": "800"} + ]} + ] + },{ + "id": "itemShop", + "item": true, + "textInList": "道具商店", + "choices": [ + {"id": "yellowKey", "number": 10, "money": 10} + ] + },{ + "id": "keyShop1", + "textInList": "回收钥匙商店", + "commonEvent": "回收钥匙商店", + "args": "" + }] +``` + +``` MotaAction.action +'显示文章' +``` + +``` MotaAction +['MotaAction.action的anction可以省略','只写MotaAction'] +``` \ No newline at end of file diff --git a/_docs/index.html b/_docs/index.html index 3e9754eb..c721b4b3 100644 --- a/_docs/index.html +++ b/_docs/index.html @@ -11,9 +11,77 @@ +
    + +
    + - - + + + + + + + + From afbfb305efedcb50f8f51f6bde5e59336fe087da Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Wed, 3 Jun 2020 14:33:44 +0800 Subject: [PATCH 64/73] =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=99=A8=E5=8A=A8?= =?UTF-8?q?=E7=94=BB=E9=A2=84=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 2 +- _server/editor_blockly.js | 3 ++ _server/editor_ui.js | 101 ++++++++++++++++++++++++++++++++++++++ libs/control.js | 4 +- libs/loader.js | 14 +++--- libs/maps.js | 24 ++++----- 6 files changed, 127 insertions(+), 21 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index a33485f5..59164d3c 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -1758,7 +1758,7 @@ tooltip : animate:显示动画,位置填hero或者1,2形式的位置,或者不 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=animate%EF%BC%9A%E6%98%BE%E7%A4%BA%E5%8A%A8%E7%94%BB default : ["zone","hero",false,false] allAnimates : ['IdString_0'] -selectPoint : ["EvalString_0", "EvalString_0"] +material : ["./project/animates/", "IdString_0"] colour : this.soundColor if (EvalString_0) { if(MotaActionFunctions.pattern.id2.test(EvalString_0)) { diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 7354304d..8651b039 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -341,6 +341,9 @@ editor_blockly = function () { if (b && MotaActionBlocks[b.type].material) { var material = JSON.parse(MotaActionBlocks[b.type].material); editor.uievent.selectMaterial([b.getFieldValue(material[1])], '请选择素材', material[0], function (one) { + if (b.type == 'animate_s') { + return /^[-A-Za-z0-9_.]+\.animate$/.test(one) ? one.substring(0, one.length - 8) : null; + } return /^[-A-Za-z0-9_.]+$/.test(one) ? one : null; }, function (value) { if (value instanceof Array && value.length > 0) { diff --git a/_server/editor_ui.js b/_server/editor_ui.js index 49680762..d42c9b42 100644 --- a/_server/editor_ui.js +++ b/_server/editor_ui.js @@ -350,6 +350,10 @@ editor_ui_wrapper = function (editor) { uievent.close = function () { uievent.isOpen = false; uievent.elements.div.style.display = 'none'; + if (uievent.values.interval) { + clearTimeout(uievent.values.interval); + clearInterval(uievent.values.interval); + } uievent.values = {}; } uievent.elements.no.onclick = uievent.close; @@ -715,6 +719,14 @@ editor_ui_wrapper = function (editor) { `; } + // 预览动画 + if (directory.indexOf('animates') >= 0) { + html += ""; + html += `
    音效: + +
    +
    `; + } html += '
    '; }); html += "

    "; @@ -780,6 +792,95 @@ editor_ui_wrapper = function (editor) { if (audio.paused) audio.play(); } + var _previewMaterialAnimate = function (span, content) { + var input = span.children[1]; + input.value = content.se || ""; + + // 创建dom + if (!uievent.values.dom) { + var dom = document.createElement('span'); + dom.style.position = "relative"; + dom.style.marginLeft = "-10px"; + var canvas = document.createElement('canvas'); + canvas.width = canvas.height = core.__PIXELS__; + canvas.style.position = 'absolute'; + core.drawThumbnail(editor.currentFloorId, null, {}, canvas.getContext('2d')); + dom.appendChild(canvas); + var canvas2 = document.createElement('canvas'); + canvas2.style.position = 'absolute'; + canvas2.width = canvas2.height = core.__PIXELS__; + uievent.values.ctx = canvas2.getContext('2d'); + dom.appendChild(canvas2); + var canvas3 = document.createElement('canvas'); + canvas3.width = canvas3.height = core.__PIXELS__; + dom.appendChild(canvas3); + uievent.values.dom = dom; + } + + span.appendChild(uievent.values.dom); + clearInterval(uievent.values.interval); + var frame = 0; + uievent.values.interval = setInterval(function () { + if (span.style.display == 'none') { + clearInterval(uievent.values.interval); + uievent.values.interval = null; + span.removeChild(uievent.values.dom); + return; + } + core.clearMap(uievent.values.ctx); + core.maps._drawAnimateFrame(uievent.values.ctx, content, core.__PIXELS__ / 2, core.__PIXELS__ / 2, frame++); + }, 50); + } + + uievent._previewMaterialAnimate = function (button) { + var span = button.nextElementSibling; + var filename = span.getAttribute("key"); + uievent.values.animates = uievent.values.animates || {}; + if (span.style.display == 'none') { + button.innerText = '收起'; + span.style.display = 'inline'; + if (uievent.values.animates[filename]) { + _previewMaterialAnimate(span, uievent.values.animates[filename]); + } else { + fs.readFile(filename, 'utf-8', function (e, d) { + if (e) { + alert('无法打开动画文件!'+e); return; + } + uievent.values.animates[filename] = core.loader._loadAnimate(d); + if (uievent.values.animates[filename]) { + uievent.values.animates[filename + ':raw'] = JSON.parse(d); + _previewMaterialAnimate(span, uievent.values.animates[filename]); + } + }) + } + } else { + button.innerText = '预览'; + span.style.display = 'none'; + } + } + + uievent._previewMaterialAnimate_previewSound = function (button) { + var input = button.previousElementSibling; + if (!input.value) return; + if (!uievent.values.audio) + uievent.values.audio = new Audio(); + uievent.values.audio.src = './project/sounds/' + input.value; + uievent.values.audio.play(); + } + + uievent._previewMaterialAnimate_saveSound = function (button) { + var input = button.previousElementSibling.previousElementSibling; + var filename = button.parentElement.getAttribute("key"); + if (!filename || !uievent.values.animates[filename]) return; + uievent.values.animates[filename+':raw'].se = input.value || ""; + fs.writeFile(filename, JSON.stringify(uievent.values.animates[filename+':raw']), 'utf-8', function (e, d) { + if (e) alert('无法修改音效文件!'+e); + else { + alert('动画音效修改成功!别忘了在全塔属性中注册本音效哦!'); + } + }) + } + // ------ 多选框 ------ // uievent.popCheckboxSet = function (value, comments, title, callback) { if (value == null) value = []; diff --git a/libs/control.js b/libs/control.js index 10b5b931..bbf08cba 100644 --- a/libs/control.js +++ b/libs/control.js @@ -176,9 +176,9 @@ control.prototype._animationFrame_animate = function (timestamp) { }); core.status.animateObjs.forEach(function (obj) { if (obj.hero) { - core.maps._drawAnimateFrame(obj.animate, core.status.heroCenter.px, core.status.heroCenter.py, obj.index++); + core.maps._drawAnimateFrame('animate', obj.animate, core.status.heroCenter.px, core.status.heroCenter.py, obj.index++); } else { - core.maps._drawAnimateFrame(obj.animate, obj.centerX, obj.centerY, obj.index++); + core.maps._drawAnimateFrame('animate', obj.animate, obj.centerX, obj.centerY, obj.index++); } }); core.animateFrame.animateTime = timestamp; diff --git a/libs/loader.js b/libs/loader.js index 0252d88a..b1dd1ec2 100644 --- a/libs/loader.js +++ b/libs/loader.js @@ -301,8 +301,8 @@ loader.prototype._loadAnimates_sync = function () { this._setStartLoadTipText("正在加载动画文件..."); core.animates.forEach(function (t) { - core.http('GET', 'project/animates/' + t + ".animate?v=" + main.version, null, function (content) { - core.loader._loadAnimate(t, content); + core.http('GET', 'project/animates/' + t + ".animate?v=" + main.version, null, function (content) { + core.material.animates[t] = core.loader._loadAnimate(content); }, function (e) { main.log(e); core.material.animates[t] = null; @@ -316,14 +316,14 @@ loader.prototype._loadAnimates_async = function (onprogress, onfinished) { if (name.endsWith(".animate")) { var t = name.substring(0, name.length - 8); if (core.animates.indexOf(t) >= 0) - core.loader._loadAnimate(t, animates[name]); + core.material.animates[t] = core.loader._loadAnimate(animates[name]); } } onfinished(); }, null, true, onprogress); } -loader.prototype._loadAnimate = function (name, content) { +loader.prototype._loadAnimate = function (content) { try { content = JSON.parse(content); var data = {}; @@ -362,12 +362,12 @@ loader.prototype._loadAnimate = function (name, content) { }) }) data.frames.push(info); - }) - core.material.animates[name] = data; + }); + return data; } catch (e) { main.log(e); - core.material.animates[name] = null; + return null; } } diff --git a/libs/maps.js b/libs/maps.js index 1c778f8d..1ba632ef 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -2227,32 +2227,34 @@ maps.prototype.drawHeroAnimate = function (name, callback) { } ////// 绘制动画的某一帧 ////// -maps.prototype._drawAnimateFrame = function (animate, centerX, centerY, index) { - var frame = animate.frames[index]; +maps.prototype._drawAnimateFrame = function (name, animate, centerX, centerY, index) { + var ctx = core.getContextByName(name); + if (!ctx) return; + var frame = animate.frames[index % animate.frame]; var ratio = animate.ratio; frame.forEach(function (t) { var image = animate.images[t.index]; if (!image) return; var realWidth = image.width * ratio * t.zoom / 100; var realHeight = image.height * ratio * t.zoom / 100; - core.setAlpha('animate', t.opacity / 255); + core.setAlpha(ctx, t.opacity / 255); var cx = centerX + t.x, cy = centerY + t.y; if (!t.mirror && !t.angle) { - core.drawImage('animate', image, cx - realWidth / 2 - core.bigmap.offsetX, cy - realHeight / 2 - core.bigmap.offsetY, realWidth, realHeight); + core.drawImage(ctx, image, cx - realWidth / 2 - core.bigmap.offsetX, cy - realHeight / 2 - core.bigmap.offsetY, realWidth, realHeight); } else { - core.saveCanvas('animate'); - core.canvas.animate.translate(cx, cy); + core.saveCanvas(ctx); + ctx.translate(cx, cy); if (t.angle) - core.canvas.animate.rotate(-t.angle * Math.PI / 180); + ctx.rotate(-t.angle * Math.PI / 180); if (t.mirror) - core.canvas.animate.scale(-1, 1); - core.drawImage('animate', image, -realWidth / 2 - core.bigmap.offsetX, -realHeight / 2 - core.bigmap.offsetY, realWidth, realHeight); - core.loadCanvas('animate'); + ctx.scale(-1, 1); + core.drawImage(ctx, image, -realWidth / 2 - core.bigmap.offsetX, -realHeight / 2 - core.bigmap.offsetY, realWidth, realHeight); + core.loadCanvas(ctx); } - core.setAlpha('animate', 1); + core.setAlpha(ctx, 1); }) } From bede1ff66171c2fe83cdb17c23d5dbedaba7589c Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Wed, 3 Jun 2020 15:47:56 +0800 Subject: [PATCH 65/73] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E5=9D=97=E5=8F=8C=E5=87=BB&=E6=B7=BB=E5=8A=A0=E7=AC=AC?= =?UTF-8?q?=E4=B8=80=E4=B8=AAmenu=E4=BE=8B=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 3 + _server/editor_blockly.js | 254 +++++++++++++++++++------------------- 2 files changed, 133 insertions(+), 124 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 59164d3c..53427213 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -18,6 +18,8 @@ allBgms : ['EvalString_1'] allSounds : ['EvalString_1'] allShops : ['EvalString_1'] allFloorIds : ['EvalString_1'] +// 选择素材 +material : ["./project/animates/", "IdString_0"] */ @@ -1759,6 +1761,7 @@ helpUrl : https://h5mota.com/games/template/_docs/#/event?id=animate%EF%BC%9A%E6 default : ["zone","hero",false,false] allAnimates : ['IdString_0'] material : ["./project/animates/", "IdString_0"] +menu : [['选择位置','editor_blockly.selectPoint(block,["EvalString_0","EvalString_0"])']] colour : this.soundColor if (EvalString_0) { if(MotaActionFunctions.pattern.id2.test(EvalString_0)) { diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 8651b039..845318e0 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -230,138 +230,145 @@ editor_blockly = function () { return hasAsync; } - var previewBlock = function (b) { + editor_blockly.previewBlock = function (b,args) { - if (b && MotaActionBlocks[b.type].previewBlock) { - try { - // 特殊处理立绘 - if (b.type == 'textDrawing') { - var str = Blockly.JavaScript.blockToCode(b); - var list = str.substring(str.indexOf('[')+1, str.lastIndexOf(']')).split(","); - if (list.length == 3 || list.length == 5 || list.length >= 9) { - var arr = []; - var name = list[0]; - var obj = {"type": "drawImage"}; - if (name.endsWith(":o") || name.endsWith(":x") || name.endsWith(":y")) { - obj.reverse = name.substring(name.length-2); - name = name.substring(0, name.length - 2); - } - obj.image = name; - obj.x = parseFloat(list[1]); - obj.y = parseFloat(list[2]); - if (list.length >= 5) { - obj.w = parseFloat(list[3]); - obj.h = parseFloat(list[4]); - } - if (list.length >= 9) { - obj.x1 = parseFloat(list[5]); - obj.y1 = parseFloat(list[6]); - obj.w1 = parseFloat(list[7]); - obj.h1 = parseFloat(list[8]); - } - if (list.length >= 10) { - arr.push({"type": "setAttribute", "alpha": parseFloat(list[9])}); - } - if (list.length >= 11) { - obj.angle = parseFloat(list[10]); - } - arr.push(obj); - console.log(arr); - editor.uievent.previewUI(arr); + try { + // 特殊处理立绘 + if (b.type == 'textDrawing') { + var str = Blockly.JavaScript.blockToCode(b); + var list = str.substring(str.indexOf('[')+1, str.lastIndexOf(']')).split(","); + if (list.length == 3 || list.length == 5 || list.length >= 9) { + var arr = []; + var name = list[0]; + var obj = {"type": "drawImage"}; + if (name.endsWith(":o") || name.endsWith(":x") || name.endsWith(":y")) { + obj.reverse = name.substring(name.length-2); + name = name.substring(0, name.length - 2); } - return true; + obj.image = name; + obj.x = parseFloat(list[1]); + obj.y = parseFloat(list[2]); + if (list.length >= 5) { + obj.w = parseFloat(list[3]); + obj.h = parseFloat(list[4]); + } + if (list.length >= 9) { + obj.x1 = parseFloat(list[5]); + obj.y1 = parseFloat(list[6]); + obj.w1 = parseFloat(list[7]); + obj.h1 = parseFloat(list[8]); + } + if (list.length >= 10) { + arr.push({"type": "setAttribute", "alpha": parseFloat(list[9])}); + } + if (list.length >= 11) { + obj.angle = parseFloat(list[10]); + } + arr.push(obj); + console.log(arr); + editor.uievent.previewUI(arr); } + return true; + } - var code = "[" + Blockly.JavaScript.blockToCode(b).replace(/\\(i|c|d|e|z)/g, '\\\\$1') + "]"; - eval("var obj="+code); - if (obj.length == 0) return true; - obj = obj[0]; - switch (b.type) { - case 'waitContext_2': // 等待用户操作坐标预览 - editor.uievent.previewUI([{"type": "fillRect", "x": obj.px[0], "y": obj.py[0], - "width": "(" + obj.px[1] + ")-(" + obj.px[0] + ")", "height": "(" + obj.py[1] + ")-(" + obj.py[0] + ")", - "style": "rgba(255,0,0,0.5)"}]); - break; - case 'showImage_s': // 显示图片 - case 'showImage_1_s': - if (obj.sloc) { - editor.uievent.previewUI([ - {type: "setAttribute", alpha: obj.opacity}, - {type: "drawImage", image: obj.image, x: obj.sloc[0], y: obj.sloc[1], w: obj.sloc[2], h: obj.sloc[3], - x1: obj.loc[0], y1: obj.loc[1], w1: obj.loc[2], h1: obj.loc[3], reverse: obj.reverse} - ]); - } else { - editor.uievent.previewUI([ - {type: "setAttribute", alpha: obj.opacity}, - {type: "drawImage", image: obj.image, x: obj.loc[0], y: obj.loc[1], w: obj.loc[2], h: obj.loc[3], reverse: obj.reverse} - ]); - } - break; - case 'showGif_s': // 显示动图 - if (obj.name && obj.loc) { - editor.uievent.previewUI([{type: "drawImage", image: obj.name, x: obj.loc[0], y: obj.loc[1]}]); - } - break; - case 'setCurtain_0_s': // 更改色调 - if (obj.color) { - editor.uievent.previewUI([{type: "fillRect", x: 0, y: 0, width: core.__PIXELS__, height: core.__PIXELS__, style: obj.color}]); - } - break; - case 'floorOneImage': // 楼层贴图 - obj.w = obj.w / (obj.frame || 1); + var code = "[" + Blockly.JavaScript.blockToCode(b).replace(/\\(i|c|d|e|z)/g, '\\\\$1') + "]"; + eval("var obj="+code); + if (obj.length == 0) return true; + obj = obj[0]; + switch (b.type) { + case 'waitContext_2': // 等待用户操作坐标预览 + editor.uievent.previewUI([{"type": "fillRect", "x": obj.px[0], "y": obj.py[0], + "width": "(" + obj.px[1] + ")-(" + obj.px[0] + ")", "height": "(" + obj.py[1] + ")-(" + obj.py[0] + ")", + "style": "rgba(255,0,0,0.5)"}]); + break; + case 'showImage_s': // 显示图片 + case 'showImage_1_s': + if (obj.sloc) { editor.uievent.previewUI([ - {type: "drawImage", image: obj.name, x: obj.sx || 0, y: obj.sy || 0, w: obj.w, h: obj.h, - x1: obj.x, y1: obj.y, w1: obj.w, h1: obj.h, reverse: obj.reverse} + {type: "setAttribute", alpha: obj.opacity}, + {type: "drawImage", image: obj.image, x: obj.sloc[0], y: obj.sloc[1], w: obj.sloc[2], h: obj.sloc[3], + x1: obj.loc[0], y1: obj.loc[1], w1: obj.loc[2], h1: obj.loc[3], reverse: obj.reverse} + ]); + } else { + editor.uievent.previewUI([ + {type: "setAttribute", alpha: obj.opacity}, + {type: "drawImage", image: obj.image, x: obj.loc[0], y: obj.loc[1], w: obj.loc[2], h: obj.loc[3], reverse: obj.reverse} ]); - break; - case 'previewUI_s': // 预览 - editor.uievent.previewUI(obj.action); - break; - default: - if (b.type.startsWith(obj.type)) { - editor.uievent.previewUI([obj]); - } } - } catch (e) {main.log(e);} - return true; - } - return false; + break; + case 'showGif_s': // 显示动图 + if (obj.name && obj.loc) { + editor.uievent.previewUI([{type: "drawImage", image: obj.name, x: obj.loc[0], y: obj.loc[1]}]); + } + break; + case 'setCurtain_0_s': // 更改色调 + if (obj.color) { + editor.uievent.previewUI([{type: "fillRect", x: 0, y: 0, width: core.__PIXELS__, height: core.__PIXELS__, style: obj.color}]); + } + break; + case 'floorOneImage': // 楼层贴图 + obj.w = obj.w / (obj.frame || 1); + editor.uievent.previewUI([ + {type: "drawImage", image: obj.name, x: obj.sx || 0, y: obj.sy || 0, w: obj.w, h: obj.h, + x1: obj.x, y1: obj.y, w1: obj.w, h1: obj.h, reverse: obj.reverse} + ]); + break; + case 'previewUI_s': // 预览 + editor.uievent.previewUI(obj.action); + break; + default: + if (b.type.startsWith(obj.type)) { + editor.uievent.previewUI([obj]); + } + } + } catch (e) {main.log(e);} + + } + + editor_blockly.selectMaterial = function(b,material){ + editor.uievent.selectMaterial([b.getFieldValue(material[1])], '请选择素材', material[0], function (one) { + if (b.type == 'animate_s') { + return /^[-A-Za-z0-9_.]+\.animate$/.test(one) ? one.substring(0, one.length - 8) : null; + } + return /^[-A-Za-z0-9_.]+$/.test(one) ? one : null; + }, function (value) { + if (value instanceof Array && value.length > 0) { + b.setFieldValue(value[0], material[1]); + } + }); + } + + editor_blockly.doubleclicktext = function(b,f){ + var value = b.getFieldValue(f); + //多行编辑 + editor_multi.multiLineEdit(value, b, f, {'lint': f === 'RawEvalString_0'}, function (newvalue, b, f) { + if (MotaActionBlocks[b.type].doubleclicktext !== 'RawEvalString_0') { + } + b.setFieldValue(newvalue.split('\n').join('\\n'), f); + }); } editor_blockly.doubleClickBlock = function (blockId) { var b = editor_blockly.workspace.getBlockById(blockId); - if (previewBlock(b)) return; + if (b && MotaActionBlocks[b.type].previewBlock){ + editor_blockly.previewBlock(b,MotaActionBlocks[b.type].previewBlock) + return; + } if (b && MotaActionBlocks[b.type].selectPoint) { // selectPoint - this.selectPoint(); + editor_blockly.selectPoint(b,eval(MotaActionBlocks[b.type].selectPoint)); return; } if (b && MotaActionBlocks[b.type].material) { - var material = JSON.parse(MotaActionBlocks[b.type].material); - editor.uievent.selectMaterial([b.getFieldValue(material[1])], '请选择素材', material[0], function (one) { - if (b.type == 'animate_s') { - return /^[-A-Za-z0-9_.]+\.animate$/.test(one) ? one.substring(0, one.length - 8) : null; - } - return /^[-A-Za-z0-9_.]+$/.test(one) ? one : null; - }, function (value) { - if (value instanceof Array && value.length > 0) { - b.setFieldValue(value[0], material[1]); - } - }); + editor_blockly.selectMaterial(b,JSON.parse(MotaActionBlocks[b.type].material)); return; } - var f = b ? MotaActionBlocks[b.type].doubleclicktext : null; - if (f) { - var value = b.getFieldValue(f); - //多行编辑 - editor_multi.multiLineEdit(value, b, f, {'lint': f === 'RawEvalString_0'}, function (newvalue, b, f) { - if (MotaActionBlocks[b.type].doubleclicktext !== 'RawEvalString_0') { - } - b.setFieldValue(newvalue.split('\n').join('\\n'), f); - }); + if (b && MotaActionBlocks[b.type].doubleclicktext) { //多行编辑 + editor_blockly.doubleclicktext(b,MotaActionBlocks[b.type].doubleclicktext); + return; } } @@ -445,27 +452,26 @@ editor_blockly = function () { // ------ select point ------ - editor_blockly.selectPoint = function () { - var block = Blockly.selected, arr = null; + editor_blockly.selectPoint = function (block,arr) { + var floorId = editor.currentFloorId, pos = editor.pos, x = pos.x, y = pos.y; - if (block != null && MotaActionBlocks[block.type].selectPoint) { - arr = eval(MotaActionBlocks[block.type].selectPoint); - var xv = parseInt(block.getFieldValue(arr[0])), yv = parseInt(block.getFieldValue(arr[1])); - if (block.type == 'animate_s') { - var v = block.getFieldValue(arr[0]).split(","); - xv = parseInt(v[0]); yv = parseInt(v[1]); - } - if (!isNaN(xv)) x = xv; - if (!isNaN(yv)) y = yv; - if (arr[2] != null) floorId = block.getFieldValue(arr[2]) || floorId; + + var xv = parseInt(block.getFieldValue(arr[0])), yv = parseInt(block.getFieldValue(arr[1])); + if (arr[0] === arr[1]) { + var v = block.getFieldValue(arr[0]).split(","); + xv = parseInt(v[0]); yv = parseInt(v[1]); } + if (!isNaN(xv)) x = xv; + if (!isNaN(yv)) y = yv; + if (arr[2] != null) floorId = block.getFieldValue(arr[2]) || floorId; + editor.uievent.selectPoint(floorId, x, y, false, function (fv, xv, yv) { if (!arr) return; if (arr[2] != null) { if (fv != editor.currentFloorId) block.setFieldValue(fv, arr[2]); else block.setFieldValue(arr[3] ? fv : "", arr[2]); } - if (block.type == 'animate_s') { + if (arr[0] === arr[1]) { block.setFieldValue(xv+","+yv, arr[0]); } else { From f8dd9159feab8284fdc50e4967d0b4924bb2d78d Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Wed, 3 Jun 2020 15:58:24 +0800 Subject: [PATCH 66/73] change fixed list to EnemyId_List --- _server/editor_blockly.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 845318e0..1de9ddf7 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -538,7 +538,7 @@ editor_blockly = function () { if (index2 >= 0) { before = content.substring(0, index2); if (before.endsWith("怪物") || (ch == ':' && ch2 == ':' && before.endsWith("enemy"))) { - var list = ["name", "hp", "atk", "def", "money", "exp", "point", "special"]; + var list = MotaActionBlocks['EnemyId_List'].options.map(function(v){return v[1]}); if (before.endsWith("怪物") && MotaActionFunctions) { list = MotaActionFunctions.pattern.replaceEnemyValueList.map(function (v) { return v[1]; From ce0deb4877c5937f867c18016779fd87242f32ae Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Wed, 3 Jun 2020 16:22:41 +0800 Subject: [PATCH 67/73] jump_s --- _server/MotaAction.g4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 53427213..c8af090c 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -2052,9 +2052,9 @@ tooltip : jump: 让某个NPC/怪物跳跃 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=jump%EF%BC%9A%E8%AE%A9%E6%9F%90%E4%B8%AANPC%2F%E6%80%AA%E7%89%A9%E8%B7%B3%E8%B7%83 default : ["","","","",500,true,false] selectPoint : ["PosString_2", "PosString_3"] +menu : [['选择起点位置','editor_blockly.selectPoint(block,["PosString_0", "PosString_1"])']] colour : this.mapColor -// selectPoint 跳跃暂时只考虑终点 var floorstr = ''; if (PosString_0 && PosString_1) { floorstr += ', "from": ['+PosString_0+','+PosString_1+']'; From bb1e8060bd16adf68a5c70c195a7d40fdd65208b Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Wed, 3 Jun 2020 19:46:01 +0800 Subject: [PATCH 68/73] Optimize jshint.min.js --- _server/CodeMirror/jshint.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_server/CodeMirror/jshint.min.js b/_server/CodeMirror/jshint.min.js index 57dde158..edd851ba 100644 --- a/_server/CodeMirror/jshint.min.js +++ b/_server/CodeMirror/jshint.min.js @@ -1 +1 @@ -var JSHINT;"undefined"==typeof window&&(window={}),function(){var e;e=function t(n,r,i){function o(a,u){if(!r[a]){if(!n[a]){var c="function"==typeof e&&e;if(!u&&c)return c(a,!0);if(s)return s(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var f=r[a]={exports:{}};n[a][0].call(f.exports,function(e){var t=n[a][1][e];return o(t||e)},f,f.exports,t,n,r,i)}return r[a].exports}for(var s="function"==typeof e&&e,a=0;a=65&&i<=90||95===i||i>=97&&i<=122;for(var o=[],i=0;i<128;i++)o[i]=r[i]||i>=48&&i<=57;t.exports={asciiIdentifierStartTable:r,asciiIdentifierPartTable:o}},{}],2:[function(e,t,n){var r="768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,1155,1156,1157,1158,1159,1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1471,1473,1474,1476,1477,1479,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1648,1750,1751,1752,1753,1754,1755,1756,1759,1760,1761,1762,1763,1764,1767,1768,1770,1771,1772,1773,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1809,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,2027,2028,2029,2030,2031,2032,2033,2034,2035,2070,2071,2072,2073,2075,2076,2077,2078,2079,2080,2081,2082,2083,2085,2086,2087,2089,2090,2091,2092,2093,2137,2138,2139,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2304,2305,2306,2307,2362,2363,2364,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2385,2386,2387,2388,2389,2390,2391,2402,2403,2406,2407,2408,2409,2410,2411,2412,2413,2414,2415,2433,2434,2435,2492,2494,2495,2496,2497,2498,2499,2500,2503,2504,2507,2508,2509,2519,2530,2531,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2561,2562,2563,2620,2622,2623,2624,2625,2626,2631,2632,2635,2636,2637,2641,2662,2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2677,2689,2690,2691,2748,2750,2751,2752,2753,2754,2755,2756,2757,2759,2760,2761,2763,2764,2765,2786,2787,2790,2791,2792,2793,2794,2795,2796,2797,2798,2799,2817,2818,2819,2876,2878,2879,2880,2881,2882,2883,2884,2887,2888,2891,2892,2893,2902,2903,2914,2915,2918,2919,2920,2921,2922,2923,2924,2925,2926,2927,2946,3006,3007,3008,3009,3010,3014,3015,3016,3018,3019,3020,3021,3031,3046,3047,3048,3049,3050,3051,3052,3053,3054,3055,3073,3074,3075,3134,3135,3136,3137,3138,3139,3140,3142,3143,3144,3146,3147,3148,3149,3157,3158,3170,3171,3174,3175,3176,3177,3178,3179,3180,3181,3182,3183,3202,3203,3260,3262,3263,3264,3265,3266,3267,3268,3270,3271,3272,3274,3275,3276,3277,3285,3286,3298,3299,3302,3303,3304,3305,3306,3307,3308,3309,3310,3311,3330,3331,3390,3391,3392,3393,3394,3395,3396,3398,3399,3400,3402,3403,3404,3405,3415,3426,3427,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439,3458,3459,3530,3535,3536,3537,3538,3539,3540,3542,3544,3545,3546,3547,3548,3549,3550,3551,3570,3571,3633,3636,3637,3638,3639,3640,3641,3642,3655,3656,3657,3658,3659,3660,3661,3662,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3761,3764,3765,3766,3767,3768,3769,3771,3772,3784,3785,3786,3787,3788,3789,3792,3793,3794,3795,3796,3797,3798,3799,3800,3801,3864,3865,3872,3873,3874,3875,3876,3877,3878,3879,3880,3881,3893,3895,3897,3902,3903,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964,3965,3966,3967,3968,3969,3970,3971,3972,3974,3975,3981,3982,3983,3984,3985,3986,3987,3988,3989,3990,3991,3993,3994,3995,3996,3997,3998,3999,4000,4001,4002,4003,4004,4005,4006,4007,4008,4009,4010,4011,4012,4013,4014,4015,4016,4017,4018,4019,4020,4021,4022,4023,4024,4025,4026,4027,4028,4038,4139,4140,4141,4142,4143,4144,4145,4146,4147,4148,4149,4150,4151,4152,4153,4154,4155,4156,4157,4158,4160,4161,4162,4163,4164,4165,4166,4167,4168,4169,4182,4183,4184,4185,4190,4191,4192,4194,4195,4196,4199,4200,4201,4202,4203,4204,4205,4209,4210,4211,4212,4226,4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4239,4240,4241,4242,4243,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4957,4958,4959,5906,5907,5908,5938,5939,5940,5970,5971,6002,6003,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6109,6112,6113,6114,6115,6116,6117,6118,6119,6120,6121,6155,6156,6157,6160,6161,6162,6163,6164,6165,6166,6167,6168,6169,6313,6432,6433,6434,6435,6436,6437,6438,6439,6440,6441,6442,6443,6448,6449,6450,6451,6452,6453,6454,6455,6456,6457,6458,6459,6470,6471,6472,6473,6474,6475,6476,6477,6478,6479,6576,6577,6578,6579,6580,6581,6582,6583,6584,6585,6586,6587,6588,6589,6590,6591,6592,6600,6601,6608,6609,6610,6611,6612,6613,6614,6615,6616,6617,6679,6680,6681,6682,6683,6741,6742,6743,6744,6745,6746,6747,6748,6749,6750,6752,6753,6754,6755,6756,6757,6758,6759,6760,6761,6762,6763,6764,6765,6766,6767,6768,6769,6770,6771,6772,6773,6774,6775,6776,6777,6778,6779,6780,6783,6784,6785,6786,6787,6788,6789,6790,6791,6792,6793,6800,6801,6802,6803,6804,6805,6806,6807,6808,6809,6912,6913,6914,6915,6916,6964,6965,6966,6967,6968,6969,6970,6971,6972,6973,6974,6975,6976,6977,6978,6979,6980,6992,6993,6994,6995,6996,6997,6998,6999,7000,7001,7019,7020,7021,7022,7023,7024,7025,7026,7027,7040,7041,7042,7073,7074,7075,7076,7077,7078,7079,7080,7081,7082,7083,7084,7085,7088,7089,7090,7091,7092,7093,7094,7095,7096,7097,7142,7143,7144,7145,7146,7147,7148,7149,7150,7151,7152,7153,7154,7155,7204,7205,7206,7207,7208,7209,7210,7211,7212,7213,7214,7215,7216,7217,7218,7219,7220,7221,7222,7223,7232,7233,7234,7235,7236,7237,7238,7239,7240,7241,7248,7249,7250,7251,7252,7253,7254,7255,7256,7257,7376,7377,7378,7380,7381,7382,7383,7384,7385,7386,7387,7388,7389,7390,7391,7392,7393,7394,7395,7396,7397,7398,7399,7400,7405,7410,7411,7412,7616,7617,7618,7619,7620,7621,7622,7623,7624,7625,7626,7627,7628,7629,7630,7631,7632,7633,7634,7635,7636,7637,7638,7639,7640,7641,7642,7643,7644,7645,7646,7647,7648,7649,7650,7651,7652,7653,7654,7676,7677,7678,7679,8204,8205,8255,8256,8276,8400,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,8411,8412,8417,8421,8422,8423,8424,8425,8426,8427,8428,8429,8430,8431,8432,11503,11504,11505,11647,11744,11745,11746,11747,11748,11749,11750,11751,11752,11753,11754,11755,11756,11757,11758,11759,11760,11761,11762,11763,11764,11765,11766,11767,11768,11769,11770,11771,11772,11773,11774,11775,12330,12331,12332,12333,12334,12335,12441,12442,42528,42529,42530,42531,42532,42533,42534,42535,42536,42537,42607,42612,42613,42614,42615,42616,42617,42618,42619,42620,42621,42655,42736,42737,43010,43014,43019,43043,43044,43045,43046,43047,43136,43137,43188,43189,43190,43191,43192,43193,43194,43195,43196,43197,43198,43199,43200,43201,43202,43203,43204,43216,43217,43218,43219,43220,43221,43222,43223,43224,43225,43232,43233,43234,43235,43236,43237,43238,43239,43240,43241,43242,43243,43244,43245,43246,43247,43248,43249,43264,43265,43266,43267,43268,43269,43270,43271,43272,43273,43302,43303,43304,43305,43306,43307,43308,43309,43335,43336,43337,43338,43339,43340,43341,43342,43343,43344,43345,43346,43347,43392,43393,43394,43395,43443,43444,43445,43446,43447,43448,43449,43450,43451,43452,43453,43454,43455,43456,43472,43473,43474,43475,43476,43477,43478,43479,43480,43481,43561,43562,43563,43564,43565,43566,43567,43568,43569,43570,43571,43572,43573,43574,43587,43596,43597,43600,43601,43602,43603,43604,43605,43606,43607,43608,43609,43643,43696,43698,43699,43700,43703,43704,43710,43711,43713,43755,43756,43757,43758,43759,43765,43766,44003,44004,44005,44006,44007,44008,44009,44010,44012,44013,44016,44017,44018,44019,44020,44021,44022,44023,44024,44025,64286,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65056,65057,65058,65059,65060,65061,65062,65075,65076,65101,65102,65103,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,65343".split(",").map(function(e){return parseInt(e,10)});t.exports=r},{}],3:[function(e,t,n){var r="170,181,186,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,710,711,712,713,714,715,716,717,718,719,720,721,736,737,738,739,740,748,750,880,881,882,883,884,886,887,890,891,892,893,902,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1369,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1520,1521,1522,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1646,1647,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1749,1765,1766,1774,1775,1786,1787,1788,1791,1808,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1969,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2036,2037,2042,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2074,2084,2088,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2208,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,2308,2309,2310,2311,2312,2313,2314,2315,2316,2317,2318,2319,2320,2321,2322,2323,2324,2325,2326,2327,2328,2329,2330,2331,2332,2333,2334,2335,2336,2337,2338,2339,2340,2341,2342,2343,2344,2345,2346,2347,2348,2349,2350,2351,2352,2353,2354,2355,2356,2357,2358,2359,2360,2361,2365,2384,2392,2393,2394,2395,2396,2397,2398,2399,2400,2401,2417,2418,2419,2420,2421,2422,2423,2425,2426,2427,2428,2429,2430,2431,2437,2438,2439,2440,2441,2442,2443,2444,2447,2448,2451,2452,2453,2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2474,2475,2476,2477,2478,2479,2480,2482,2486,2487,2488,2489,2493,2510,2524,2525,2527,2528,2529,2544,2545,2565,2566,2567,2568,2569,2570,2575,2576,2579,2580,2581,2582,2583,2584,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2602,2603,2604,2605,2606,2607,2608,2610,2611,2613,2614,2616,2617,2649,2650,2651,2652,2654,2674,2675,2676,2693,2694,2695,2696,2697,2698,2699,2700,2701,2703,2704,2705,2707,2708,2709,2710,2711,2712,2713,2714,2715,2716,2717,2718,2719,2720,2721,2722,2723,2724,2725,2726,2727,2728,2730,2731,2732,2733,2734,2735,2736,2738,2739,2741,2742,2743,2744,2745,2749,2768,2784,2785,2821,2822,2823,2824,2825,2826,2827,2828,2831,2832,2835,2836,2837,2838,2839,2840,2841,2842,2843,2844,2845,2846,2847,2848,2849,2850,2851,2852,2853,2854,2855,2856,2858,2859,2860,2861,2862,2863,2864,2866,2867,2869,2870,2871,2872,2873,2877,2908,2909,2911,2912,2913,2929,2947,2949,2950,2951,2952,2953,2954,2958,2959,2960,2962,2963,2964,2965,2969,2970,2972,2974,2975,2979,2980,2984,2985,2986,2990,2991,2992,2993,2994,2995,2996,2997,2998,2999,3000,3001,3024,3077,3078,3079,3080,3081,3082,3083,3084,3086,3087,3088,3090,3091,3092,3093,3094,3095,3096,3097,3098,3099,3100,3101,3102,3103,3104,3105,3106,3107,3108,3109,3110,3111,3112,3114,3115,3116,3117,3118,3119,3120,3121,3122,3123,3125,3126,3127,3128,3129,3133,3160,3161,3168,3169,3205,3206,3207,3208,3209,3210,3211,3212,3214,3215,3216,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3242,3243,3244,3245,3246,3247,3248,3249,3250,3251,3253,3254,3255,3256,3257,3261,3294,3296,3297,3313,3314,3333,3334,3335,3336,3337,3338,3339,3340,3342,3343,3344,3346,3347,3348,3349,3350,3351,3352,3353,3354,3355,3356,3357,3358,3359,3360,3361,3362,3363,3364,3365,3366,3367,3368,3369,3370,3371,3372,3373,3374,3375,3376,3377,3378,3379,3380,3381,3382,3383,3384,3385,3386,3389,3406,3424,3425,3450,3451,3452,3453,3454,3455,3461,3462,3463,3464,3465,3466,3467,3468,3469,3470,3471,3472,3473,3474,3475,3476,3477,3478,3482,3483,3484,3485,3486,3487,3488,3489,3490,3491,3492,3493,3494,3495,3496,3497,3498,3499,3500,3501,3502,3503,3504,3505,3507,3508,3509,3510,3511,3512,3513,3514,3515,3517,3520,3521,3522,3523,3524,3525,3526,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3634,3635,3648,3649,3650,3651,3652,3653,3654,3713,3714,3716,3719,3720,3722,3725,3732,3733,3734,3735,3737,3738,3739,3740,3741,3742,3743,3745,3746,3747,3749,3751,3754,3755,3757,3758,3759,3760,3762,3763,3773,3776,3777,3778,3779,3780,3782,3804,3805,3806,3807,3840,3904,3905,3906,3907,3908,3909,3910,3911,3913,3914,3915,3916,3917,3918,3919,3920,3921,3922,3923,3924,3925,3926,3927,3928,3929,3930,3931,3932,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942,3943,3944,3945,3946,3947,3948,3976,3977,3978,3979,3980,4096,4097,4098,4099,4100,4101,4102,4103,4104,4105,4106,4107,4108,4109,4110,4111,4112,4113,4114,4115,4116,4117,4118,4119,4120,4121,4122,4123,4124,4125,4126,4127,4128,4129,4130,4131,4132,4133,4134,4135,4136,4137,4138,4159,4176,4177,4178,4179,4180,4181,4186,4187,4188,4189,4193,4197,4198,4206,4207,4208,4213,4214,4215,4216,4217,4218,4219,4220,4221,4222,4223,4224,4225,4238,4256,4257,4258,4259,4260,4261,4262,4263,4264,4265,4266,4267,4268,4269,4270,4271,4272,4273,4274,4275,4276,4277,4278,4279,4280,4281,4282,4283,4284,4285,4286,4287,4288,4289,4290,4291,4292,4293,4295,4301,4304,4305,4306,4307,4308,4309,4310,4311,4312,4313,4314,4315,4316,4317,4318,4319,4320,4321,4322,4323,4324,4325,4326,4327,4328,4329,4330,4331,4332,4333,4334,4335,4336,4337,4338,4339,4340,4341,4342,4343,4344,4345,4346,4348,4349,4350,4351,4352,4353,4354,4355,4356,4357,4358,4359,4360,4361,4362,4363,4364,4365,4366,4367,4368,4369,4370,4371,4372,4373,4374,4375,4376,4377,4378,4379,4380,4381,4382,4383,4384,4385,4386,4387,4388,4389,4390,4391,4392,4393,4394,4395,4396,4397,4398,4399,4400,4401,4402,4403,4404,4405,4406,4407,4408,4409,4410,4411,4412,4413,4414,4415,4416,4417,4418,4419,4420,4421,4422,4423,4424,4425,4426,4427,4428,4429,4430,4431,4432,4433,4434,4435,4436,4437,4438,4439,4440,4441,4442,4443,4444,4445,4446,4447,4448,4449,4450,4451,4452,4453,4454,4455,4456,4457,4458,4459,4460,4461,4462,4463,4464,4465,4466,4467,4468,4469,4470,4471,4472,4473,4474,4475,4476,4477,4478,4479,4480,4481,4482,4483,4484,4485,4486,4487,4488,4489,4490,4491,4492,4493,4494,4495,4496,4497,4498,4499,4500,4501,4502,4503,4504,4505,4506,4507,4508,4509,4510,4511,4512,4513,4514,4515,4516,4517,4518,4519,4520,4521,4522,4523,4524,4525,4526,4527,4528,4529,4530,4531,4532,4533,4534,4535,4536,4537,4538,4539,4540,4541,4542,4543,4544,4545,4546,4547,4548,4549,4550,4551,4552,4553,4554,4555,4556,4557,4558,4559,4560,4561,4562,4563,4564,4565,4566,4567,4568,4569,4570,4571,4572,4573,4574,4575,4576,4577,4578,4579,4580,4581,4582,4583,4584,4585,4586,4587,4588,4589,4590,4591,4592,4593,4594,4595,4596,4597,4598,4599,4600,4601,4602,4603,4604,4605,4606,4607,4608,4609,4610,4611,4612,4613,4614,4615,4616,4617,4618,4619,4620,4621,4622,4623,4624,4625,4626,4627,4628,4629,4630,4631,4632,4633,4634,4635,4636,4637,4638,4639,4640,4641,4642,4643,4644,4645,4646,4647,4648,4649,4650,4651,4652,4653,4654,4655,4656,4657,4658,4659,4660,4661,4662,4663,4664,4665,4666,4667,4668,4669,4670,4671,4672,4673,4674,4675,4676,4677,4678,4679,4680,4682,4683,4684,4685,4688,4689,4690,4691,4692,4693,4694,4696,4698,4699,4700,4701,4704,4705,4706,4707,4708,4709,4710,4711,4712,4713,4714,4715,4716,4717,4718,4719,4720,4721,4722,4723,4724,4725,4726,4727,4728,4729,4730,4731,4732,4733,4734,4735,4736,4737,4738,4739,4740,4741,4742,4743,4744,4746,4747,4748,4749,4752,4753,4754,4755,4756,4757,4758,4759,4760,4761,4762,4763,4764,4765,4766,4767,4768,4769,4770,4771,4772,4773,4774,4775,4776,4777,4778,4779,4780,4781,4782,4783,4784,4786,4787,4788,4789,4792,4793,4794,4795,4796,4797,4798,4800,4802,4803,4804,4805,4808,4809,4810,4811,4812,4813,4814,4815,4816,4817,4818,4819,4820,4821,4822,4824,4825,4826,4827,4828,4829,4830,4831,4832,4833,4834,4835,4836,4837,4838,4839,4840,4841,4842,4843,4844,4845,4846,4847,4848,4849,4850,4851,4852,4853,4854,4855,4856,4857,4858,4859,4860,4861,4862,4863,4864,4865,4866,4867,4868,4869,4870,4871,4872,4873,4874,4875,4876,4877,4878,4879,4880,4882,4883,4884,4885,4888,4889,4890,4891,4892,4893,4894,4895,4896,4897,4898,4899,4900,4901,4902,4903,4904,4905,4906,4907,4908,4909,4910,4911,4912,4913,4914,4915,4916,4917,4918,4919,4920,4921,4922,4923,4924,4925,4926,4927,4928,4929,4930,4931,4932,4933,4934,4935,4936,4937,4938,4939,4940,4941,4942,4943,4944,4945,4946,4947,4948,4949,4950,4951,4952,4953,4954,4992,4993,4994,4995,4996,4997,4998,4999,5000,5001,5002,5003,5004,5005,5006,5007,5024,5025,5026,5027,5028,5029,5030,5031,5032,5033,5034,5035,5036,5037,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5053,5054,5055,5056,5057,5058,5059,5060,5061,5062,5063,5064,5065,5066,5067,5068,5069,5070,5071,5072,5073,5074,5075,5076,5077,5078,5079,5080,5081,5082,5083,5084,5085,5086,5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102,5103,5104,5105,5106,5107,5108,5121,5122,5123,5124,5125,5126,5127,5128,5129,5130,5131,5132,5133,5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149,5150,5151,5152,5153,5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164,5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,5176,5177,5178,5179,5180,5181,5182,5183,5184,5185,5186,5187,5188,5189,5190,5191,5192,5193,5194,5195,5196,5197,5198,5199,5200,5201,5202,5203,5204,5205,5206,5207,5208,5209,5210,5211,5212,5213,5214,5215,5216,5217,5218,5219,5220,5221,5222,5223,5224,5225,5226,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,5237,5238,5239,5240,5241,5242,5243,5244,5245,5246,5247,5248,5249,5250,5251,5252,5253,5254,5255,5256,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267,5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283,5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299,5300,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315,5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331,5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5347,5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363,5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379,5380,5381,5382,5383,5384,5385,5386,5387,5388,5389,5390,5391,5392,5393,5394,5395,5396,5397,5398,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408,5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5421,5422,5423,5424,5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440,5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456,5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472,5473,5474,5475,5476,5477,5478,5479,5480,5481,5482,5483,5484,5485,5486,5487,5488,5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520,5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536,5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,5549,5550,5551,5552,5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568,5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584,5585,5586,5587,5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600,5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632,5633,5634,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648,5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664,5665,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,5677,5678,5679,5680,5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696,5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712,5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728,5729,5730,5731,5732,5733,5734,5735,5736,5737,5738,5739,5740,5743,5744,5745,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5761,5762,5763,5764,5765,5766,5767,5768,5769,5770,5771,5772,5773,5774,5775,5776,5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5792,5793,5794,5795,5796,5797,5798,5799,5800,5801,5802,5803,5804,5805,5806,5807,5808,5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824,5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856,5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5870,5871,5872,5888,5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5902,5903,5904,5905,5920,5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936,5937,5952,5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968,5969,5984,5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5998,5999,6000,6016,6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032,6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6065,6066,6067,6103,6108,6176,6177,6178,6179,6180,6181,6182,6183,6184,6185,6186,6187,6188,6189,6190,6191,6192,6193,6194,6195,6196,6197,6198,6199,6200,6201,6202,6203,6204,6205,6206,6207,6208,6209,6210,6211,6212,6213,6214,6215,6216,6217,6218,6219,6220,6221,6222,6223,6224,6225,6226,6227,6228,6229,6230,6231,6232,6233,6234,6235,6236,6237,6238,6239,6240,6241,6242,6243,6244,6245,6246,6247,6248,6249,6250,6251,6252,6253,6254,6255,6256,6257,6258,6259,6260,6261,6262,6263,6272,6273,6274,6275,6276,6277,6278,6279,6280,6281,6282,6283,6284,6285,6286,6287,6288,6289,6290,6291,6292,6293,6294,6295,6296,6297,6298,6299,6300,6301,6302,6303,6304,6305,6306,6307,6308,6309,6310,6311,6312,6314,6320,6321,6322,6323,6324,6325,6326,6327,6328,6329,6330,6331,6332,6333,6334,6335,6336,6337,6338,6339,6340,6341,6342,6343,6344,6345,6346,6347,6348,6349,6350,6351,6352,6353,6354,6355,6356,6357,6358,6359,6360,6361,6362,6363,6364,6365,6366,6367,6368,6369,6370,6371,6372,6373,6374,6375,6376,6377,6378,6379,6380,6381,6382,6383,6384,6385,6386,6387,6388,6389,6400,6401,6402,6403,6404,6405,6406,6407,6408,6409,6410,6411,6412,6413,6414,6415,6416,6417,6418,6419,6420,6421,6422,6423,6424,6425,6426,6427,6428,6480,6481,6482,6483,6484,6485,6486,6487,6488,6489,6490,6491,6492,6493,6494,6495,6496,6497,6498,6499,6500,6501,6502,6503,6504,6505,6506,6507,6508,6509,6512,6513,6514,6515,6516,6528,6529,6530,6531,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6544,6545,6546,6547,6548,6549,6550,6551,6552,6553,6554,6555,6556,6557,6558,6559,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,6570,6571,6593,6594,6595,6596,6597,6598,6599,6656,6657,6658,6659,6660,6661,6662,6663,6664,6665,6666,6667,6668,6669,6670,6671,6672,6673,6674,6675,6676,6677,6678,6688,6689,6690,6691,6692,6693,6694,6695,6696,6697,6698,6699,6700,6701,6702,6703,6704,6705,6706,6707,6708,6709,6710,6711,6712,6713,6714,6715,6716,6717,6718,6719,6720,6721,6722,6723,6724,6725,6726,6727,6728,6729,6730,6731,6732,6733,6734,6735,6736,6737,6738,6739,6740,6823,6917,6918,6919,6920,6921,6922,6923,6924,6925,6926,6927,6928,6929,6930,6931,6932,6933,6934,6935,6936,6937,6938,6939,6940,6941,6942,6943,6944,6945,6946,6947,6948,6949,6950,6951,6952,6953,6954,6955,6956,6957,6958,6959,6960,6961,6962,6963,6981,6982,6983,6984,6985,6986,6987,7043,7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7055,7056,7057,7058,7059,7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,7071,7072,7086,7087,7098,7099,7100,7101,7102,7103,7104,7105,7106,7107,7108,7109,7110,7111,7112,7113,7114,7115,7116,7117,7118,7119,7120,7121,7122,7123,7124,7125,7126,7127,7128,7129,7130,7131,7132,7133,7134,7135,7136,7137,7138,7139,7140,7141,7168,7169,7170,7171,7172,7173,7174,7175,7176,7177,7178,7179,7180,7181,7182,7183,7184,7185,7186,7187,7188,7189,7190,7191,7192,7193,7194,7195,7196,7197,7198,7199,7200,7201,7202,7203,7245,7246,7247,7258,7259,7260,7261,7262,7263,7264,7265,7266,7267,7268,7269,7270,7271,7272,7273,7274,7275,7276,7277,7278,7279,7280,7281,7282,7283,7284,7285,7286,7287,7288,7289,7290,7291,7292,7293,7401,7402,7403,7404,7406,7407,7408,7409,7413,7414,7424,7425,7426,7427,7428,7429,7430,7431,7432,7433,7434,7435,7436,7437,7438,7439,7440,7441,7442,7443,7444,7445,7446,7447,7448,7449,7450,7451,7452,7453,7454,7455,7456,7457,7458,7459,7460,7461,7462,7463,7464,7465,7466,7467,7468,7469,7470,7471,7472,7473,7474,7475,7476,7477,7478,7479,7480,7481,7482,7483,7484,7485,7486,7487,7488,7489,7490,7491,7492,7493,7494,7495,7496,7497,7498,7499,7500,7501,7502,7503,7504,7505,7506,7507,7508,7509,7510,7511,7512,7513,7514,7515,7516,7517,7518,7519,7520,7521,7522,7523,7524,7525,7526,7527,7528,7529,7530,7531,7532,7533,7534,7535,7536,7537,7538,7539,7540,7541,7542,7543,7544,7545,7546,7547,7548,7549,7550,7551,7552,7553,7554,7555,7556,7557,7558,7559,7560,7561,7562,7563,7564,7565,7566,7567,7568,7569,7570,7571,7572,7573,7574,7575,7576,7577,7578,7579,7580,7581,7582,7583,7584,7585,7586,7587,7588,7589,7590,7591,7592,7593,7594,7595,7596,7597,7598,7599,7600,7601,7602,7603,7604,7605,7606,7607,7608,7609,7610,7611,7612,7613,7614,7615,7680,7681,7682,7683,7684,7685,7686,7687,7688,7689,7690,7691,7692,7693,7694,7695,7696,7697,7698,7699,7700,7701,7702,7703,7704,7705,7706,7707,7708,7709,7710,7711,7712,7713,7714,7715,7716,7717,7718,7719,7720,7721,7722,7723,7724,7725,7726,7727,7728,7729,7730,7731,7732,7733,7734,7735,7736,7737,7738,7739,7740,7741,7742,7743,7744,7745,7746,7747,7748,7749,7750,7751,7752,7753,7754,7755,7756,7757,7758,7759,7760,7761,7762,7763,7764,7765,7766,7767,7768,7769,7770,7771,7772,7773,7774,7775,7776,7777,7778,7779,7780,7781,7782,7783,7784,7785,7786,7787,7788,7789,7790,7791,7792,7793,7794,7795,7796,7797,7798,7799,7800,7801,7802,7803,7804,7805,7806,7807,7808,7809,7810,7811,7812,7813,7814,7815,7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,7826,7827,7828,7829,7830,7831,7832,7833,7834,7835,7836,7837,7838,7839,7840,7841,7842,7843,7844,7845,7846,7847,7848,7849,7850,7851,7852,7853,7854,7855,7856,7857,7858,7859,7860,7861,7862,7863,7864,7865,7866,7867,7868,7869,7870,7871,7872,7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886,7887,7888,7889,7890,7891,7892,7893,7894,7895,7896,7897,7898,7899,7900,7901,7902,7903,7904,7905,7906,7907,7908,7909,7910,7911,7912,7913,7914,7915,7916,7917,7918,7919,7920,7921,7922,7923,7924,7925,7926,7927,7928,7929,7930,7931,7932,7933,7934,7935,7936,7937,7938,7939,7940,7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7951,7952,7953,7954,7955,7956,7957,7960,7961,7962,7963,7964,7965,7968,7969,7970,7971,7972,7973,7974,7975,7976,7977,7978,7979,7980,7981,7982,7983,7984,7985,7986,7987,7988,7989,7990,7991,7992,7993,7994,7995,7996,7997,7998,7999,8000,8001,8002,8003,8004,8005,8008,8009,8010,8011,8012,8013,8016,8017,8018,8019,8020,8021,8022,8023,8025,8027,8029,8031,8032,8033,8034,8035,8036,8037,8038,8039,8040,8041,8042,8043,8044,8045,8046,8047,8048,8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8064,8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8096,8097,8098,8099,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111,8112,8113,8114,8115,8116,8118,8119,8120,8121,8122,8123,8124,8126,8130,8131,8132,8134,8135,8136,8137,8138,8139,8140,8144,8145,8146,8147,8150,8151,8152,8153,8154,8155,8160,8161,8162,8163,8164,8165,8166,8167,8168,8169,8170,8171,8172,8178,8179,8180,8182,8183,8184,8185,8186,8187,8188,8305,8319,8336,8337,8338,8339,8340,8341,8342,8343,8344,8345,8346,8347,8348,8450,8455,8458,8459,8460,8461,8462,8463,8464,8465,8466,8467,8469,8473,8474,8475,8476,8477,8484,8486,8488,8490,8491,8492,8493,8495,8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8508,8509,8510,8511,8517,8518,8519,8520,8521,8526,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,8556,8557,8558,8559,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8570,8571,8572,8573,8574,8575,8576,8577,8578,8579,8580,8581,8582,8583,8584,11264,11265,11266,11267,11268,11269,11270,11271,11272,11273,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11284,11285,11286,11287,11288,11289,11290,11291,11292,11293,11294,11295,11296,11297,11298,11299,11300,11301,11302,11303,11304,11305,11306,11307,11308,11309,11310,11312,11313,11314,11315,11316,11317,11318,11319,11320,11321,11322,11323,11324,11325,11326,11327,11328,11329,11330,11331,11332,11333,11334,11335,11336,11337,11338,11339,11340,11341,11342,11343,11344,11345,11346,11347,11348,11349,11350,11351,11352,11353,11354,11355,11356,11357,11358,11360,11361,11362,11363,11364,11365,11366,11367,11368,11369,11370,11371,11372,11373,11374,11375,11376,11377,11378,11379,11380,11381,11382,11383,11384,11385,11386,11387,11388,11389,11390,11391,11392,11393,11394,11395,11396,11397,11398,11399,11400,11401,11402,11403,11404,11405,11406,11407,11408,11409,11410,11411,11412,11413,11414,11415,11416,11417,11418,11419,11420,11421,11422,11423,11424,11425,11426,11427,11428,11429,11430,11431,11432,11433,11434,11435,11436,11437,11438,11439,11440,11441,11442,11443,11444,11445,11446,11447,11448,11449,11450,11451,11452,11453,11454,11455,11456,11457,11458,11459,11460,11461,11462,11463,11464,11465,11466,11467,11468,11469,11470,11471,11472,11473,11474,11475,11476,11477,11478,11479,11480,11481,11482,11483,11484,11485,11486,11487,11488,11489,11490,11491,11492,11499,11500,11501,11502,11506,11507,11520,11521,11522,11523,11524,11525,11526,11527,11528,11529,11530,11531,11532,11533,11534,11535,11536,11537,11538,11539,11540,11541,11542,11543,11544,11545,11546,11547,11548,11549,11550,11551,11552,11553,11554,11555,11556,11557,11559,11565,11568,11569,11570,11571,11572,11573,11574,11575,11576,11577,11578,11579,11580,11581,11582,11583,11584,11585,11586,11587,11588,11589,11590,11591,11592,11593,11594,11595,11596,11597,11598,11599,11600,11601,11602,11603,11604,11605,11606,11607,11608,11609,11610,11611,11612,11613,11614,11615,11616,11617,11618,11619,11620,11621,11622,11623,11631,11648,11649,11650,11651,11652,11653,11654,11655,11656,11657,11658,11659,11660,11661,11662,11663,11664,11665,11666,11667,11668,11669,11670,11680,11681,11682,11683,11684,11685,11686,11688,11689,11690,11691,11692,11693,11694,11696,11697,11698,11699,11700,11701,11702,11704,11705,11706,11707,11708,11709,11710,11712,11713,11714,11715,11716,11717,11718,11720,11721,11722,11723,11724,11725,11726,11728,11729,11730,11731,11732,11733,11734,11736,11737,11738,11739,11740,11741,11742,11823,12293,12294,12295,12321,12322,12323,12324,12325,12326,12327,12328,12329,12337,12338,12339,12340,12341,12344,12345,12346,12347,12348,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,12436,12437,12438,12445,12446,12447,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,12535,12536,12537,12538,12540,12541,12542,12543,12549,12550,12551,12552,12553,12554,12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12575,12576,12577,12578,12579,12580,12581,12582,12583,12584,12585,12586,12587,12588,12589,12593,12594,12595,12596,12597,12598,12599,12600,12601,12602,12603,12604,12605,12606,12607,12608,12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643,12644,12645,12646,12647,12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660,12661,12662,12663,12664,12665,12666,12667,12668,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680,12681,12682,12683,12684,12685,12686,12704,12705,12706,12707,12708,12709,12710,12711,12712,12713,12714,12715,12716,12717,12718,12719,12720,12721,12722,12723,12724,12725,12726,12727,12728,12729,12730,12784,12785,12786,12787,12788,12789,12790,12791,12792,12793,12794,12795,12796,12797,12798,12799,13312,13313,13314,13315,13316,13317,13318,13319,13320,13321,13322,13323,13324,13325,13326,13327,13328,13329,13330,13331,13332,13333,13334,13335,13336,13337,13338,13339,13340,13341,13342,13343,13344,13345,13346,13347,13348,13349,13350,13351,13352,13353,13354,13355,13356,13357,13358,13359,13360,13361,13362,13363,13364,13365,13366,13367,13368,13369,13370,13371,13372,13373,13374,13375,13376,13377,13378,13379,13380,13381,13382,13383,13384,13385,13386,13387,13388,13389,13390,13391,13392,13393,13394,13395,13396,13397,13398,13399,13400,13401,13402,13403,13404,13405,13406,13407,13408,13409,13410,13411,13412,13413,13414,13415,13416,13417,13418,13419,13420,13421,13422,13423,13424,13425,13426,13427,13428,13429,13430,13431,13432,13433,13434,13435,13436,13437,13438,13439,13440,13441,13442,13443,13444,13445,13446,13447,13448,13449,13450,13451,13452,13453,13454,13455,13456,13457,13458,13459,13460,13461,13462,13463,13464,13465,13466,13467,13468,13469,13470,13471,13472,13473,13474,13475,13476,13477,13478,13479,13480,13481,13482,13483,13484,13485,13486,13487,13488,13489,13490,13491,13492,13493,13494,13495,13496,13497,13498,13499,13500,13501,13502,13503,13504,13505,13506,13507,13508,13509,13510,13511,13512,13513,13514,13515,13516,13517,13518,13519,13520,13521,13522,13523,13524,13525,13526,13527,13528,13529,13530,13531,13532,13533,13534,13535,13536,13537,13538,13539,13540,13541,13542,13543,13544,13545,13546,13547,13548,13549,13550,13551,13552,13553,13554,13555,13556,13557,13558,13559,13560,13561,13562,13563,13564,13565,13566,13567,13568,13569,13570,13571,13572,13573,13574,13575,13576,13577,13578,13579,13580,13581,13582,13583,13584,13585,13586,13587,13588,13589,13590,13591,13592,13593,13594,13595,13596,13597,13598,13599,13600,13601,13602,13603,13604,13605,13606,13607,13608,13609,13610,13611,13612,13613,13614,13615,13616,13617,13618,13619,13620,13621,13622,13623,13624,13625,13626,13627,13628,13629,13630,13631,13632,13633,13634,13635,13636,13637,13638,13639,13640,13641,13642,13643,13644,13645,13646,13647,13648,13649,13650,13651,13652,13653,13654,13655,13656,13657,13658,13659,13660,13661,13662,13663,13664,13665,13666,13667,13668,13669,13670,13671,13672,13673,13674,13675,13676,13677,13678,13679,13680,13681,13682,13683,13684,13685,13686,13687,13688,13689,13690,13691,13692,13693,13694,13695,13696,13697,13698,13699,13700,13701,13702,13703,13704,13705,13706,13707,13708,13709,13710,13711,13712,13713,13714,13715,13716,13717,13718,13719,13720,13721,13722,13723,13724,13725,13726,13727,13728,13729,13730,13731,13732,13733,13734,13735,13736,13737,13738,13739,13740,13741,13742,13743,13744,13745,13746,13747,13748,13749,13750,13751,13752,13753,13754,13755,13756,13757,13758,13759,13760,13761,13762,13763,13764,13765,13766,13767,13768,13769,13770,13771,13772,13773,13774,13775,13776,13777,13778,13779,13780,13781,13782,13783,13784,13785,13786,13787,13788,13789,13790,13791,13792,13793,13794,13795,13796,13797,13798,13799,13800,13801,13802,13803,13804,13805,13806,13807,13808,13809,13810,13811,13812,13813,13814,13815,13816,13817,13818,13819,13820,13821,13822,13823,13824,13825,13826,13827,13828,13829,13830,13831,13832,13833,13834,13835,13836,13837,13838,13839,13840,13841,13842,13843,13844,13845,13846,13847,13848,13849,13850,13851,13852,13853,13854,13855,13856,13857,13858,13859,13860,13861,13862,13863,13864,13865,13866,13867,13868,13869,13870,13871,13872,13873,13874,13875,13876,13877,13878,13879,13880,13881,13882,13883,13884,13885,13886,13887,13888,13889,13890,13891,13892,13893,13894,13895,13896,13897,13898,13899,13900,13901,13902,13903,13904,13905,13906,13907,13908,13909,13910,13911,13912,13913,13914,13915,13916,13917,13918,13919,13920,13921,13922,13923,13924,13925,13926,13927,13928,13929,13930,13931,13932,13933,13934,13935,13936,13937,13938,13939,13940,13941,13942,13943,13944,13945,13946,13947,13948,13949,13950,13951,13952,13953,13954,13955,13956,13957,13958,13959,13960,13961,13962,13963,13964,13965,13966,13967,13968,13969,13970,13971,13972,13973,13974,13975,13976,13977,13978,13979,13980,13981,13982,13983,13984,13985,13986,13987,13988,13989,13990,13991,13992,13993,13994,13995,13996,13997,13998,13999,14000,14001,14002,14003,14004,14005,14006,14007,14008,14009,14010,14011,14012,14013,14014,14015,14016,14017,14018,14019,14020,14021,14022,14023,14024,14025,14026,14027,14028,14029,14030,14031,14032,14033,14034,14035,14036,14037,14038,14039,14040,14041,14042,14043,14044,14045,14046,14047,14048,14049,14050,14051,14052,14053,14054,14055,14056,14057,14058,14059,14060,14061,14062,14063,14064,14065,14066,14067,14068,14069,14070,14071,14072,14073,14074,14075,14076,14077,14078,14079,14080,14081,14082,14083,14084,14085,14086,14087,14088,14089,14090,14091,14092,14093,14094,14095,14096,14097,14098,14099,14100,14101,14102,14103,14104,14105,14106,14107,14108,14109,14110,14111,14112,14113,14114,14115,14116,14117,14118,14119,14120,14121,14122,14123,14124,14125,14126,14127,14128,14129,14130,14131,14132,14133,14134,14135,14136,14137,14138,14139,14140,14141,14142,14143,14144,14145,14146,14147,14148,14149,14150,14151,14152,14153,14154,14155,14156,14157,14158,14159,14160,14161,14162,14163,14164,14165,14166,14167,14168,14169,14170,14171,14172,14173,14174,14175,14176,14177,14178,14179,14180,14181,14182,14183,14184,14185,14186,14187,14188,14189,14190,14191,14192,14193,14194,14195,14196,14197,14198,14199,14200,14201,14202,14203,14204,14205,14206,14207,14208,14209,14210,14211,14212,14213,14214,14215,14216,14217,14218,14219,14220,14221,14222,14223,14224,14225,14226,14227,14228,14229,14230,14231,14232,14233,14234,14235,14236,14237,14238,14239,14240,14241,14242,14243,14244,14245,14246,14247,14248,14249,14250,14251,14252,14253,14254,14255,14256,14257,14258,14259,14260,14261,14262,14263,14264,14265,14266,14267,14268,14269,14270,14271,14272,14273,14274,14275,14276,14277,14278,14279,14280,14281,14282,14283,14284,14285,14286,14287,14288,14289,14290,14291,14292,14293,14294,14295,14296,14297,14298,14299,14300,14301,14302,14303,14304,14305,14306,14307,14308,14309,14310,14311,14312,14313,14314,14315,14316,14317,14318,14319,14320,14321,14322,14323,14324,14325,14326,14327,14328,14329,14330,14331,14332,14333,14334,14335,14336,14337,14338,14339,14340,14341,14342,14343,14344,14345,14346,14347,14348,14349,14350,14351,14352,14353,14354,14355,14356,14357,14358,14359,14360,14361,14362,14363,14364,14365,14366,14367,14368,14369,14370,14371,14372,14373,14374,14375,14376,14377,14378,14379,14380,14381,14382,14383,14384,14385,14386,14387,14388,14389,14390,14391,14392,14393,14394,14395,14396,14397,14398,14399,14400,14401,14402,14403,14404,14405,14406,14407,14408,14409,14410,14411,14412,14413,14414,14415,14416,14417,14418,14419,14420,14421,14422,14423,14424,14425,14426,14427,14428,14429,14430,14431,14432,14433,14434,14435,14436,14437,14438,14439,14440,14441,14442,14443,14444,14445,14446,14447,14448,14449,14450,14451,14452,14453,14454,14455,14456,14457,14458,14459,14460,14461,14462,14463,14464,14465,14466,14467,14468,14469,14470,14471,14472,14473,14474,14475,14476,14477,14478,14479,14480,14481,14482,14483,14484,14485,14486,14487,14488,14489,14490,14491,14492,14493,14494,14495,14496,14497,14498,14499,14500,14501,14502,14503,14504,14505,14506,14507,14508,14509,14510,14511,14512,14513,14514,14515,14516,14517,14518,14519,14520,14521,14522,14523,14524,14525,14526,14527,14528,14529,14530,14531,14532,14533,14534,14535,14536,14537,14538,14539,14540,14541,14542,14543,14544,14545,14546,14547,14548,14549,14550,14551,14552,14553,14554,14555,14556,14557,14558,14559,14560,14561,14562,14563,14564,14565,14566,14567,14568,14569,14570,14571,14572,14573,14574,14575,14576,14577,14578,14579,14580,14581,14582,14583,14584,14585,14586,14587,14588,14589,14590,14591,14592,14593,14594,14595,14596,14597,14598,14599,14600,14601,14602,14603,14604,14605,14606,14607,14608,14609,14610,14611,14612,14613,14614,14615,14616,14617,14618,14619,14620,14621,14622,14623,14624,14625,14626,14627,14628,14629,14630,14631,14632,14633,14634,14635,14636,14637,14638,14639,14640,14641,14642,14643,14644,14645,14646,14647,14648,14649,14650,14651,14652,14653,14654,14655,14656,14657,14658,14659,14660,14661,14662,14663,14664,14665,14666,14667,14668,14669,14670,14671,14672,14673,14674,14675,14676,14677,14678,14679,14680,14681,14682,14683,14684,14685,14686,14687,14688,14689,14690,14691,14692,14693,14694,14695,14696,14697,14698,14699,14700,14701,14702,14703,14704,14705,14706,14707,14708,14709,14710,14711,14712,14713,14714,14715,14716,14717,14718,14719,14720,14721,14722,14723,14724,14725,14726,14727,14728,14729,14730,14731,14732,14733,14734,14735,14736,14737,14738,14739,14740,14741,14742,14743,14744,14745,14746,14747,14748,14749,14750,14751,14752,14753,14754,14755,14756,14757,14758,14759,14760,14761,14762,14763,14764,14765,14766,14767,14768,14769,14770,14771,14772,14773,14774,14775,14776,14777,14778,14779,14780,14781,14782,14783,14784,14785,14786,14787,14788,14789,14790,14791,14792,14793,14794,14795,14796,14797,14798,14799,14800,14801,14802,14803,14804,14805,14806,14807,14808,14809,14810,14811,14812,14813,14814,14815,14816,14817,14818,14819,14820,14821,14822,14823,14824,14825,14826,14827,14828,14829,14830,14831,14832,14833,14834,14835,14836,14837,14838,14839,14840,14841,14842,14843,14844,14845,14846,14847,14848,14849,14850,14851,14852,14853,14854,14855,14856,14857,14858,14859,14860,14861,14862,14863,14864,14865,14866,14867,14868,14869,14870,14871,14872,14873,14874,14875,14876,14877,14878,14879,14880,14881,14882,14883,14884,14885,14886,14887,14888,14889,14890,14891,14892,14893,14894,14895,14896,14897,14898,14899,14900,14901,14902,14903,14904,14905,14906,14907,14908,14909,14910,14911,14912,14913,14914,14915,14916,14917,14918,14919,14920,14921,14922,14923,14924,14925,14926,14927,14928,14929,14930,14931,14932,14933,14934,14935,14936,14937,14938,14939,14940,14941,14942,14943,14944,14945,14946,14947,14948,14949,14950,14951,14952,14953,14954,14955,14956,14957,14958,14959,14960,14961,14962,14963,14964,14965,14966,14967,14968,14969,14970,14971,14972,14973,14974,14975,14976,14977,14978,14979,14980,14981,14982,14983,14984,14985,14986,14987,14988,14989,14990,14991,14992,14993,14994,14995,14996,14997,14998,14999,15000,15001,15002,15003,15004,15005,15006,15007,15008,15009,15010,15011,15012,15013,15014,15015,15016,15017,15018,15019,15020,15021,15022,15023,15024,15025,15026,15027,15028,15029,15030,15031,15032,15033,15034,15035,15036,15037,15038,15039,15040,15041,15042,15043,15044,15045,15046,15047,15048,15049,15050,15051,15052,15053,15054,15055,15056,15057,15058,15059,15060,15061,15062,15063,15064,15065,15066,15067,15068,15069,15070,15071,15072,15073,15074,15075,15076,15077,15078,15079,15080,15081,15082,15083,15084,15085,15086,15087,15088,15089,15090,15091,15092,15093,15094,15095,15096,15097,15098,15099,15100,15101,15102,15103,15104,15105,15106,15107,15108,15109,15110,15111,15112,15113,15114,15115,15116,15117,15118,15119,15120,15121,15122,15123,15124,15125,15126,15127,15128,15129,15130,15131,15132,15133,15134,15135,15136,15137,15138,15139,15140,15141,15142,15143,15144,15145,15146,15147,15148,15149,15150,15151,15152,15153,15154,15155,15156,15157,15158,15159,15160,15161,15162,15163,15164,15165,15166,15167,15168,15169,15170,15171,15172,15173,15174,15175,15176,15177,15178,15179,15180,15181,15182,15183,15184,15185,15186,15187,15188,15189,15190,15191,15192,15193,15194,15195,15196,15197,15198,15199,15200,15201,15202,15203,15204,15205,15206,15207,15208,15209,15210,15211,15212,15213,15214,15215,15216,15217,15218,15219,15220,15221,15222,15223,15224,15225,15226,15227,15228,15229,15230,15231,15232,15233,15234,15235,15236,15237,15238,15239,15240,15241,15242,15243,15244,15245,15246,15247,15248,15249,15250,15251,15252,15253,15254,15255,15256,15257,15258,15259,15260,15261,15262,15263,15264,15265,15266,15267,15268,15269,15270,15271,15272,15273,15274,15275,15276,15277,15278,15279,15280,15281,15282,15283,15284,15285,15286,15287,15288,15289,15290,15291,15292,15293,15294,15295,15296,15297,15298,15299,15300,15301,15302,15303,15304,15305,15306,15307,15308,15309,15310,15311,15312,15313,15314,15315,15316,15317,15318,15319,15320,15321,15322,15323,15324,15325,15326,15327,15328,15329,15330,15331,15332,15333,15334,15335,15336,15337,15338,15339,15340,15341,15342,15343,15344,15345,15346,15347,15348,15349,15350,15351,15352,15353,15354,15355,15356,15357,15358,15359,15360,15361,15362,15363,15364,15365,15366,15367,15368,15369,15370,15371,15372,15373,15374,15375,15376,15377,15378,15379,15380,15381,15382,15383,15384,15385,15386,15387,15388,15389,15390,15391,15392,15393,15394,15395,15396,15397,15398,15399,15400,15401,15402,15403,15404,15405,15406,15407,15408,15409,15410,15411,15412,15413,15414,15415,15416,15417,15418,15419,15420,15421,15422,15423,15424,15425,15426,15427,15428,15429,15430,15431,15432,15433,15434,15435,15436,15437,15438,15439,15440,15441,15442,15443,15444,15445,15446,15447,15448,15449,15450,15451,15452,15453,15454,15455,15456,15457,15458,15459,15460,15461,15462,15463,15464,15465,15466,15467,15468,15469,15470,15471,15472,15473,15474,15475,15476,15477,15478,15479,15480,15481,15482,15483,15484,15485,15486,15487,15488,15489,15490,15491,15492,15493,15494,15495,15496,15497,15498,15499,15500,15501,15502,15503,15504,15505,15506,15507,15508,15509,15510,15511,15512,15513,15514,15515,15516,15517,15518,15519,15520,15521,15522,15523,15524,15525,15526,15527,15528,15529,15530,15531,15532,15533,15534,15535,15536,15537,15538,15539,15540,15541,15542,15543,15544,15545,15546,15547,15548,15549,15550,15551,15552,15553,15554,15555,15556,15557,15558,15559,15560,15561,15562,15563,15564,15565,15566,15567,15568,15569,15570,15571,15572,15573,15574,15575,15576,15577,15578,15579,15580,15581,15582,15583,15584,15585,15586,15587,15588,15589,15590,15591,15592,15593,15594,15595,15596,15597,15598,15599,15600,15601,15602,15603,15604,15605,15606,15607,15608,15609,15610,15611,15612,15613,15614,15615,15616,15617,15618,15619,15620,15621,15622,15623,15624,15625,15626,15627,15628,15629,15630,15631,15632,15633,15634,15635,15636,15637,15638,15639,15640,15641,15642,15643,15644,15645,15646,15647,15648,15649,15650,15651,15652,15653,15654,15655,15656,15657,15658,15659,15660,15661,15662,15663,15664,15665,15666,15667,15668,15669,15670,15671,15672,15673,15674,15675,15676,15677,15678,15679,15680,15681,15682,15683,15684,15685,15686,15687,15688,15689,15690,15691,15692,15693,15694,15695,15696,15697,15698,15699,15700,15701,15702,15703,15704,15705,15706,15707,15708,15709,15710,15711,15712,15713,15714,15715,15716,15717,15718,15719,15720,15721,15722,15723,15724,15725,15726,15727,15728,15729,15730,15731,15732,15733,15734,15735,15736,15737,15738,15739,15740,15741,15742,15743,15744,15745,15746,15747,15748,15749,15750,15751,15752,15753,15754,15755,15756,15757,15758,15759,15760,15761,15762,15763,15764,15765,15766,15767,15768,15769,15770,15771,15772,15773,15774,15775,15776,15777,15778,15779,15780,15781,15782,15783,15784,15785,15786,15787,15788,15789,15790,15791,15792,15793,15794,15795,15796,15797,15798,15799,15800,15801,15802,15803,15804,15805,15806,15807,15808,15809,15810,15811,15812,15813,15814,15815,15816,15817,15818,15819,15820,15821,15822,15823,15824,15825,15826,15827,15828,15829,15830,15831,15832,15833,15834,15835,15836,15837,15838,15839,15840,15841,15842,15843,15844,15845,15846,15847,15848,15849,15850,15851,15852,15853,15854,15855,15856,15857,15858,15859,15860,15861,15862,15863,15864,15865,15866,15867,15868,15869,15870,15871,15872,15873,15874,15875,15876,15877,15878,15879,15880,15881,15882,15883,15884,15885,15886,15887,15888,15889,15890,15891,15892,15893,15894,15895,15896,15897,15898,15899,15900,15901,15902,15903,15904,15905,15906,15907,15908,15909,15910,15911,15912,15913,15914,15915,15916,15917,15918,15919,15920,15921,15922,15923,15924,15925,15926,15927,15928,15929,15930,15931,15932,15933,15934,15935,15936,15937,15938,15939,15940,15941,15942,15943,15944,15945,15946,15947,15948,15949,15950,15951,15952,15953,15954,15955,15956,15957,15958,15959,15960,15961,15962,15963,15964,15965,15966,15967,15968,15969,15970,15971,15972,15973,15974,15975,15976,15977,15978,15979,15980,15981,15982,15983,15984,15985,15986,15987,15988,15989,15990,15991,15992,15993,15994,15995,15996,15997,15998,15999,16000,16001,16002,16003,16004,16005,16006,16007,16008,16009,16010,16011,16012,16013,16014,16015,16016,16017,16018,16019,16020,16021,16022,16023,16024,16025,16026,16027,16028,16029,16030,16031,16032,16033,16034,16035,16036,16037,16038,16039,16040,16041,16042,16043,16044,16045,16046,16047,16048,16049,16050,16051,16052,16053,16054,16055,16056,16057,16058,16059,16060,16061,16062,16063,16064,16065,16066,16067,16068,16069,16070,16071,16072,16073,16074,16075,16076,16077,16078,16079,16080,16081,16082,16083,16084,16085,16086,16087,16088,16089,16090,16091,16092,16093,16094,16095,16096,16097,16098,16099,16100,16101,16102,16103,16104,16105,16106,16107,16108,16109,16110,16111,16112,16113,16114,16115,16116,16117,16118,16119,16120,16121,16122,16123,16124,16125,16126,16127,16128,16129,16130,16131,16132,16133,16134,16135,16136,16137,16138,16139,16140,16141,16142,16143,16144,16145,16146,16147,16148,16149,16150,16151,16152,16153,16154,16155,16156,16157,16158,16159,16160,16161,16162,16163,16164,16165,16166,16167,16168,16169,16170,16171,16172,16173,16174,16175,16176,16177,16178,16179,16180,16181,16182,16183,16184,16185,16186,16187,16188,16189,16190,16191,16192,16193,16194,16195,16196,16197,16198,16199,16200,16201,16202,16203,16204,16205,16206,16207,16208,16209,16210,16211,16212,16213,16214,16215,16216,16217,16218,16219,16220,16221,16222,16223,16224,16225,16226,16227,16228,16229,16230,16231,16232,16233,16234,16235,16236,16237,16238,16239,16240,16241,16242,16243,16244,16245,16246,16247,16248,16249,16250,16251,16252,16253,16254,16255,16256,16257,16258,16259,16260,16261,16262,16263,16264,16265,16266,16267,16268,16269,16270,16271,16272,16273,16274,16275,16276,16277,16278,16279,16280,16281,16282,16283,16284,16285,16286,16287,16288,16289,16290,16291,16292,16293,16294,16295,16296,16297,16298,16299,16300,16301,16302,16303,16304,16305,16306,16307,16308,16309,16310,16311,16312,16313,16314,16315,16316,16317,16318,16319,16320,16321,16322,16323,16324,16325,16326,16327,16328,16329,16330,16331,16332,16333,16334,16335,16336,16337,16338,16339,16340,16341,16342,16343,16344,16345,16346,16347,16348,16349,16350,16351,16352,16353,16354,16355,16356,16357,16358,16359,16360,16361,16362,16363,16364,16365,16366,16367,16368,16369,16370,16371,16372,16373,16374,16375,16376,16377,16378,16379,16380,16381,16382,16383,16384,16385,16386,16387,16388,16389,16390,16391,16392,16393,16394,16395,16396,16397,16398,16399,16400,16401,16402,16403,16404,16405,16406,16407,16408,16409,16410,16411,16412,16413,16414,16415,16416,16417,16418,16419,16420,16421,16422,16423,16424,16425,16426,16427,16428,16429,16430,16431,16432,16433,16434,16435,16436,16437,16438,16439,16440,16441,16442,16443,16444,16445,16446,16447,16448,16449,16450,16451,16452,16453,16454,16455,16456,16457,16458,16459,16460,16461,16462,16463,16464,16465,16466,16467,16468,16469,16470,16471,16472,16473,16474,16475,16476,16477,16478,16479,16480,16481,16482,16483,16484,16485,16486,16487,16488,16489,16490,16491,16492,16493,16494,16495,16496,16497,16498,16499,16500,16501,16502,16503,16504,16505,16506,16507,16508,16509,16510,16511,16512,16513,16514,16515,16516,16517,16518,16519,16520,16521,16522,16523,16524,16525,16526,16527,16528,16529,16530,16531,16532,16533,16534,16535,16536,16537,16538,16539,16540,16541,16542,16543,16544,16545,16546,16547,16548,16549,16550,16551,16552,16553,16554,16555,16556,16557,16558,16559,16560,16561,16562,16563,16564,16565,16566,16567,16568,16569,16570,16571,16572,16573,16574,16575,16576,16577,16578,16579,16580,16581,16582,16583,16584,16585,16586,16587,16588,16589,16590,16591,16592,16593,16594,16595,16596,16597,16598,16599,16600,16601,16602,16603,16604,16605,16606,16607,16608,16609,16610,16611,16612,16613,16614,16615,16616,16617,16618,16619,16620,16621,16622,16623,16624,16625,16626,16627,16628,16629,16630,16631,16632,16633,16634,16635,16636,16637,16638,16639,16640,16641,16642,16643,16644,16645,16646,16647,16648,16649,16650,16651,16652,16653,16654,16655,16656,16657,16658,16659,16660,16661,16662,16663,16664,16665,16666,16667,16668,16669,16670,16671,16672,16673,16674,16675,16676,16677,16678,16679,16680,16681,16682,16683,16684,16685,16686,16687,16688,16689,16690,16691,16692,16693,16694,16695,16696,16697,16698,16699,16700,16701,16702,16703,16704,16705,16706,16707,16708,16709,16710,16711,16712,16713,16714,16715,16716,16717,16718,16719,16720,16721,16722,16723,16724,16725,16726,16727,16728,16729,16730,16731,16732,16733,16734,16735,16736,16737,16738,16739,16740,16741,16742,16743,16744,16745,16746,16747,16748,16749,16750,16751,16752,16753,16754,16755,16756,16757,16758,16759,16760,16761,16762,16763,16764,16765,16766,16767,16768,16769,16770,16771,16772,16773,16774,16775,16776,16777,16778,16779,16780,16781,16782,16783,16784,16785,16786,16787,16788,16789,16790,16791,16792,16793,16794,16795,16796,16797,16798,16799,16800,16801,16802,16803,16804,16805,16806,16807,16808,16809,16810,16811,16812,16813,16814,16815,16816,16817,16818,16819,16820,16821,16822,16823,16824,16825,16826,16827,16828,16829,16830,16831,16832,16833,16834,16835,16836,16837,16838,16839,16840,16841,16842,16843,16844,16845,16846,16847,16848,16849,16850,16851,16852,16853,16854,16855,16856,16857,16858,16859,16860,16861,16862,16863,16864,16865,16866,16867,16868,16869,16870,16871,16872,16873,16874,16875,16876,16877,16878,16879,16880,16881,16882,16883,16884,16885,16886,16887,16888,16889,16890,16891,16892,16893,16894,16895,16896,16897,16898,16899,16900,16901,16902,16903,16904,16905,16906,16907,16908,16909,16910,16911,16912,16913,16914,16915,16916,16917,16918,16919,16920,16921,16922,16923,16924,16925,16926,16927,16928,16929,16930,16931,16932,16933,16934,16935,16936,16937,16938,16939,16940,16941,16942,16943,16944,16945,16946,16947,16948,16949,16950,16951,16952,16953,16954,16955,16956,16957,16958,16959,16960,16961,16962,16963,16964,16965,16966,16967,16968,16969,16970,16971,16972,16973,16974,16975,16976,16977,16978,16979,16980,16981,16982,16983,16984,16985,16986,16987,16988,16989,16990,16991,16992,16993,16994,16995,16996,16997,16998,16999,17000,17001,17002,17003,17004,17005,17006,17007,17008,17009,17010,17011,17012,17013,17014,17015,17016,17017,17018,17019,17020,17021,17022,17023,17024,17025,17026,17027,17028,17029,17030,17031,17032,17033,17034,17035,17036,17037,17038,17039,17040,17041,17042,17043,17044,17045,17046,17047,17048,17049,17050,17051,17052,17053,17054,17055,17056,17057,17058,17059,17060,17061,17062,17063,17064,17065,17066,17067,17068,17069,17070,17071,17072,17073,17074,17075,17076,17077,17078,17079,17080,17081,17082,17083,17084,17085,17086,17087,17088,17089,17090,17091,17092,17093,17094,17095,17096,17097,17098,17099,17100,17101,17102,17103,17104,17105,17106,17107,17108,17109,17110,17111,17112,17113,17114,17115,17116,17117,17118,17119,17120,17121,17122,17123,17124,17125,17126,17127,17128,17129,17130,17131,17132,17133,17134,17135,17136,17137,17138,17139,17140,17141,17142,17143,17144,17145,17146,17147,17148,17149,17150,17151,17152,17153,17154,17155,17156,17157,17158,17159,17160,17161,17162,17163,17164,17165,17166,17167,17168,17169,17170,17171,17172,17173,17174,17175,17176,17177,17178,17179,17180,17181,17182,17183,17184,17185,17186,17187,17188,17189,17190,17191,17192,17193,17194,17195,17196,17197,17198,17199,17200,17201,17202,17203,17204,17205,17206,17207,17208,17209,17210,17211,17212,17213,17214,17215,17216,17217,17218,17219,17220,17221,17222,17223,17224,17225,17226,17227,17228,17229,17230,17231,17232,17233,17234,17235,17236,17237,17238,17239,17240,17241,17242,17243,17244,17245,17246,17247,17248,17249,17250,17251,17252,17253,17254,17255,17256,17257,17258,17259,17260,17261,17262,17263,17264,17265,17266,17267,17268,17269,17270,17271,17272,17273,17274,17275,17276,17277,17278,17279,17280,17281,17282,17283,17284,17285,17286,17287,17288,17289,17290,17291,17292,17293,17294,17295,17296,17297,17298,17299,17300,17301,17302,17303,17304,17305,17306,17307,17308,17309,17310,17311,17312,17313,17314,17315,17316,17317,17318,17319,17320,17321,17322,17323,17324,17325,17326,17327,17328,17329,17330,17331,17332,17333,17334,17335,17336,17337,17338,17339,17340,17341,17342,17343,17344,17345,17346,17347,17348,17349,17350,17351,17352,17353,17354,17355,17356,17357,17358,17359,17360,17361,17362,17363,17364,17365,17366,17367,17368,17369,17370,17371,17372,17373,17374,17375,17376,17377,17378,17379,17380,17381,17382,17383,17384,17385,17386,17387,17388,17389,17390,17391,17392,17393,17394,17395,17396,17397,17398,17399,17400,17401,17402,17403,17404,17405,17406,17407,17408,17409,17410,17411,17412,17413,17414,17415,17416,17417,17418,17419,17420,17421,17422,17423,17424,17425,17426,17427,17428,17429,17430,17431,17432,17433,17434,17435,17436,17437,17438,17439,17440,17441,17442,17443,17444,17445,17446,17447,17448,17449,17450,17451,17452,17453,17454,17455,17456,17457,17458,17459,17460,17461,17462,17463,17464,17465,17466,17467,17468,17469,17470,17471,17472,17473,17474,17475,17476,17477,17478,17479,17480,17481,17482,17483,17484,17485,17486,17487,17488,17489,17490,17491,17492,17493,17494,17495,17496,17497,17498,17499,17500,17501,17502,17503,17504,17505,17506,17507,17508,17509,17510,17511,17512,17513,17514,17515,17516,17517,17518,17519,17520,17521,17522,17523,17524,17525,17526,17527,17528,17529,17530,17531,17532,17533,17534,17535,17536,17537,17538,17539,17540,17541,17542,17543,17544,17545,17546,17547,17548,17549,17550,17551,17552,17553,17554,17555,17556,17557,17558,17559,17560,17561,17562,17563,17564,17565,17566,17567,17568,17569,17570,17571,17572,17573,17574,17575,17576,17577,17578,17579,17580,17581,17582,17583,17584,17585,17586,17587,17588,17589,17590,17591,17592,17593,17594,17595,17596,17597,17598,17599,17600,17601,17602,17603,17604,17605,17606,17607,17608,17609,17610,17611,17612,17613,17614,17615,17616,17617,17618,17619,17620,17621,17622,17623,17624,17625,17626,17627,17628,17629,17630,17631,17632,17633,17634,17635,17636,17637,17638,17639,17640,17641,17642,17643,17644,17645,17646,17647,17648,17649,17650,17651,17652,17653,17654,17655,17656,17657,17658,17659,17660,17661,17662,17663,17664,17665,17666,17667,17668,17669,17670,17671,17672,17673,17674,17675,17676,17677,17678,17679,17680,17681,17682,17683,17684,17685,17686,17687,17688,17689,17690,17691,17692,17693,17694,17695,17696,17697,17698,17699,17700,17701,17702,17703,17704,17705,17706,17707,17708,17709,17710,17711,17712,17713,17714,17715,17716,17717,17718,17719,17720,17721,17722,17723,17724,17725,17726,17727,17728,17729,17730,17731,17732,17733,17734,17735,17736,17737,17738,17739,17740,17741,17742,17743,17744,17745,17746,17747,17748,17749,17750,17751,17752,17753,17754,17755,17756,17757,17758,17759,17760,17761,17762,17763,17764,17765,17766,17767,17768,17769,17770,17771,17772,17773,17774,17775,17776,17777,17778,17779,17780,17781,17782,17783,17784,17785,17786,17787,17788,17789,17790,17791,17792,17793,17794,17795,17796,17797,17798,17799,17800,17801,17802,17803,17804,17805,17806,17807,17808,17809,17810,17811,17812,17813,17814,17815,17816,17817,17818,17819,17820,17821,17822,17823,17824,17825,17826,17827,17828,17829,17830,17831,17832,17833,17834,17835,17836,17837,17838,17839,17840,17841,17842,17843,17844,17845,17846,17847,17848,17849,17850,17851,17852,17853,17854,17855,17856,17857,17858,17859,17860,17861,17862,17863,17864,17865,17866,17867,17868,17869,17870,17871,17872,17873,17874,17875,17876,17877,17878,17879,17880,17881,17882,17883,17884,17885,17886,17887,17888,17889,17890,17891,17892,17893,17894,17895,17896,17897,17898,17899,17900,17901,17902,17903,17904,17905,17906,17907,17908,17909,17910,17911,17912,17913,17914,17915,17916,17917,17918,17919,17920,17921,17922,17923,17924,17925,17926,17927,17928,17929,17930,17931,17932,17933,17934,17935,17936,17937,17938,17939,17940,17941,17942,17943,17944,17945,17946,17947,17948,17949,17950,17951,17952,17953,17954,17955,17956,17957,17958,17959,17960,17961,17962,17963,17964,17965,17966,17967,17968,17969,17970,17971,17972,17973,17974,17975,17976,17977,17978,17979,17980,17981,17982,17983,17984,17985,17986,17987,17988,17989,17990,17991,17992,17993,17994,17995,17996,17997,17998,17999,18000,18001,18002,18003,18004,18005,18006,18007,18008,18009,18010,18011,18012,18013,18014,18015,18016,18017,18018,18019,18020,18021,18022,18023,18024,18025,18026,18027,18028,18029,18030,18031,18032,18033,18034,18035,18036,18037,18038,18039,18040,18041,18042,18043,18044,18045,18046,18047,18048,18049,18050,18051,18052,18053,18054,18055,18056,18057,18058,18059,18060,18061,18062,18063,18064,18065,18066,18067,18068,18069,18070,18071,18072,18073,18074,18075,18076,18077,18078,18079,18080,18081,18082,18083,18084,18085,18086,18087,18088,18089,18090,18091,18092,18093,18094,18095,18096,18097,18098,18099,18100,18101,18102,18103,18104,18105,18106,18107,18108,18109,18110,18111,18112,18113,18114,18115,18116,18117,18118,18119,18120,18121,18122,18123,18124,18125,18126,18127,18128,18129,18130,18131,18132,18133,18134,18135,18136,18137,18138,18139,18140,18141,18142,18143,18144,18145,18146,18147,18148,18149,18150,18151,18152,18153,18154,18155,18156,18157,18158,18159,18160,18161,18162,18163,18164,18165,18166,18167,18168,18169,18170,18171,18172,18173,18174,18175,18176,18177,18178,18179,18180,18181,18182,18183,18184,18185,18186,18187,18188,18189,18190,18191,18192,18193,18194,18195,18196,18197,18198,18199,18200,18201,18202,18203,18204,18205,18206,18207,18208,18209,18210,18211,18212,18213,18214,18215,18216,18217,18218,18219,18220,18221,18222,18223,18224,18225,18226,18227,18228,18229,18230,18231,18232,18233,18234,18235,18236,18237,18238,18239,18240,18241,18242,18243,18244,18245,18246,18247,18248,18249,18250,18251,18252,18253,18254,18255,18256,18257,18258,18259,18260,18261,18262,18263,18264,18265,18266,18267,18268,18269,18270,18271,18272,18273,18274,18275,18276,18277,18278,18279,18280,18281,18282,18283,18284,18285,18286,18287,18288,18289,18290,18291,18292,18293,18294,18295,18296,18297,18298,18299,18300,18301,18302,18303,18304,18305,18306,18307,18308,18309,18310,18311,18312,18313,18314,18315,18316,18317,18318,18319,18320,18321,18322,18323,18324,18325,18326,18327,18328,18329,18330,18331,18332,18333,18334,18335,18336,18337,18338,18339,18340,18341,18342,18343,18344,18345,18346,18347,18348,18349,18350,18351,18352,18353,18354,18355,18356,18357,18358,18359,18360,18361,18362,18363,18364,18365,18366,18367,18368,18369,18370,18371,18372,18373,18374,18375,18376,18377,18378,18379,18380,18381,18382,18383,18384,18385,18386,18387,18388,18389,18390,18391,18392,18393,18394,18395,18396,18397,18398,18399,18400,18401,18402,18403,18404,18405,18406,18407,18408,18409,18410,18411,18412,18413,18414,18415,18416,18417,18418,18419,18420,18421,18422,18423,18424,18425,18426,18427,18428,18429,18430,18431,18432,18433,18434,18435,18436,18437,18438,18439,18440,18441,18442,18443,18444,18445,18446,18447,18448,18449,18450,18451,18452,18453,18454,18455,18456,18457,18458,18459,18460,18461,18462,18463,18464,18465,18466,18467,18468,18469,18470,18471,18472,18473,18474,18475,18476,18477,18478,18479,18480,18481,18482,18483,18484,18485,18486,18487,18488,18489,18490,18491,18492,18493,18494,18495,18496,18497,18498,18499,18500,18501,18502,18503,18504,18505,18506,18507,18508,18509,18510,18511,18512,18513,18514,18515,18516,18517,18518,18519,18520,18521,18522,18523,18524,18525,18526,18527,18528,18529,18530,18531,18532,18533,18534,18535,18536,18537,18538,18539,18540,18541,18542,18543,18544,18545,18546,18547,18548,18549,18550,18551,18552,18553,18554,18555,18556,18557,18558,18559,18560,18561,18562,18563,18564,18565,18566,18567,18568,18569,18570,18571,18572,18573,18574,18575,18576,18577,18578,18579,18580,18581,18582,18583,18584,18585,18586,18587,18588,18589,18590,18591,18592,18593,18594,18595,18596,18597,18598,18599,18600,18601,18602,18603,18604,18605,18606,18607,18608,18609,18610,18611,18612,18613,18614,18615,18616,18617,18618,18619,18620,18621,18622,18623,18624,18625,18626,18627,18628,18629,18630,18631,18632,18633,18634,18635,18636,18637,18638,18639,18640,18641,18642,18643,18644,18645,18646,18647,18648,18649,18650,18651,18652,18653,18654,18655,18656,18657,18658,18659,18660,18661,18662,18663,18664,18665,18666,18667,18668,18669,18670,18671,18672,18673,18674,18675,18676,18677,18678,18679,18680,18681,18682,18683,18684,18685,18686,18687,18688,18689,18690,18691,18692,18693,18694,18695,18696,18697,18698,18699,18700,18701,18702,18703,18704,18705,18706,18707,18708,18709,18710,18711,18712,18713,18714,18715,18716,18717,18718,18719,18720,18721,18722,18723,18724,18725,18726,18727,18728,18729,18730,18731,18732,18733,18734,18735,18736,18737,18738,18739,18740,18741,18742,18743,18744,18745,18746,18747,18748,18749,18750,18751,18752,18753,18754,18755,18756,18757,18758,18759,18760,18761,18762,18763,18764,18765,18766,18767,18768,18769,18770,18771,18772,18773,18774,18775,18776,18777,18778,18779,18780,18781,18782,18783,18784,18785,18786,18787,18788,18789,18790,18791,18792,18793,18794,18795,18796,18797,18798,18799,18800,18801,18802,18803,18804,18805,18806,18807,18808,18809,18810,18811,18812,18813,18814,18815,18816,18817,18818,18819,18820,18821,18822,18823,18824,18825,18826,18827,18828,18829,18830,18831,18832,18833,18834,18835,18836,18837,18838,18839,18840,18841,18842,18843,18844,18845,18846,18847,18848,18849,18850,18851,18852,18853,18854,18855,18856,18857,18858,18859,18860,18861,18862,18863,18864,18865,18866,18867,18868,18869,18870,18871,18872,18873,18874,18875,18876,18877,18878,18879,18880,18881,18882,18883,18884,18885,18886,18887,18888,18889,18890,18891,18892,18893,18894,18895,18896,18897,18898,18899,18900,18901,18902,18903,18904,18905,18906,18907,18908,18909,18910,18911,18912,18913,18914,18915,18916,18917,18918,18919,18920,18921,18922,18923,18924,18925,18926,18927,18928,18929,18930,18931,18932,18933,18934,18935,18936,18937,18938,18939,18940,18941,18942,18943,18944,18945,18946,18947,18948,18949,18950,18951,18952,18953,18954,18955,18956,18957,18958,18959,18960,18961,18962,18963,18964,18965,18966,18967,18968,18969,18970,18971,18972,18973,18974,18975,18976,18977,18978,18979,18980,18981,18982,18983,18984,18985,18986,18987,18988,18989,18990,18991,18992,18993,18994,18995,18996,18997,18998,18999,19000,19001,19002,19003,19004,19005,19006,19007,19008,19009,19010,19011,19012,19013,19014,19015,19016,19017,19018,19019,19020,19021,19022,19023,19024,19025,19026,19027,19028,19029,19030,19031,19032,19033,19034,19035,19036,19037,19038,19039,19040,19041,19042,19043,19044,19045,19046,19047,19048,19049,19050,19051,19052,19053,19054,19055,19056,19057,19058,19059,19060,19061,19062,19063,19064,19065,19066,19067,19068,19069,19070,19071,19072,19073,19074,19075,19076,19077,19078,19079,19080,19081,19082,19083,19084,19085,19086,19087,19088,19089,19090,19091,19092,19093,19094,19095,19096,19097,19098,19099,19100,19101,19102,19103,19104,19105,19106,19107,19108,19109,19110,19111,19112,19113,19114,19115,19116,19117,19118,19119,19120,19121,19122,19123,19124,19125,19126,19127,19128,19129,19130,19131,19132,19133,19134,19135,19136,19137,19138,19139,19140,19141,19142,19143,19144,19145,19146,19147,19148,19149,19150,19151,19152,19153,19154,19155,19156,19157,19158,19159,19160,19161,19162,19163,19164,19165,19166,19167,19168,19169,19170,19171,19172,19173,19174,19175,19176,19177,19178,19179,19180,19181,19182,19183,19184,19185,19186,19187,19188,19189,19190,19191,19192,19193,19194,19195,19196,19197,19198,19199,19200,19201,19202,19203,19204,19205,19206,19207,19208,19209,19210,19211,19212,19213,19214,19215,19216,19217,19218,19219,19220,19221,19222,19223,19224,19225,19226,19227,19228,19229,19230,19231,19232,19233,19234,19235,19236,19237,19238,19239,19240,19241,19242,19243,19244,19245,19246,19247,19248,19249,19250,19251,19252,19253,19254,19255,19256,19257,19258,19259,19260,19261,19262,19263,19264,19265,19266,19267,19268,19269,19270,19271,19272,19273,19274,19275,19276,19277,19278,19279,19280,19281,19282,19283,19284,19285,19286,19287,19288,19289,19290,19291,19292,19293,19294,19295,19296,19297,19298,19299,19300,19301,19302,19303,19304,19305,19306,19307,19308,19309,19310,19311,19312,19313,19314,19315,19316,19317,19318,19319,19320,19321,19322,19323,19324,19325,19326,19327,19328,19329,19330,19331,19332,19333,19334,19335,19336,19337,19338,19339,19340,19341,19342,19343,19344,19345,19346,19347,19348,19349,19350,19351,19352,19353,19354,19355,19356,19357,19358,19359,19360,19361,19362,19363,19364,19365,19366,19367,19368,19369,19370,19371,19372,19373,19374,19375,19376,19377,19378,19379,19380,19381,19382,19383,19384,19385,19386,19387,19388,19389,19390,19391,19392,19393,19394,19395,19396,19397,19398,19399,19400,19401,19402,19403,19404,19405,19406,19407,19408,19409,19410,19411,19412,19413,19414,19415,19416,19417,19418,19419,19420,19421,19422,19423,19424,19425,19426,19427,19428,19429,19430,19431,19432,19433,19434,19435,19436,19437,19438,19439,19440,19441,19442,19443,19444,19445,19446,19447,19448,19449,19450,19451,19452,19453,19454,19455,19456,19457,19458,19459,19460,19461,19462,19463,19464,19465,19466,19467,19468,19469,19470,19471,19472,19473,19474,19475,19476,19477,19478,19479,19480,19481,19482,19483,19484,19485,19486,19487,19488,19489,19490,19491,19492,19493,19494,19495,19496,19497,19498,19499,19500,19501,19502,19503,19504,19505,19506,19507,19508,19509,19510,19511,19512,19513,19514,19515,19516,19517,19518,19519,19520,19521,19522,19523,19524,19525,19526,19527,19528,19529,19530,19531,19532,19533,19534,19535,19536,19537,19538,19539,19540,19541,19542,19543,19544,19545,19546,19547,19548,19549,19550,19551,19552,19553,19554,19555,19556,19557,19558,19559,19560,19561,19562,19563,19564,19565,19566,19567,19568,19569,19570,19571,19572,19573,19574,19575,19576,19577,19578,19579,19580,19581,19582,19583,19584,19585,19586,19587,19588,19589,19590,19591,19592,19593,19594,19595,19596,19597,19598,19599,19600,19601,19602,19603,19604,19605,19606,19607,19608,19609,19610,19611,19612,19613,19614,19615,19616,19617,19618,19619,19620,19621,19622,19623,19624,19625,19626,19627,19628,19629,19630,19631,19632,19633,19634,19635,19636,19637,19638,19639,19640,19641,19642,19643,19644,19645,19646,19647,19648,19649,19650,19651,19652,19653,19654,19655,19656,19657,19658,19659,19660,19661,19662,19663,19664,19665,19666,19667,19668,19669,19670,19671,19672,19673,19674,19675,19676,19677,19678,19679,19680,19681,19682,19683,19684,19685,19686,19687,19688,19689,19690,19691,19692,19693,19694,19695,19696,19697,19698,19699,19700,19701,19702,19703,19704,19705,19706,19707,19708,19709,19710,19711,19712,19713,19714,19715,19716,19717,19718,19719,19720,19721,19722,19723,19724,19725,19726,19727,19728,19729,19730,19731,19732,19733,19734,19735,19736,19737,19738,19739,19740,19741,19742,19743,19744,19745,19746,19747,19748,19749,19750,19751,19752,19753,19754,19755,19756,19757,19758,19759,19760,19761,19762,19763,19764,19765,19766,19767,19768,19769,19770,19771,19772,19773,19774,19775,19776,19777,19778,19779,19780,19781,19782,19783,19784,19785,19786,19787,19788,19789,19790,19791,19792,19793,19794,19795,19796,19797,19798,19799,19800,19801,19802,19803,19804,19805,19806,19807,19808,19809,19810,19811,19812,19813,19814,19815,19816,19817,19818,19819,19820,19821,19822,19823,19824,19825,19826,19827,19828,19829,19830,19831,19832,19833,19834,19835,19836,19837,19838,19839,19840,19841,19842,19843,19844,19845,19846,19847,19848,19849,19850,19851,19852,19853,19854,19855,19856,19857,19858,19859,19860,19861,19862,19863,19864,19865,19866,19867,19868,19869,19870,19871,19872,19873,19874,19875,19876,19877,19878,19879,19880,19881,19882,19883,19884,19885,19886,19887,19888,19889,19890,19891,19892,19893,19968,19969,19970,19971,19972,19973,19974,19975,19976,19977,19978,19979,19980,19981,19982,19983,19984,19985,19986,19987,19988,19989,19990,19991,19992,19993,19994,19995,19996,19997,19998,19999,20000,20001,20002,20003,20004,20005,20006,20007,20008,20009,20010,20011,20012,20013,20014,20015,20016,20017,20018,20019,20020,20021,20022,20023,20024,20025,20026,20027,20028,20029,20030,20031,20032,20033,20034,20035,20036,20037,20038,20039,20040,20041,20042,20043,20044,20045,20046,20047,20048,20049,20050,20051,20052,20053,20054,20055,20056,20057,20058,20059,20060,20061,20062,20063,20064,20065,20066,20067,20068,20069,20070,20071,20072,20073,20074,20075,20076,20077,20078,20079,20080,20081,20082,20083,20084,20085,20086,20087,20088,20089,20090,20091,20092,20093,20094,20095,20096,20097,20098,20099,20100,20101,20102,20103,20104,20105,20106,20107,20108,20109,20110,20111,20112,20113,20114,20115,20116,20117,20118,20119,20120,20121,20122,20123,20124,20125,20126,20127,20128,20129,20130,20131,20132,20133,20134,20135,20136,20137,20138,20139,20140,20141,20142,20143,20144,20145,20146,20147,20148,20149,20150,20151,20152,20153,20154,20155,20156,20157,20158,20159,20160,20161,20162,20163,20164,20165,20166,20167,20168,20169,20170,20171,20172,20173,20174,20175,20176,20177,20178,20179,20180,20181,20182,20183,20184,20185,20186,20187,20188,20189,20190,20191,20192,20193,20194,20195,20196,20197,20198,20199,20200,20201,20202,20203,20204,20205,20206,20207,20208,20209,20210,20211,20212,20213,20214,20215,20216,20217,20218,20219,20220,20221,20222,20223,20224,20225,20226,20227,20228,20229,20230,20231,20232,20233,20234,20235,20236,20237,20238,20239,20240,20241,20242,20243,20244,20245,20246,20247,20248,20249,20250,20251,20252,20253,20254,20255,20256,20257,20258,20259,20260,20261,20262,20263,20264,20265,20266,20267,20268,20269,20270,20271,20272,20273,20274,20275,20276,20277,20278,20279,20280,20281,20282,20283,20284,20285,20286,20287,20288,20289,20290,20291,20292,20293,20294,20295,20296,20297,20298,20299,20300,20301,20302,20303,20304,20305,20306,20307,20308,20309,20310,20311,20312,20313,20314,20315,20316,20317,20318,20319,20320,20321,20322,20323,20324,20325,20326,20327,20328,20329,20330,20331,20332,20333,20334,20335,20336,20337,20338,20339,20340,20341,20342,20343,20344,20345,20346,20347,20348,20349,20350,20351,20352,20353,20354,20355,20356,20357,20358,20359,20360,20361,20362,20363,20364,20365,20366,20367,20368,20369,20370,20371,20372,20373,20374,20375,20376,20377,20378,20379,20380,20381,20382,20383,20384,20385,20386,20387,20388,20389,20390,20391,20392,20393,20394,20395,20396,20397,20398,20399,20400,20401,20402,20403,20404,20405,20406,20407,20408,20409,20410,20411,20412,20413,20414,20415,20416,20417,20418,20419,20420,20421,20422,20423,20424,20425,20426,20427,20428,20429,20430,20431,20432,20433,20434,20435,20436,20437,20438,20439,20440,20441,20442,20443,20444,20445,20446,20447,20448,20449,20450,20451,20452,20453,20454,20455,20456,20457,20458,20459,20460,20461,20462,20463,20464,20465,20466,20467,20468,20469,20470,20471,20472,20473,20474,20475,20476,20477,20478,20479,20480,20481,20482,20483,20484,20485,20486,20487,20488,20489,20490,20491,20492,20493,20494,20495,20496,20497,20498,20499,20500,20501,20502,20503,20504,20505,20506,20507,20508,20509,20510,20511,20512,20513,20514,20515,20516,20517,20518,20519,20520,20521,20522,20523,20524,20525,20526,20527,20528,20529,20530,20531,20532,20533,20534,20535,20536,20537,20538,20539,20540,20541,20542,20543,20544,20545,20546,20547,20548,20549,20550,20551,20552,20553,20554,20555,20556,20557,20558,20559,20560,20561,20562,20563,20564,20565,20566,20567,20568,20569,20570,20571,20572,20573,20574,20575,20576,20577,20578,20579,20580,20581,20582,20583,20584,20585,20586,20587,20588,20589,20590,20591,20592,20593,20594,20595,20596,20597,20598,20599,20600,20601,20602,20603,20604,20605,20606,20607,20608,20609,20610,20611,20612,20613,20614,20615,20616,20617,20618,20619,20620,20621,20622,20623,20624,20625,20626,20627,20628,20629,20630,20631,20632,20633,20634,20635,20636,20637,20638,20639,20640,20641,20642,20643,20644,20645,20646,20647,20648,20649,20650,20651,20652,20653,20654,20655,20656,20657,20658,20659,20660,20661,20662,20663,20664,20665,20666,20667,20668,20669,20670,20671,20672,20673,20674,20675,20676,20677,20678,20679,20680,20681,20682,20683,20684,20685,20686,20687,20688,20689,20690,20691,20692,20693,20694,20695,20696,20697,20698,20699,20700,20701,20702,20703,20704,20705,20706,20707,20708,20709,20710,20711,20712,20713,20714,20715,20716,20717,20718,20719,20720,20721,20722,20723,20724,20725,20726,20727,20728,20729,20730,20731,20732,20733,20734,20735,20736,20737,20738,20739,20740,20741,20742,20743,20744,20745,20746,20747,20748,20749,20750,20751,20752,20753,20754,20755,20756,20757,20758,20759,20760,20761,20762,20763,20764,20765,20766,20767,20768,20769,20770,20771,20772,20773,20774,20775,20776,20777,20778,20779,20780,20781,20782,20783,20784,20785,20786,20787,20788,20789,20790,20791,20792,20793,20794,20795,20796,20797,20798,20799,20800,20801,20802,20803,20804,20805,20806,20807,20808,20809,20810,20811,20812,20813,20814,20815,20816,20817,20818,20819,20820,20821,20822,20823,20824,20825,20826,20827,20828,20829,20830,20831,20832,20833,20834,20835,20836,20837,20838,20839,20840,20841,20842,20843,20844,20845,20846,20847,20848,20849,20850,20851,20852,20853,20854,20855,20856,20857,20858,20859,20860,20861,20862,20863,20864,20865,20866,20867,20868,20869,20870,20871,20872,20873,20874,20875,20876,20877,20878,20879,20880,20881,20882,20883,20884,20885,20886,20887,20888,20889,20890,20891,20892,20893,20894,20895,20896,20897,20898,20899,20900,20901,20902,20903,20904,20905,20906,20907,20908,20909,20910,20911,20912,20913,20914,20915,20916,20917,20918,20919,20920,20921,20922,20923,20924,20925,20926,20927,20928,20929,20930,20931,20932,20933,20934,20935,20936,20937,20938,20939,20940,20941,20942,20943,20944,20945,20946,20947,20948,20949,20950,20951,20952,20953,20954,20955,20956,20957,20958,20959,20960,20961,20962,20963,20964,20965,20966,20967,20968,20969,20970,20971,20972,20973,20974,20975,20976,20977,20978,20979,20980,20981,20982,20983,20984,20985,20986,20987,20988,20989,20990,20991,20992,20993,20994,20995,20996,20997,20998,20999,21000,21001,21002,21003,21004,21005,21006,21007,21008,21009,21010,21011,21012,21013,21014,21015,21016,21017,21018,21019,21020,21021,21022,21023,21024,21025,21026,21027,21028,21029,21030,21031,21032,21033,21034,21035,21036,21037,21038,21039,21040,21041,21042,21043,21044,21045,21046,21047,21048,21049,21050,21051,21052,21053,21054,21055,21056,21057,21058,21059,21060,21061,21062,21063,21064,21065,21066,21067,21068,21069,21070,21071,21072,21073,21074,21075,21076,21077,21078,21079,21080,21081,21082,21083,21084,21085,21086,21087,21088,21089,21090,21091,21092,21093,21094,21095,21096,21097,21098,21099,21100,21101,21102,21103,21104,21105,21106,21107,21108,21109,21110,21111,21112,21113,21114,21115,21116,21117,21118,21119,21120,21121,21122,21123,21124,21125,21126,21127,21128,21129,21130,21131,21132,21133,21134,21135,21136,21137,21138,21139,21140,21141,21142,21143,21144,21145,21146,21147,21148,21149,21150,21151,21152,21153,21154,21155,21156,21157,21158,21159,21160,21161,21162,21163,21164,21165,21166,21167,21168,21169,21170,21171,21172,21173,21174,21175,21176,21177,21178,21179,21180,21181,21182,21183,21184,21185,21186,21187,21188,21189,21190,21191,21192,21193,21194,21195,21196,21197,21198,21199,21200,21201,21202,21203,21204,21205,21206,21207,21208,21209,21210,21211,21212,21213,21214,21215,21216,21217,21218,21219,21220,21221,21222,21223,21224,21225,21226,21227,21228,21229,21230,21231,21232,21233,21234,21235,21236,21237,21238,21239,21240,21241,21242,21243,21244,21245,21246,21247,21248,21249,21250,21251,21252,21253,21254,21255,21256,21257,21258,21259,21260,21261,21262,21263,21264,21265,21266,21267,21268,21269,21270,21271,21272,21273,21274,21275,21276,21277,21278,21279,21280,21281,21282,21283,21284,21285,21286,21287,21288,21289,21290,21291,21292,21293,21294,21295,21296,21297,21298,21299,21300,21301,21302,21303,21304,21305,21306,21307,21308,21309,21310,21311,21312,21313,21314,21315,21316,21317,21318,21319,21320,21321,21322,21323,21324,21325,21326,21327,21328,21329,21330,21331,21332,21333,21334,21335,21336,21337,21338,21339,21340,21341,21342,21343,21344,21345,21346,21347,21348,21349,21350,21351,21352,21353,21354,21355,21356,21357,21358,21359,21360,21361,21362,21363,21364,21365,21366,21367,21368,21369,21370,21371,21372,21373,21374,21375,21376,21377,21378,21379,21380,21381,21382,21383,21384,21385,21386,21387,21388,21389,21390,21391,21392,21393,21394,21395,21396,21397,21398,21399,21400,21401,21402,21403,21404,21405,21406,21407,21408,21409,21410,21411,21412,21413,21414,21415,21416,21417,21418,21419,21420,21421,21422,21423,21424,21425,21426,21427,21428,21429,21430,21431,21432,21433,21434,21435,21436,21437,21438,21439,21440,21441,21442,21443,21444,21445,21446,21447,21448,21449,21450,21451,21452,21453,21454,21455,21456,21457,21458,21459,21460,21461,21462,21463,21464,21465,21466,21467,21468,21469,21470,21471,21472,21473,21474,21475,21476,21477,21478,21479,21480,21481,21482,21483,21484,21485,21486,21487,21488,21489,21490,21491,21492,21493,21494,21495,21496,21497,21498,21499,21500,21501,21502,21503,21504,21505,21506,21507,21508,21509,21510,21511,21512,21513,21514,21515,21516,21517,21518,21519,21520,21521,21522,21523,21524,21525,21526,21527,21528,21529,21530,21531,21532,21533,21534,21535,21536,21537,21538,21539,21540,21541,21542,21543,21544,21545,21546,21547,21548,21549,21550,21551,21552,21553,21554,21555,21556,21557,21558,21559,21560,21561,21562,21563,21564,21565,21566,21567,21568,21569,21570,21571,21572,21573,21574,21575,21576,21577,21578,21579,21580,21581,21582,21583,21584,21585,21586,21587,21588,21589,21590,21591,21592,21593,21594,21595,21596,21597,21598,21599,21600,21601,21602,21603,21604,21605,21606,21607,21608,21609,21610,21611,21612,21613,21614,21615,21616,21617,21618,21619,21620,21621,21622,21623,21624,21625,21626,21627,21628,21629,21630,21631,21632,21633,21634,21635,21636,21637,21638,21639,21640,21641,21642,21643,21644,21645,21646,21647,21648,21649,21650,21651,21652,21653,21654,21655,21656,21657,21658,21659,21660,21661,21662,21663,21664,21665,21666,21667,21668,21669,21670,21671,21672,21673,21674,21675,21676,21677,21678,21679,21680,21681,21682,21683,21684,21685,21686,21687,21688,21689,21690,21691,21692,21693,21694,21695,21696,21697,21698,21699,21700,21701,21702,21703,21704,21705,21706,21707,21708,21709,21710,21711,21712,21713,21714,21715,21716,21717,21718,21719,21720,21721,21722,21723,21724,21725,21726,21727,21728,21729,21730,21731,21732,21733,21734,21735,21736,21737,21738,21739,21740,21741,21742,21743,21744,21745,21746,21747,21748,21749,21750,21751,21752,21753,21754,21755,21756,21757,21758,21759,21760,21761,21762,21763,21764,21765,21766,21767,21768,21769,21770,21771,21772,21773,21774,21775,21776,21777,21778,21779,21780,21781,21782,21783,21784,21785,21786,21787,21788,21789,21790,21791,21792,21793,21794,21795,21796,21797,21798,21799,21800,21801,21802,21803,21804,21805,21806,21807,21808,21809,21810,21811,21812,21813,21814,21815,21816,21817,21818,21819,21820,21821,21822,21823,21824,21825,21826,21827,21828,21829,21830,21831,21832,21833,21834,21835,21836,21837,21838,21839,21840,21841,21842,21843,21844,21845,21846,21847,21848,21849,21850,21851,21852,21853,21854,21855,21856,21857,21858,21859,21860,21861,21862,21863,21864,21865,21866,21867,21868,21869,21870,21871,21872,21873,21874,21875,21876,21877,21878,21879,21880,21881,21882,21883,21884,21885,21886,21887,21888,21889,21890,21891,21892,21893,21894,21895,21896,21897,21898,21899,21900,21901,21902,21903,21904,21905,21906,21907,21908,21909,21910,21911,21912,21913,21914,21915,21916,21917,21918,21919,21920,21921,21922,21923,21924,21925,21926,21927,21928,21929,21930,21931,21932,21933,21934,21935,21936,21937,21938,21939,21940,21941,21942,21943,21944,21945,21946,21947,21948,21949,21950,21951,21952,21953,21954,21955,21956,21957,21958,21959,21960,21961,21962,21963,21964,21965,21966,21967,21968,21969,21970,21971,21972,21973,21974,21975,21976,21977,21978,21979,21980,21981,21982,21983,21984,21985,21986,21987,21988,21989,21990,21991,21992,21993,21994,21995,21996,21997,21998,21999,22000,22001,22002,22003,22004,22005,22006,22007,22008,22009,22010,22011,22012,22013,22014,22015,22016,22017,22018,22019,22020,22021,22022,22023,22024,22025,22026,22027,22028,22029,22030,22031,22032,22033,22034,22035,22036,22037,22038,22039,22040,22041,22042,22043,22044,22045,22046,22047,22048,22049,22050,22051,22052,22053,22054,22055,22056,22057,22058,22059,22060,22061,22062,22063,22064,22065,22066,22067,22068,22069,22070,22071,22072,22073,22074,22075,22076,22077,22078,22079,22080,22081,22082,22083,22084,22085,22086,22087,22088,22089,22090,22091,22092,22093,22094,22095,22096,22097,22098,22099,22100,22101,22102,22103,22104,22105,22106,22107,22108,22109,22110,22111,22112,22113,22114,22115,22116,22117,22118,22119,22120,22121,22122,22123,22124,22125,22126,22127,22128,22129,22130,22131,22132,22133,22134,22135,22136,22137,22138,22139,22140,22141,22142,22143,22144,22145,22146,22147,22148,22149,22150,22151,22152,22153,22154,22155,22156,22157,22158,22159,22160,22161,22162,22163,22164,22165,22166,22167,22168,22169,22170,22171,22172,22173,22174,22175,22176,22177,22178,22179,22180,22181,22182,22183,22184,22185,22186,22187,22188,22189,22190,22191,22192,22193,22194,22195,22196,22197,22198,22199,22200,22201,22202,22203,22204,22205,22206,22207,22208,22209,22210,22211,22212,22213,22214,22215,22216,22217,22218,22219,22220,22221,22222,22223,22224,22225,22226,22227,22228,22229,22230,22231,22232,22233,22234,22235,22236,22237,22238,22239,22240,22241,22242,22243,22244,22245,22246,22247,22248,22249,22250,22251,22252,22253,22254,22255,22256,22257,22258,22259,22260,22261,22262,22263,22264,22265,22266,22267,22268,22269,22270,22271,22272,22273,22274,22275,22276,22277,22278,22279,22280,22281,22282,22283,22284,22285,22286,22287,22288,22289,22290,22291,22292,22293,22294,22295,22296,22297,22298,22299,22300,22301,22302,22303,22304,22305,22306,22307,22308,22309,22310,22311,22312,22313,22314,22315,22316,22317,22318,22319,22320,22321,22322,22323,22324,22325,22326,22327,22328,22329,22330,22331,22332,22333,22334,22335,22336,22337,22338,22339,22340,22341,22342,22343,22344,22345,22346,22347,22348,22349,22350,22351,22352,22353,22354,22355,22356,22357,22358,22359,22360,22361,22362,22363,22364,22365,22366,22367,22368,22369,22370,22371,22372,22373,22374,22375,22376,22377,22378,22379,22380,22381,22382,22383,22384,22385,22386,22387,22388,22389,22390,22391,22392,22393,22394,22395,22396,22397,22398,22399,22400,22401,22402,22403,22404,22405,22406,22407,22408,22409,22410,22411,22412,22413,22414,22415,22416,22417,22418,22419,22420,22421,22422,22423,22424,22425,22426,22427,22428,22429,22430,22431,22432,22433,22434,22435,22436,22437,22438,22439,22440,22441,22442,22443,22444,22445,22446,22447,22448,22449,22450,22451,22452,22453,22454,22455,22456,22457,22458,22459,22460,22461,22462,22463,22464,22465,22466,22467,22468,22469,22470,22471,22472,22473,22474,22475,22476,22477,22478,22479,22480,22481,22482,22483,22484,22485,22486,22487,22488,22489,22490,22491,22492,22493,22494,22495,22496,22497,22498,22499,22500,22501,22502,22503,22504,22505,22506,22507,22508,22509,22510,22511,22512,22513,22514,22515,22516,22517,22518,22519,22520,22521,22522,22523,22524,22525,22526,22527,22528,22529,22530,22531,22532,22533,22534,22535,22536,22537,22538,22539,22540,22541,22542,22543,22544,22545,22546,22547,22548,22549,22550,22551,22552,22553,22554,22555,22556,22557,22558,22559,22560,22561,22562,22563,22564,22565,22566,22567,22568,22569,22570,22571,22572,22573,22574,22575,22576,22577,22578,22579,22580,22581,22582,22583,22584,22585,22586,22587,22588,22589,22590,22591,22592,22593,22594,22595,22596,22597,22598,22599,22600,22601,22602,22603,22604,22605,22606,22607,22608,22609,22610,22611,22612,22613,22614,22615,22616,22617,22618,22619,22620,22621,22622,22623,22624,22625,22626,22627,22628,22629,22630,22631,22632,22633,22634,22635,22636,22637,22638,22639,22640,22641,22642,22643,22644,22645,22646,22647,22648,22649,22650,22651,22652,22653,22654,22655,22656,22657,22658,22659,22660,22661,22662,22663,22664,22665,22666,22667,22668,22669,22670,22671,22672,22673,22674,22675,22676,22677,22678,22679,22680,22681,22682,22683,22684,22685,22686,22687,22688,22689,22690,22691,22692,22693,22694,22695,22696,22697,22698,22699,22700,22701,22702,22703,22704,22705,22706,22707,22708,22709,22710,22711,22712,22713,22714,22715,22716,22717,22718,22719,22720,22721,22722,22723,22724,22725,22726,22727,22728,22729,22730,22731,22732,22733,22734,22735,22736,22737,22738,22739,22740,22741,22742,22743,22744,22745,22746,22747,22748,22749,22750,22751,22752,22753,22754,22755,22756,22757,22758,22759,22760,22761,22762,22763,22764,22765,22766,22767,22768,22769,22770,22771,22772,22773,22774,22775,22776,22777,22778,22779,22780,22781,22782,22783,22784,22785,22786,22787,22788,22789,22790,22791,22792,22793,22794,22795,22796,22797,22798,22799,22800,22801,22802,22803,22804,22805,22806,22807,22808,22809,22810,22811,22812,22813,22814,22815,22816,22817,22818,22819,22820,22821,22822,22823,22824,22825,22826,22827,22828,22829,22830,22831,22832,22833,22834,22835,22836,22837,22838,22839,22840,22841,22842,22843,22844,22845,22846,22847,22848,22849,22850,22851,22852,22853,22854,22855,22856,22857,22858,22859,22860,22861,22862,22863,22864,22865,22866,22867,22868,22869,22870,22871,22872,22873,22874,22875,22876,22877,22878,22879,22880,22881,22882,22883,22884,22885,22886,22887,22888,22889,22890,22891,22892,22893,22894,22895,22896,22897,22898,22899,22900,22901,22902,22903,22904,22905,22906,22907,22908,22909,22910,22911,22912,22913,22914,22915,22916,22917,22918,22919,22920,22921,22922,22923,22924,22925,22926,22927,22928,22929,22930,22931,22932,22933,22934,22935,22936,22937,22938,22939,22940,22941,22942,22943,22944,22945,22946,22947,22948,22949,22950,22951,22952,22953,22954,22955,22956,22957,22958,22959,22960,22961,22962,22963,22964,22965,22966,22967,22968,22969,22970,22971,22972,22973,22974,22975,22976,22977,22978,22979,22980,22981,22982,22983,22984,22985,22986,22987,22988,22989,22990,22991,22992,22993,22994,22995,22996,22997,22998,22999,23000,23001,23002,23003,23004,23005,23006,23007,23008,23009,23010,23011,23012,23013,23014,23015,23016,23017,23018,23019,23020,23021,23022,23023,23024,23025,23026,23027,23028,23029,23030,23031,23032,23033,23034,23035,23036,23037,23038,23039,23040,23041,23042,23043,23044,23045,23046,23047,23048,23049,23050,23051,23052,23053,23054,23055,23056,23057,23058,23059,23060,23061,23062,23063,23064,23065,23066,23067,23068,23069,23070,23071,23072,23073,23074,23075,23076,23077,23078,23079,23080,23081,23082,23083,23084,23085,23086,23087,23088,23089,23090,23091,23092,23093,23094,23095,23096,23097,23098,23099,23100,23101,23102,23103,23104,23105,23106,23107,23108,23109,23110,23111,23112,23113,23114,23115,23116,23117,23118,23119,23120,23121,23122,23123,23124,23125,23126,23127,23128,23129,23130,23131,23132,23133,23134,23135,23136,23137,23138,23139,23140,23141,23142,23143,23144,23145,23146,23147,23148,23149,23150,23151,23152,23153,23154,23155,23156,23157,23158,23159,23160,23161,23162,23163,23164,23165,23166,23167,23168,23169,23170,23171,23172,23173,23174,23175,23176,23177,23178,23179,23180,23181,23182,23183,23184,23185,23186,23187,23188,23189,23190,23191,23192,23193,23194,23195,23196,23197,23198,23199,23200,23201,23202,23203,23204,23205,23206,23207,23208,23209,23210,23211,23212,23213,23214,23215,23216,23217,23218,23219,23220,23221,23222,23223,23224,23225,23226,23227,23228,23229,23230,23231,23232,23233,23234,23235,23236,23237,23238,23239,23240,23241,23242,23243,23244,23245,23246,23247,23248,23249,23250,23251,23252,23253,23254,23255,23256,23257,23258,23259,23260,23261,23262,23263,23264,23265,23266,23267,23268,23269,23270,23271,23272,23273,23274,23275,23276,23277,23278,23279,23280,23281,23282,23283,23284,23285,23286,23287,23288,23289,23290,23291,23292,23293,23294,23295,23296,23297,23298,23299,23300,23301,23302,23303,23304,23305,23306,23307,23308,23309,23310,23311,23312,23313,23314,23315,23316,23317,23318,23319,23320,23321,23322,23323,23324,23325,23326,23327,23328,23329,23330,23331,23332,23333,23334,23335,23336,23337,23338,23339,23340,23341,23342,23343,23344,23345,23346,23347,23348,23349,23350,23351,23352,23353,23354,23355,23356,23357,23358,23359,23360,23361,23362,23363,23364,23365,23366,23367,23368,23369,23370,23371,23372,23373,23374,23375,23376,23377,23378,23379,23380,23381,23382,23383,23384,23385,23386,23387,23388,23389,23390,23391,23392,23393,23394,23395,23396,23397,23398,23399,23400,23401,23402,23403,23404,23405,23406,23407,23408,23409,23410,23411,23412,23413,23414,23415,23416,23417,23418,23419,23420,23421,23422,23423,23424,23425,23426,23427,23428,23429,23430,23431,23432,23433,23434,23435,23436,23437,23438,23439,23440,23441,23442,23443,23444,23445,23446,23447,23448,23449,23450,23451,23452,23453,23454,23455,23456,23457,23458,23459,23460,23461,23462,23463,23464,23465,23466,23467,23468,23469,23470,23471,23472,23473,23474,23475,23476,23477,23478,23479,23480,23481,23482,23483,23484,23485,23486,23487,23488,23489,23490,23491,23492,23493,23494,23495,23496,23497,23498,23499,23500,23501,23502,23503,23504,23505,23506,23507,23508,23509,23510,23511,23512,23513,23514,23515,23516,23517,23518,23519,23520,23521,23522,23523,23524,23525,23526,23527,23528,23529,23530,23531,23532,23533,23534,23535,23536,23537,23538,23539,23540,23541,23542,23543,23544,23545,23546,23547,23548,23549,23550,23551,23552,23553,23554,23555,23556,23557,23558,23559,23560,23561,23562,23563,23564,23565,23566,23567,23568,23569,23570,23571,23572,23573,23574,23575,23576,23577,23578,23579,23580,23581,23582,23583,23584,23585,23586,23587,23588,23589,23590,23591,23592,23593,23594,23595,23596,23597,23598,23599,23600,23601,23602,23603,23604,23605,23606,23607,23608,23609,23610,23611,23612,23613,23614,23615,23616,23617,23618,23619,23620,23621,23622,23623,23624,23625,23626,23627,23628,23629,23630,23631,23632,23633,23634,23635,23636,23637,23638,23639,23640,23641,23642,23643,23644,23645,23646,23647,23648,23649,23650,23651,23652,23653,23654,23655,23656,23657,23658,23659,23660,23661,23662,23663,23664,23665,23666,23667,23668,23669,23670,23671,23672,23673,23674,23675,23676,23677,23678,23679,23680,23681,23682,23683,23684,23685,23686,23687,23688,23689,23690,23691,23692,23693,23694,23695,23696,23697,23698,23699,23700,23701,23702,23703,23704,23705,23706,23707,23708,23709,23710,23711,23712,23713,23714,23715,23716,23717,23718,23719,23720,23721,23722,23723,23724,23725,23726,23727,23728,23729,23730,23731,23732,23733,23734,23735,23736,23737,23738,23739,23740,23741,23742,23743,23744,23745,23746,23747,23748,23749,23750,23751,23752,23753,23754,23755,23756,23757,23758,23759,23760,23761,23762,23763,23764,23765,23766,23767,23768,23769,23770,23771,23772,23773,23774,23775,23776,23777,23778,23779,23780,23781,23782,23783,23784,23785,23786,23787,23788,23789,23790,23791,23792,23793,23794,23795,23796,23797,23798,23799,23800,23801,23802,23803,23804,23805,23806,23807,23808,23809,23810,23811,23812,23813,23814,23815,23816,23817,23818,23819,23820,23821,23822,23823,23824,23825,23826,23827,23828,23829,23830,23831,23832,23833,23834,23835,23836,23837,23838,23839,23840,23841,23842,23843,23844,23845,23846,23847,23848,23849,23850,23851,23852,23853,23854,23855,23856,23857,23858,23859,23860,23861,23862,23863,23864,23865,23866,23867,23868,23869,23870,23871,23872,23873,23874,23875,23876,23877,23878,23879,23880,23881,23882,23883,23884,23885,23886,23887,23888,23889,23890,23891,23892,23893,23894,23895,23896,23897,23898,23899,23900,23901,23902,23903,23904,23905,23906,23907,23908,23909,23910,23911,23912,23913,23914,23915,23916,23917,23918,23919,23920,23921,23922,23923,23924,23925,23926,23927,23928,23929,23930,23931,23932,23933,23934,23935,23936,23937,23938,23939,23940,23941,23942,23943,23944,23945,23946,23947,23948,23949,23950,23951,23952,23953,23954,23955,23956,23957,23958,23959,23960,23961,23962,23963,23964,23965,23966,23967,23968,23969,23970,23971,23972,23973,23974,23975,23976,23977,23978,23979,23980,23981,23982,23983,23984,23985,23986,23987,23988,23989,23990,23991,23992,23993,23994,23995,23996,23997,23998,23999,24000,24001,24002,24003,24004,24005,24006,24007,24008,24009,24010,24011,24012,24013,24014,24015,24016,24017,24018,24019,24020,24021,24022,24023,24024,24025,24026,24027,24028,24029,24030,24031,24032,24033,24034,24035,24036,24037,24038,24039,24040,24041,24042,24043,24044,24045,24046,24047,24048,24049,24050,24051,24052,24053,24054,24055,24056,24057,24058,24059,24060,24061,24062,24063,24064,24065,24066,24067,24068,24069,24070,24071,24072,24073,24074,24075,24076,24077,24078,24079,24080,24081,24082,24083,24084,24085,24086,24087,24088,24089,24090,24091,24092,24093,24094,24095,24096,24097,24098,24099,24100,24101,24102,24103,24104,24105,24106,24107,24108,24109,24110,24111,24112,24113,24114,24115,24116,24117,24118,24119,24120,24121,24122,24123,24124,24125,24126,24127,24128,24129,24130,24131,24132,24133,24134,24135,24136,24137,24138,24139,24140,24141,24142,24143,24144,24145,24146,24147,24148,24149,24150,24151,24152,24153,24154,24155,24156,24157,24158,24159,24160,24161,24162,24163,24164,24165,24166,24167,24168,24169,24170,24171,24172,24173,24174,24175,24176,24177,24178,24179,24180,24181,24182,24183,24184,24185,24186,24187,24188,24189,24190,24191,24192,24193,24194,24195,24196,24197,24198,24199,24200,24201,24202,24203,24204,24205,24206,24207,24208,24209,24210,24211,24212,24213,24214,24215,24216,24217,24218,24219,24220,24221,24222,24223,24224,24225,24226,24227,24228,24229,24230,24231,24232,24233,24234,24235,24236,24237,24238,24239,24240,24241,24242,24243,24244,24245,24246,24247,24248,24249,24250,24251,24252,24253,24254,24255,24256,24257,24258,24259,24260,24261,24262,24263,24264,24265,24266,24267,24268,24269,24270,24271,24272,24273,24274,24275,24276,24277,24278,24279,24280,24281,24282,24283,24284,24285,24286,24287,24288,24289,24290,24291,24292,24293,24294,24295,24296,24297,24298,24299,24300,24301,24302,24303,24304,24305,24306,24307,24308,24309,24310,24311,24312,24313,24314,24315,24316,24317,24318,24319,24320,24321,24322,24323,24324,24325,24326,24327,24328,24329,24330,24331,24332,24333,24334,24335,24336,24337,24338,24339,24340,24341,24342,24343,24344,24345,24346,24347,24348,24349,24350,24351,24352,24353,24354,24355,24356,24357,24358,24359,24360,24361,24362,24363,24364,24365,24366,24367,24368,24369,24370,24371,24372,24373,24374,24375,24376,24377,24378,24379,24380,24381,24382,24383,24384,24385,24386,24387,24388,24389,24390,24391,24392,24393,24394,24395,24396,24397,24398,24399,24400,24401,24402,24403,24404,24405,24406,24407,24408,24409,24410,24411,24412,24413,24414,24415,24416,24417,24418,24419,24420,24421,24422,24423,24424,24425,24426,24427,24428,24429,24430,24431,24432,24433,24434,24435,24436,24437,24438,24439,24440,24441,24442,24443,24444,24445,24446,24447,24448,24449,24450,24451,24452,24453,24454,24455,24456,24457,24458,24459,24460,24461,24462,24463,24464,24465,24466,24467,24468,24469,24470,24471,24472,24473,24474,24475,24476,24477,24478,24479,24480,24481,24482,24483,24484,24485,24486,24487,24488,24489,24490,24491,24492,24493,24494,24495,24496,24497,24498,24499,24500,24501,24502,24503,24504,24505,24506,24507,24508,24509,24510,24511,24512,24513,24514,24515,24516,24517,24518,24519,24520,24521,24522,24523,24524,24525,24526,24527,24528,24529,24530,24531,24532,24533,24534,24535,24536,24537,24538,24539,24540,24541,24542,24543,24544,24545,24546,24547,24548,24549,24550,24551,24552,24553,24554,24555,24556,24557,24558,24559,24560,24561,24562,24563,24564,24565,24566,24567,24568,24569,24570,24571,24572,24573,24574,24575,24576,24577,24578,24579,24580,24581,24582,24583,24584,24585,24586,24587,24588,24589,24590,24591,24592,24593,24594,24595,24596,24597,24598,24599,24600,24601,24602,24603,24604,24605,24606,24607,24608,24609,24610,24611,24612,24613,24614,24615,24616,24617,24618,24619,24620,24621,24622,24623,24624,24625,24626,24627,24628,24629,24630,24631,24632,24633,24634,24635,24636,24637,24638,24639,24640,24641,24642,24643,24644,24645,24646,24647,24648,24649,24650,24651,24652,24653,24654,24655,24656,24657,24658,24659,24660,24661,24662,24663,24664,24665,24666,24667,24668,24669,24670,24671,24672,24673,24674,24675,24676,24677,24678,24679,24680,24681,24682,24683,24684,24685,24686,24687,24688,24689,24690,24691,24692,24693,24694,24695,24696,24697,24698,24699,24700,24701,24702,24703,24704,24705,24706,24707,24708,24709,24710,24711,24712,24713,24714,24715,24716,24717,24718,24719,24720,24721,24722,24723,24724,24725,24726,24727,24728,24729,24730,24731,24732,24733,24734,24735,24736,24737,24738,24739,24740,24741,24742,24743,24744,24745,24746,24747,24748,24749,24750,24751,24752,24753,24754,24755,24756,24757,24758,24759,24760,24761,24762,24763,24764,24765,24766,24767,24768,24769,24770,24771,24772,24773,24774,24775,24776,24777,24778,24779,24780,24781,24782,24783,24784,24785,24786,24787,24788,24789,24790,24791,24792,24793,24794,24795,24796,24797,24798,24799,24800,24801,24802,24803,24804,24805,24806,24807,24808,24809,24810,24811,24812,24813,24814,24815,24816,24817,24818,24819,24820,24821,24822,24823,24824,24825,24826,24827,24828,24829,24830,24831,24832,24833,24834,24835,24836,24837,24838,24839,24840,24841,24842,24843,24844,24845,24846,24847,24848,24849,24850,24851,24852,24853,24854,24855,24856,24857,24858,24859,24860,24861,24862,24863,24864,24865,24866,24867,24868,24869,24870,24871,24872,24873,24874,24875,24876,24877,24878,24879,24880,24881,24882,24883,24884,24885,24886,24887,24888,24889,24890,24891,24892,24893,24894,24895,24896,24897,24898,24899,24900,24901,24902,24903,24904,24905,24906,24907,24908,24909,24910,24911,24912,24913,24914,24915,24916,24917,24918,24919,24920,24921,24922,24923,24924,24925,24926,24927,24928,24929,24930,24931,24932,24933,24934,24935,24936,24937,24938,24939,24940,24941,24942,24943,24944,24945,24946,24947,24948,24949,24950,24951,24952,24953,24954,24955,24956,24957,24958,24959,24960,24961,24962,24963,24964,24965,24966,24967,24968,24969,24970,24971,24972,24973,24974,24975,24976,24977,24978,24979,24980,24981,24982,24983,24984,24985,24986,24987,24988,24989,24990,24991,24992,24993,24994,24995,24996,24997,24998,24999,25000,25001,25002,25003,25004,25005,25006,25007,25008,25009,25010,25011,25012,25013,25014,25015,25016,25017,25018,25019,25020,25021,25022,25023,25024,25025,25026,25027,25028,25029,25030,25031,25032,25033,25034,25035,25036,25037,25038,25039,25040,25041,25042,25043,25044,25045,25046,25047,25048,25049,25050,25051,25052,25053,25054,25055,25056,25057,25058,25059,25060,25061,25062,25063,25064,25065,25066,25067,25068,25069,25070,25071,25072,25073,25074,25075,25076,25077,25078,25079,25080,25081,25082,25083,25084,25085,25086,25087,25088,25089,25090,25091,25092,25093,25094,25095,25096,25097,25098,25099,25100,25101,25102,25103,25104,25105,25106,25107,25108,25109,25110,25111,25112,25113,25114,25115,25116,25117,25118,25119,25120,25121,25122,25123,25124,25125,25126,25127,25128,25129,25130,25131,25132,25133,25134,25135,25136,25137,25138,25139,25140,25141,25142,25143,25144,25145,25146,25147,25148,25149,25150,25151,25152,25153,25154,25155,25156,25157,25158,25159,25160,25161,25162,25163,25164,25165,25166,25167,25168,25169,25170,25171,25172,25173,25174,25175,25176,25177,25178,25179,25180,25181,25182,25183,25184,25185,25186,25187,25188,25189,25190,25191,25192,25193,25194,25195,25196,25197,25198,25199,25200,25201,25202,25203,25204,25205,25206,25207,25208,25209,25210,25211,25212,25213,25214,25215,25216,25217,25218,25219,25220,25221,25222,25223,25224,25225,25226,25227,25228,25229,25230,25231,25232,25233,25234,25235,25236,25237,25238,25239,25240,25241,25242,25243,25244,25245,25246,25247,25248,25249,25250,25251,25252,25253,25254,25255,25256,25257,25258,25259,25260,25261,25262,25263,25264,25265,25266,25267,25268,25269,25270,25271,25272,25273,25274,25275,25276,25277,25278,25279,25280,25281,25282,25283,25284,25285,25286,25287,25288,25289,25290,25291,25292,25293,25294,25295,25296,25297,25298,25299,25300,25301,25302,25303,25304,25305,25306,25307,25308,25309,25310,25311,25312,25313,25314,25315,25316,25317,25318,25319,25320,25321,25322,25323,25324,25325,25326,25327,25328,25329,25330,25331,25332,25333,25334,25335,25336,25337,25338,25339,25340,25341,25342,25343,25344,25345,25346,25347,25348,25349,25350,25351,25352,25353,25354,25355,25356,25357,25358,25359,25360,25361,25362,25363,25364,25365,25366,25367,25368,25369,25370,25371,25372,25373,25374,25375,25376,25377,25378,25379,25380,25381,25382,25383,25384,25385,25386,25387,25388,25389,25390,25391,25392,25393,25394,25395,25396,25397,25398,25399,25400,25401,25402,25403,25404,25405,25406,25407,25408,25409,25410,25411,25412,25413,25414,25415,25416,25417,25418,25419,25420,25421,25422,25423,25424,25425,25426,25427,25428,25429,25430,25431,25432,25433,25434,25435,25436,25437,25438,25439,25440,25441,25442,25443,25444,25445,25446,25447,25448,25449,25450,25451,25452,25453,25454,25455,25456,25457,25458,25459,25460,25461,25462,25463,25464,25465,25466,25467,25468,25469,25470,25471,25472,25473,25474,25475,25476,25477,25478,25479,25480,25481,25482,25483,25484,25485,25486,25487,25488,25489,25490,25491,25492,25493,25494,25495,25496,25497,25498,25499,25500,25501,25502,25503,25504,25505,25506,25507,25508,25509,25510,25511,25512,25513,25514,25515,25516,25517,25518,25519,25520,25521,25522,25523,25524,25525,25526,25527,25528,25529,25530,25531,25532,25533,25534,25535,25536,25537,25538,25539,25540,25541,25542,25543,25544,25545,25546,25547,25548,25549,25550,25551,25552,25553,25554,25555,25556,25557,25558,25559,25560,25561,25562,25563,25564,25565,25566,25567,25568,25569,25570,25571,25572,25573,25574,25575,25576,25577,25578,25579,25580,25581,25582,25583,25584,25585,25586,25587,25588,25589,25590,25591,25592,25593,25594,25595,25596,25597,25598,25599,25600,25601,25602,25603,25604,25605,25606,25607,25608,25609,25610,25611,25612,25613,25614,25615,25616,25617,25618,25619,25620,25621,25622,25623,25624,25625,25626,25627,25628,25629,25630,25631,25632,25633,25634,25635,25636,25637,25638,25639,25640,25641,25642,25643,25644,25645,25646,25647,25648,25649,25650,25651,25652,25653,25654,25655,25656,25657,25658,25659,25660,25661,25662,25663,25664,25665,25666,25667,25668,25669,25670,25671,25672,25673,25674,25675,25676,25677,25678,25679,25680,25681,25682,25683,25684,25685,25686,25687,25688,25689,25690,25691,25692,25693,25694,25695,25696,25697,25698,25699,25700,25701,25702,25703,25704,25705,25706,25707,25708,25709,25710,25711,25712,25713,25714,25715,25716,25717,25718,25719,25720,25721,25722,25723,25724,25725,25726,25727,25728,25729,25730,25731,25732,25733,25734,25735,25736,25737,25738,25739,25740,25741,25742,25743,25744,25745,25746,25747,25748,25749,25750,25751,25752,25753,25754,25755,25756,25757,25758,25759,25760,25761,25762,25763,25764,25765,25766,25767,25768,25769,25770,25771,25772,25773,25774,25775,25776,25777,25778,25779,25780,25781,25782,25783,25784,25785,25786,25787,25788,25789,25790,25791,25792,25793,25794,25795,25796,25797,25798,25799,25800,25801,25802,25803,25804,25805,25806,25807,25808,25809,25810,25811,25812,25813,25814,25815,25816,25817,25818,25819,25820,25821,25822,25823,25824,25825,25826,25827,25828,25829,25830,25831,25832,25833,25834,25835,25836,25837,25838,25839,25840,25841,25842,25843,25844,25845,25846,25847,25848,25849,25850,25851,25852,25853,25854,25855,25856,25857,25858,25859,25860,25861,25862,25863,25864,25865,25866,25867,25868,25869,25870,25871,25872,25873,25874,25875,25876,25877,25878,25879,25880,25881,25882,25883,25884,25885,25886,25887,25888,25889,25890,25891,25892,25893,25894,25895,25896,25897,25898,25899,25900,25901,25902,25903,25904,25905,25906,25907,25908,25909,25910,25911,25912,25913,25914,25915,25916,25917,25918,25919,25920,25921,25922,25923,25924,25925,25926,25927,25928,25929,25930,25931,25932,25933,25934,25935,25936,25937,25938,25939,25940,25941,25942,25943,25944,25945,25946,25947,25948,25949,25950,25951,25952,25953,25954,25955,25956,25957,25958,25959,25960,25961,25962,25963,25964,25965,25966,25967,25968,25969,25970,25971,25972,25973,25974,25975,25976,25977,25978,25979,25980,25981,25982,25983,25984,25985,25986,25987,25988,25989,25990,25991,25992,25993,25994,25995,25996,25997,25998,25999,26000,26001,26002,26003,26004,26005,26006,26007,26008,26009,26010,26011,26012,26013,26014,26015,26016,26017,26018,26019,26020,26021,26022,26023,26024,26025,26026,26027,26028,26029,26030,26031,26032,26033,26034,26035,26036,26037,26038,26039,26040,26041,26042,26043,26044,26045,26046,26047,26048,26049,26050,26051,26052,26053,26054,26055,26056,26057,26058,26059,26060,26061,26062,26063,26064,26065,26066,26067,26068,26069,26070,26071,26072,26073,26074,26075,26076,26077,26078,26079,26080,26081,26082,26083,26084,26085,26086,26087,26088,26089,26090,26091,26092,26093,26094,26095,26096,26097,26098,26099,26100,26101,26102,26103,26104,26105,26106,26107,26108,26109,26110,26111,26112,26113,26114,26115,26116,26117,26118,26119,26120,26121,26122,26123,26124,26125,26126,26127,26128,26129,26130,26131,26132,26133,26134,26135,26136,26137,26138,26139,26140,26141,26142,26143,26144,26145,26146,26147,26148,26149,26150,26151,26152,26153,26154,26155,26156,26157,26158,26159,26160,26161,26162,26163,26164,26165,26166,26167,26168,26169,26170,26171,26172,26173,26174,26175,26176,26177,26178,26179,26180,26181,26182,26183,26184,26185,26186,26187,26188,26189,26190,26191,26192,26193,26194,26195,26196,26197,26198,26199,26200,26201,26202,26203,26204,26205,26206,26207,26208,26209,26210,26211,26212,26213,26214,26215,26216,26217,26218,26219,26220,26221,26222,26223,26224,26225,26226,26227,26228,26229,26230,26231,26232,26233,26234,26235,26236,26237,26238,26239,26240,26241,26242,26243,26244,26245,26246,26247,26248,26249,26250,26251,26252,26253,26254,26255,26256,26257,26258,26259,26260,26261,26262,26263,26264,26265,26266,26267,26268,26269,26270,26271,26272,26273,26274,26275,26276,26277,26278,26279,26280,26281,26282,26283,26284,26285,26286,26287,26288,26289,26290,26291,26292,26293,26294,26295,26296,26297,26298,26299,26300,26301,26302,26303,26304,26305,26306,26307,26308,26309,26310,26311,26312,26313,26314,26315,26316,26317,26318,26319,26320,26321,26322,26323,26324,26325,26326,26327,26328,26329,26330,26331,26332,26333,26334,26335,26336,26337,26338,26339,26340,26341,26342,26343,26344,26345,26346,26347,26348,26349,26350,26351,26352,26353,26354,26355,26356,26357,26358,26359,26360,26361,26362,26363,26364,26365,26366,26367,26368,26369,26370,26371,26372,26373,26374,26375,26376,26377,26378,26379,26380,26381,26382,26383,26384,26385,26386,26387,26388,26389,26390,26391,26392,26393,26394,26395,26396,26397,26398,26399,26400,26401,26402,26403,26404,26405,26406,26407,26408,26409,26410,26411,26412,26413,26414,26415,26416,26417,26418,26419,26420,26421,26422,26423,26424,26425,26426,26427,26428,26429,26430,26431,26432,26433,26434,26435,26436,26437,26438,26439,26440,26441,26442,26443,26444,26445,26446,26447,26448,26449,26450,26451,26452,26453,26454,26455,26456,26457,26458,26459,26460,26461,26462,26463,26464,26465,26466,26467,26468,26469,26470,26471,26472,26473,26474,26475,26476,26477,26478,26479,26480,26481,26482,26483,26484,26485,26486,26487,26488,26489,26490,26491,26492,26493,26494,26495,26496,26497,26498,26499,26500,26501,26502,26503,26504,26505,26506,26507,26508,26509,26510,26511,26512,26513,26514,26515,26516,26517,26518,26519,26520,26521,26522,26523,26524,26525,26526,26527,26528,26529,26530,26531,26532,26533,26534,26535,26536,26537,26538,26539,26540,26541,26542,26543,26544,26545,26546,26547,26548,26549,26550,26551,26552,26553,26554,26555,26556,26557,26558,26559,26560,26561,26562,26563,26564,26565,26566,26567,26568,26569,26570,26571,26572,26573,26574,26575,26576,26577,26578,26579,26580,26581,26582,26583,26584,26585,26586,26587,26588,26589,26590,26591,26592,26593,26594,26595,26596,26597,26598,26599,26600,26601,26602,26603,26604,26605,26606,26607,26608,26609,26610,26611,26612,26613,26614,26615,26616,26617,26618,26619,26620,26621,26622,26623,26624,26625,26626,26627,26628,26629,26630,26631,26632,26633,26634,26635,26636,26637,26638,26639,26640,26641,26642,26643,26644,26645,26646,26647,26648,26649,26650,26651,26652,26653,26654,26655,26656,26657,26658,26659,26660,26661,26662,26663,26664,26665,26666,26667,26668,26669,26670,26671,26672,26673,26674,26675,26676,26677,26678,26679,26680,26681,26682,26683,26684,26685,26686,26687,26688,26689,26690,26691,26692,26693,26694,26695,26696,26697,26698,26699,26700,26701,26702,26703,26704,26705,26706,26707,26708,26709,26710,26711,26712,26713,26714,26715,26716,26717,26718,26719,26720,26721,26722,26723,26724,26725,26726,26727,26728,26729,26730,26731,26732,26733,26734,26735,26736,26737,26738,26739,26740,26741,26742,26743,26744,26745,26746,26747,26748,26749,26750,26751,26752,26753,26754,26755,26756,26757,26758,26759,26760,26761,26762,26763,26764,26765,26766,26767,26768,26769,26770,26771,26772,26773,26774,26775,26776,26777,26778,26779,26780,26781,26782,26783,26784,26785,26786,26787,26788,26789,26790,26791,26792,26793,26794,26795,26796,26797,26798,26799,26800,26801,26802,26803,26804,26805,26806,26807,26808,26809,26810,26811,26812,26813,26814,26815,26816,26817,26818,26819,26820,26821,26822,26823,26824,26825,26826,26827,26828,26829,26830,26831,26832,26833,26834,26835,26836,26837,26838,26839,26840,26841,26842,26843,26844,26845,26846,26847,26848,26849,26850,26851,26852,26853,26854,26855,26856,26857,26858,26859,26860,26861,26862,26863,26864,26865,26866,26867,26868,26869,26870,26871,26872,26873,26874,26875,26876,26877,26878,26879,26880,26881,26882,26883,26884,26885,26886,26887,26888,26889,26890,26891,26892,26893,26894,26895,26896,26897,26898,26899,26900,26901,26902,26903,26904,26905,26906,26907,26908,26909,26910,26911,26912,26913,26914,26915,26916,26917,26918,26919,26920,26921,26922,26923,26924,26925,26926,26927,26928,26929,26930,26931,26932,26933,26934,26935,26936,26937,26938,26939,26940,26941,26942,26943,26944,26945,26946,26947,26948,26949,26950,26951,26952,26953,26954,26955,26956,26957,26958,26959,26960,26961,26962,26963,26964,26965,26966,26967,26968,26969,26970,26971,26972,26973,26974,26975,26976,26977,26978,26979,26980,26981,26982,26983,26984,26985,26986,26987,26988,26989,26990,26991,26992,26993,26994,26995,26996,26997,26998,26999,27000,27001,27002,27003,27004,27005,27006,27007,27008,27009,27010,27011,27012,27013,27014,27015,27016,27017,27018,27019,27020,27021,27022,27023,27024,27025,27026,27027,27028,27029,27030,27031,27032,27033,27034,27035,27036,27037,27038,27039,27040,27041,27042,27043,27044,27045,27046,27047,27048,27049,27050,27051,27052,27053,27054,27055,27056,27057,27058,27059,27060,27061,27062,27063,27064,27065,27066,27067,27068,27069,27070,27071,27072,27073,27074,27075,27076,27077,27078,27079,27080,27081,27082,27083,27084,27085,27086,27087,27088,27089,27090,27091,27092,27093,27094,27095,27096,27097,27098,27099,27100,27101,27102,27103,27104,27105,27106,27107,27108,27109,27110,27111,27112,27113,27114,27115,27116,27117,27118,27119,27120,27121,27122,27123,27124,27125,27126,27127,27128,27129,27130,27131,27132,27133,27134,27135,27136,27137,27138,27139,27140,27141,27142,27143,27144,27145,27146,27147,27148,27149,27150,27151,27152,27153,27154,27155,27156,27157,27158,27159,27160,27161,27162,27163,27164,27165,27166,27167,27168,27169,27170,27171,27172,27173,27174,27175,27176,27177,27178,27179,27180,27181,27182,27183,27184,27185,27186,27187,27188,27189,27190,27191,27192,27193,27194,27195,27196,27197,27198,27199,27200,27201,27202,27203,27204,27205,27206,27207,27208,27209,27210,27211,27212,27213,27214,27215,27216,27217,27218,27219,27220,27221,27222,27223,27224,27225,27226,27227,27228,27229,27230,27231,27232,27233,27234,27235,27236,27237,27238,27239,27240,27241,27242,27243,27244,27245,27246,27247,27248,27249,27250,27251,27252,27253,27254,27255,27256,27257,27258,27259,27260,27261,27262,27263,27264,27265,27266,27267,27268,27269,27270,27271,27272,27273,27274,27275,27276,27277,27278,27279,27280,27281,27282,27283,27284,27285,27286,27287,27288,27289,27290,27291,27292,27293,27294,27295,27296,27297,27298,27299,27300,27301,27302,27303,27304,27305,27306,27307,27308,27309,27310,27311,27312,27313,27314,27315,27316,27317,27318,27319,27320,27321,27322,27323,27324,27325,27326,27327,27328,27329,27330,27331,27332,27333,27334,27335,27336,27337,27338,27339,27340,27341,27342,27343,27344,27345,27346,27347,27348,27349,27350,27351,27352,27353,27354,27355,27356,27357,27358,27359,27360,27361,27362,27363,27364,27365,27366,27367,27368,27369,27370,27371,27372,27373,27374,27375,27376,27377,27378,27379,27380,27381,27382,27383,27384,27385,27386,27387,27388,27389,27390,27391,27392,27393,27394,27395,27396,27397,27398,27399,27400,27401,27402,27403,27404,27405,27406,27407,27408,27409,27410,27411,27412,27413,27414,27415,27416,27417,27418,27419,27420,27421,27422,27423,27424,27425,27426,27427,27428,27429,27430,27431,27432,27433,27434,27435,27436,27437,27438,27439,27440,27441,27442,27443,27444,27445,27446,27447,27448,27449,27450,27451,27452,27453,27454,27455,27456,27457,27458,27459,27460,27461,27462,27463,27464,27465,27466,27467,27468,27469,27470,27471,27472,27473,27474,27475,27476,27477,27478,27479,27480,27481,27482,27483,27484,27485,27486,27487,27488,27489,27490,27491,27492,27493,27494,27495,27496,27497,27498,27499,27500,27501,27502,27503,27504,27505,27506,27507,27508,27509,27510,27511,27512,27513,27514,27515,27516,27517,27518,27519,27520,27521,27522,27523,27524,27525,27526,27527,27528,27529,27530,27531,27532,27533,27534,27535,27536,27537,27538,27539,27540,27541,27542,27543,27544,27545,27546,27547,27548,27549,27550,27551,27552,27553,27554,27555,27556,27557,27558,27559,27560,27561,27562,27563,27564,27565,27566,27567,27568,27569,27570,27571,27572,27573,27574,27575,27576,27577,27578,27579,27580,27581,27582,27583,27584,27585,27586,27587,27588,27589,27590,27591,27592,27593,27594,27595,27596,27597,27598,27599,27600,27601,27602,27603,27604,27605,27606,27607,27608,27609,27610,27611,27612,27613,27614,27615,27616,27617,27618,27619,27620,27621,27622,27623,27624,27625,27626,27627,27628,27629,27630,27631,27632,27633,27634,27635,27636,27637,27638,27639,27640,27641,27642,27643,27644,27645,27646,27647,27648,27649,27650,27651,27652,27653,27654,27655,27656,27657,27658,27659,27660,27661,27662,27663,27664,27665,27666,27667,27668,27669,27670,27671,27672,27673,27674,27675,27676,27677,27678,27679,27680,27681,27682,27683,27684,27685,27686,27687,27688,27689,27690,27691,27692,27693,27694,27695,27696,27697,27698,27699,27700,27701,27702,27703,27704,27705,27706,27707,27708,27709,27710,27711,27712,27713,27714,27715,27716,27717,27718,27719,27720,27721,27722,27723,27724,27725,27726,27727,27728,27729,27730,27731,27732,27733,27734,27735,27736,27737,27738,27739,27740,27741,27742,27743,27744,27745,27746,27747,27748,27749,27750,27751,27752,27753,27754,27755,27756,27757,27758,27759,27760,27761,27762,27763,27764,27765,27766,27767,27768,27769,27770,27771,27772,27773,27774,27775,27776,27777,27778,27779,27780,27781,27782,27783,27784,27785,27786,27787,27788,27789,27790,27791,27792,27793,27794,27795,27796,27797,27798,27799,27800,27801,27802,27803,27804,27805,27806,27807,27808,27809,27810,27811,27812,27813,27814,27815,27816,27817,27818,27819,27820,27821,27822,27823,27824,27825,27826,27827,27828,27829,27830,27831,27832,27833,27834,27835,27836,27837,27838,27839,27840,27841,27842,27843,27844,27845,27846,27847,27848,27849,27850,27851,27852,27853,27854,27855,27856,27857,27858,27859,27860,27861,27862,27863,27864,27865,27866,27867,27868,27869,27870,27871,27872,27873,27874,27875,27876,27877,27878,27879,27880,27881,27882,27883,27884,27885,27886,27887,27888,27889,27890,27891,27892,27893,27894,27895,27896,27897,27898,27899,27900,27901,27902,27903,27904,27905,27906,27907,27908,27909,27910,27911,27912,27913,27914,27915,27916,27917,27918,27919,27920,27921,27922,27923,27924,27925,27926,27927,27928,27929,27930,27931,27932,27933,27934,27935,27936,27937,27938,27939,27940,27941,27942,27943,27944,27945,27946,27947,27948,27949,27950,27951,27952,27953,27954,27955,27956,27957,27958,27959,27960,27961,27962,27963,27964,27965,27966,27967,27968,27969,27970,27971,27972,27973,27974,27975,27976,27977,27978,27979,27980,27981,27982,27983,27984,27985,27986,27987,27988,27989,27990,27991,27992,27993,27994,27995,27996,27997,27998,27999,28000,28001,28002,28003,28004,28005,28006,28007,28008,28009,28010,28011,28012,28013,28014,28015,28016,28017,28018,28019,28020,28021,28022,28023,28024,28025,28026,28027,28028,28029,28030,28031,28032,28033,28034,28035,28036,28037,28038,28039,28040,28041,28042,28043,28044,28045,28046,28047,28048,28049,28050,28051,28052,28053,28054,28055,28056,28057,28058,28059,28060,28061,28062,28063,28064,28065,28066,28067,28068,28069,28070,28071,28072,28073,28074,28075,28076,28077,28078,28079,28080,28081,28082,28083,28084,28085,28086,28087,28088,28089,28090,28091,28092,28093,28094,28095,28096,28097,28098,28099,28100,28101,28102,28103,28104,28105,28106,28107,28108,28109,28110,28111,28112,28113,28114,28115,28116,28117,28118,28119,28120,28121,28122,28123,28124,28125,28126,28127,28128,28129,28130,28131,28132,28133,28134,28135,28136,28137,28138,28139,28140,28141,28142,28143,28144,28145,28146,28147,28148,28149,28150,28151,28152,28153,28154,28155,28156,28157,28158,28159,28160,28161,28162,28163,28164,28165,28166,28167,28168,28169,28170,28171,28172,28173,28174,28175,28176,28177,28178,28179,28180,28181,28182,28183,28184,28185,28186,28187,28188,28189,28190,28191,28192,28193,28194,28195,28196,28197,28198,28199,28200,28201,28202,28203,28204,28205,28206,28207,28208,28209,28210,28211,28212,28213,28214,28215,28216,28217,28218,28219,28220,28221,28222,28223,28224,28225,28226,28227,28228,28229,28230,28231,28232,28233,28234,28235,28236,28237,28238,28239,28240,28241,28242,28243,28244,28245,28246,28247,28248,28249,28250,28251,28252,28253,28254,28255,28256,28257,28258,28259,28260,28261,28262,28263,28264,28265,28266,28267,28268,28269,28270,28271,28272,28273,28274,28275,28276,28277,28278,28279,28280,28281,28282,28283,28284,28285,28286,28287,28288,28289,28290,28291,28292,28293,28294,28295,28296,28297,28298,28299,28300,28301,28302,28303,28304,28305,28306,28307,28308,28309,28310,28311,28312,28313,28314,28315,28316,28317,28318,28319,28320,28321,28322,28323,28324,28325,28326,28327,28328,28329,28330,28331,28332,28333,28334,28335,28336,28337,28338,28339,28340,28341,28342,28343,28344,28345,28346,28347,28348,28349,28350,28351,28352,28353,28354,28355,28356,28357,28358,28359,28360,28361,28362,28363,28364,28365,28366,28367,28368,28369,28370,28371,28372,28373,28374,28375,28376,28377,28378,28379,28380,28381,28382,28383,28384,28385,28386,28387,28388,28389,28390,28391,28392,28393,28394,28395,28396,28397,28398,28399,28400,28401,28402,28403,28404,28405,28406,28407,28408,28409,28410,28411,28412,28413,28414,28415,28416,28417,28418,28419,28420,28421,28422,28423,28424,28425,28426,28427,28428,28429,28430,28431,28432,28433,28434,28435,28436,28437,28438,28439,28440,28441,28442,28443,28444,28445,28446,28447,28448,28449,28450,28451,28452,28453,28454,28455,28456,28457,28458,28459,28460,28461,28462,28463,28464,28465,28466,28467,28468,28469,28470,28471,28472,28473,28474,28475,28476,28477,28478,28479,28480,28481,28482,28483,28484,28485,28486,28487,28488,28489,28490,28491,28492,28493,28494,28495,28496,28497,28498,28499,28500,28501,28502,28503,28504,28505,28506,28507,28508,28509,28510,28511,28512,28513,28514,28515,28516,28517,28518,28519,28520,28521,28522,28523,28524,28525,28526,28527,28528,28529,28530,28531,28532,28533,28534,28535,28536,28537,28538,28539,28540,28541,28542,28543,28544,28545,28546,28547,28548,28549,28550,28551,28552,28553,28554,28555,28556,28557,28558,28559,28560,28561,28562,28563,28564,28565,28566,28567,28568,28569,28570,28571,28572,28573,28574,28575,28576,28577,28578,28579,28580,28581,28582,28583,28584,28585,28586,28587,28588,28589,28590,28591,28592,28593,28594,28595,28596,28597,28598,28599,28600,28601,28602,28603,28604,28605,28606,28607,28608,28609,28610,28611,28612,28613,28614,28615,28616,28617,28618,28619,28620,28621,28622,28623,28624,28625,28626,28627,28628,28629,28630,28631,28632,28633,28634,28635,28636,28637,28638,28639,28640,28641,28642,28643,28644,28645,28646,28647,28648,28649,28650,28651,28652,28653,28654,28655,28656,28657,28658,28659,28660,28661,28662,28663,28664,28665,28666,28667,28668,28669,28670,28671,28672,28673,28674,28675,28676,28677,28678,28679,28680,28681,28682,28683,28684,28685,28686,28687,28688,28689,28690,28691,28692,28693,28694,28695,28696,28697,28698,28699,28700,28701,28702,28703,28704,28705,28706,28707,28708,28709,28710,28711,28712,28713,28714,28715,28716,28717,28718,28719,28720,28721,28722,28723,28724,28725,28726,28727,28728,28729,28730,28731,28732,28733,28734,28735,28736,28737,28738,28739,28740,28741,28742,28743,28744,28745,28746,28747,28748,28749,28750,28751,28752,28753,28754,28755,28756,28757,28758,28759,28760,28761,28762,28763,28764,28765,28766,28767,28768,28769,28770,28771,28772,28773,28774,28775,28776,28777,28778,28779,28780,28781,28782,28783,28784,28785,28786,28787,28788,28789,28790,28791,28792,28793,28794,28795,28796,28797,28798,28799,28800,28801,28802,28803,28804,28805,28806,28807,28808,28809,28810,28811,28812,28813,28814,28815,28816,28817,28818,28819,28820,28821,28822,28823,28824,28825,28826,28827,28828,28829,28830,28831,28832,28833,28834,28835,28836,28837,28838,28839,28840,28841,28842,28843,28844,28845,28846,28847,28848,28849,28850,28851,28852,28853,28854,28855,28856,28857,28858,28859,28860,28861,28862,28863,28864,28865,28866,28867,28868,28869,28870,28871,28872,28873,28874,28875,28876,28877,28878,28879,28880,28881,28882,28883,28884,28885,28886,28887,28888,28889,28890,28891,28892,28893,28894,28895,28896,28897,28898,28899,28900,28901,28902,28903,28904,28905,28906,28907,28908,28909,28910,28911,28912,28913,28914,28915,28916,28917,28918,28919,28920,28921,28922,28923,28924,28925,28926,28927,28928,28929,28930,28931,28932,28933,28934,28935,28936,28937,28938,28939,28940,28941,28942,28943,28944,28945,28946,28947,28948,28949,28950,28951,28952,28953,28954,28955,28956,28957,28958,28959,28960,28961,28962,28963,28964,28965,28966,28967,28968,28969,28970,28971,28972,28973,28974,28975,28976,28977,28978,28979,28980,28981,28982,28983,28984,28985,28986,28987,28988,28989,28990,28991,28992,28993,28994,28995,28996,28997,28998,28999,29000,29001,29002,29003,29004,29005,29006,29007,29008,29009,29010,29011,29012,29013,29014,29015,29016,29017,29018,29019,29020,29021,29022,29023,29024,29025,29026,29027,29028,29029,29030,29031,29032,29033,29034,29035,29036,29037,29038,29039,29040,29041,29042,29043,29044,29045,29046,29047,29048,29049,29050,29051,29052,29053,29054,29055,29056,29057,29058,29059,29060,29061,29062,29063,29064,29065,29066,29067,29068,29069,29070,29071,29072,29073,29074,29075,29076,29077,29078,29079,29080,29081,29082,29083,29084,29085,29086,29087,29088,29089,29090,29091,29092,29093,29094,29095,29096,29097,29098,29099,29100,29101,29102,29103,29104,29105,29106,29107,29108,29109,29110,29111,29112,29113,29114,29115,29116,29117,29118,29119,29120,29121,29122,29123,29124,29125,29126,29127,29128,29129,29130,29131,29132,29133,29134,29135,29136,29137,29138,29139,29140,29141,29142,29143,29144,29145,29146,29147,29148,29149,29150,29151,29152,29153,29154,29155,29156,29157,29158,29159,29160,29161,29162,29163,29164,29165,29166,29167,29168,29169,29170,29171,29172,29173,29174,29175,29176,29177,29178,29179,29180,29181,29182,29183,29184,29185,29186,29187,29188,29189,29190,29191,29192,29193,29194,29195,29196,29197,29198,29199,29200,29201,29202,29203,29204,29205,29206,29207,29208,29209,29210,29211,29212,29213,29214,29215,29216,29217,29218,29219,29220,29221,29222,29223,29224,29225,29226,29227,29228,29229,29230,29231,29232,29233,29234,29235,29236,29237,29238,29239,29240,29241,29242,29243,29244,29245,29246,29247,29248,29249,29250,29251,29252,29253,29254,29255,29256,29257,29258,29259,29260,29261,29262,29263,29264,29265,29266,29267,29268,29269,29270,29271,29272,29273,29274,29275,29276,29277,29278,29279,29280,29281,29282,29283,29284,29285,29286,29287,29288,29289,29290,29291,29292,29293,29294,29295,29296,29297,29298,29299,29300,29301,29302,29303,29304,29305,29306,29307,29308,29309,29310,29311,29312,29313,29314,29315,29316,29317,29318,29319,29320,29321,29322,29323,29324,29325,29326,29327,29328,29329,29330,29331,29332,29333,29334,29335,29336,29337,29338,29339,29340,29341,29342,29343,29344,29345,29346,29347,29348,29349,29350,29351,29352,29353,29354,29355,29356,29357,29358,29359,29360,29361,29362,29363,29364,29365,29366,29367,29368,29369,29370,29371,29372,29373,29374,29375,29376,29377,29378,29379,29380,29381,29382,29383,29384,29385,29386,29387,29388,29389,29390,29391,29392,29393,29394,29395,29396,29397,29398,29399,29400,29401,29402,29403,29404,29405,29406,29407,29408,29409,29410,29411,29412,29413,29414,29415,29416,29417,29418,29419,29420,29421,29422,29423,29424,29425,29426,29427,29428,29429,29430,29431,29432,29433,29434,29435,29436,29437,29438,29439,29440,29441,29442,29443,29444,29445,29446,29447,29448,29449,29450,29451,29452,29453,29454,29455,29456,29457,29458,29459,29460,29461,29462,29463,29464,29465,29466,29467,29468,29469,29470,29471,29472,29473,29474,29475,29476,29477,29478,29479,29480,29481,29482,29483,29484,29485,29486,29487,29488,29489,29490,29491,29492,29493,29494,29495,29496,29497,29498,29499,29500,29501,29502,29503,29504,29505,29506,29507,29508,29509,29510,29511,29512,29513,29514,29515,29516,29517,29518,29519,29520,29521,29522,29523,29524,29525,29526,29527,29528,29529,29530,29531,29532,29533,29534,29535,29536,29537,29538,29539,29540,29541,29542,29543,29544,29545,29546,29547,29548,29549,29550,29551,29552,29553,29554,29555,29556,29557,29558,29559,29560,29561,29562,29563,29564,29565,29566,29567,29568,29569,29570,29571,29572,29573,29574,29575,29576,29577,29578,29579,29580,29581,29582,29583,29584,29585,29586,29587,29588,29589,29590,29591,29592,29593,29594,29595,29596,29597,29598,29599,29600,29601,29602,29603,29604,29605,29606,29607,29608,29609,29610,29611,29612,29613,29614,29615,29616,29617,29618,29619,29620,29621,29622,29623,29624,29625,29626,29627,29628,29629,29630,29631,29632,29633,29634,29635,29636,29637,29638,29639,29640,29641,29642,29643,29644,29645,29646,29647,29648,29649,29650,29651,29652,29653,29654,29655,29656,29657,29658,29659,29660,29661,29662,29663,29664,29665,29666,29667,29668,29669,29670,29671,29672,29673,29674,29675,29676,29677,29678,29679,29680,29681,29682,29683,29684,29685,29686,29687,29688,29689,29690,29691,29692,29693,29694,29695,29696,29697,29698,29699,29700,29701,29702,29703,29704,29705,29706,29707,29708,29709,29710,29711,29712,29713,29714,29715,29716,29717,29718,29719,29720,29721,29722,29723,29724,29725,29726,29727,29728,29729,29730,29731,29732,29733,29734,29735,29736,29737,29738,29739,29740,29741,29742,29743,29744,29745,29746,29747,29748,29749,29750,29751,29752,29753,29754,29755,29756,29757,29758,29759,29760,29761,29762,29763,29764,29765,29766,29767,29768,29769,29770,29771,29772,29773,29774,29775,29776,29777,29778,29779,29780,29781,29782,29783,29784,29785,29786,29787,29788,29789,29790,29791,29792,29793,29794,29795,29796,29797,29798,29799,29800,29801,29802,29803,29804,29805,29806,29807,29808,29809,29810,29811,29812,29813,29814,29815,29816,29817,29818,29819,29820,29821,29822,29823,29824,29825,29826,29827,29828,29829,29830,29831,29832,29833,29834,29835,29836,29837,29838,29839,29840,29841,29842,29843,29844,29845,29846,29847,29848,29849,29850,29851,29852,29853,29854,29855,29856,29857,29858,29859,29860,29861,29862,29863,29864,29865,29866,29867,29868,29869,29870,29871,29872,29873,29874,29875,29876,29877,29878,29879,29880,29881,29882,29883,29884,29885,29886,29887,29888,29889,29890,29891,29892,29893,29894,29895,29896,29897,29898,29899,29900,29901,29902,29903,29904,29905,29906,29907,29908,29909,29910,29911,29912,29913,29914,29915,29916,29917,29918,29919,29920,29921,29922,29923,29924,29925,29926,29927,29928,29929,29930,29931,29932,29933,29934,29935,29936,29937,29938,29939,29940,29941,29942,29943,29944,29945,29946,29947,29948,29949,29950,29951,29952,29953,29954,29955,29956,29957,29958,29959,29960,29961,29962,29963,29964,29965,29966,29967,29968,29969,29970,29971,29972,29973,29974,29975,29976,29977,29978,29979,29980,29981,29982,29983,29984,29985,29986,29987,29988,29989,29990,29991,29992,29993,29994,29995,29996,29997,29998,29999,30000,30001,30002,30003,30004,30005,30006,30007,30008,30009,30010,30011,30012,30013,30014,30015,30016,30017,30018,30019,30020,30021,30022,30023,30024,30025,30026,30027,30028,30029,30030,30031,30032,30033,30034,30035,30036,30037,30038,30039,30040,30041,30042,30043,30044,30045,30046,30047,30048,30049,30050,30051,30052,30053,30054,30055,30056,30057,30058,30059,30060,30061,30062,30063,30064,30065,30066,30067,30068,30069,30070,30071,30072,30073,30074,30075,30076,30077,30078,30079,30080,30081,30082,30083,30084,30085,30086,30087,30088,30089,30090,30091,30092,30093,30094,30095,30096,30097,30098,30099,30100,30101,30102,30103,30104,30105,30106,30107,30108,30109,30110,30111,30112,30113,30114,30115,30116,30117,30118,30119,30120,30121,30122,30123,30124,30125,30126,30127,30128,30129,30130,30131,30132,30133,30134,30135,30136,30137,30138,30139,30140,30141,30142,30143,30144,30145,30146,30147,30148,30149,30150,30151,30152,30153,30154,30155,30156,30157,30158,30159,30160,30161,30162,30163,30164,30165,30166,30167,30168,30169,30170,30171,30172,30173,30174,30175,30176,30177,30178,30179,30180,30181,30182,30183,30184,30185,30186,30187,30188,30189,30190,30191,30192,30193,30194,30195,30196,30197,30198,30199,30200,30201,30202,30203,30204,30205,30206,30207,30208,30209,30210,30211,30212,30213,30214,30215,30216,30217,30218,30219,30220,30221,30222,30223,30224,30225,30226,30227,30228,30229,30230,30231,30232,30233,30234,30235,30236,30237,30238,30239,30240,30241,30242,30243,30244,30245,30246,30247,30248,30249,30250,30251,30252,30253,30254,30255,30256,30257,30258,30259,30260,30261,30262,30263,30264,30265,30266,30267,30268,30269,30270,30271,30272,30273,30274,30275,30276,30277,30278,30279,30280,30281,30282,30283,30284,30285,30286,30287,30288,30289,30290,30291,30292,30293,30294,30295,30296,30297,30298,30299,30300,30301,30302,30303,30304,30305,30306,30307,30308,30309,30310,30311,30312,30313,30314,30315,30316,30317,30318,30319,30320,30321,30322,30323,30324,30325,30326,30327,30328,30329,30330,30331,30332,30333,30334,30335,30336,30337,30338,30339,30340,30341,30342,30343,30344,30345,30346,30347,30348,30349,30350,30351,30352,30353,30354,30355,30356,30357,30358,30359,30360,30361,30362,30363,30364,30365,30366,30367,30368,30369,30370,30371,30372,30373,30374,30375,30376,30377,30378,30379,30380,30381,30382,30383,30384,30385,30386,30387,30388,30389,30390,30391,30392,30393,30394,30395,30396,30397,30398,30399,30400,30401,30402,30403,30404,30405,30406,30407,30408,30409,30410,30411,30412,30413,30414,30415,30416,30417,30418,30419,30420,30421,30422,30423,30424,30425,30426,30427,30428,30429,30430,30431,30432,30433,30434,30435,30436,30437,30438,30439,30440,30441,30442,30443,30444,30445,30446,30447,30448,30449,30450,30451,30452,30453,30454,30455,30456,30457,30458,30459,30460,30461,30462,30463,30464,30465,30466,30467,30468,30469,30470,30471,30472,30473,30474,30475,30476,30477,30478,30479,30480,30481,30482,30483,30484,30485,30486,30487,30488,30489,30490,30491,30492,30493,30494,30495,30496,30497,30498,30499,30500,30501,30502,30503,30504,30505,30506,30507,30508,30509,30510,30511,30512,30513,30514,30515,30516,30517,30518,30519,30520,30521,30522,30523,30524,30525,30526,30527,30528,30529,30530,30531,30532,30533,30534,30535,30536,30537,30538,30539,30540,30541,30542,30543,30544,30545,30546,30547,30548,30549,30550,30551,30552,30553,30554,30555,30556,30557,30558,30559,30560,30561,30562,30563,30564,30565,30566,30567,30568,30569,30570,30571,30572,30573,30574,30575,30576,30577,30578,30579,30580,30581,30582,30583,30584,30585,30586,30587,30588,30589,30590,30591,30592,30593,30594,30595,30596,30597,30598,30599,30600,30601,30602,30603,30604,30605,30606,30607,30608,30609,30610,30611,30612,30613,30614,30615,30616,30617,30618,30619,30620,30621,30622,30623,30624,30625,30626,30627,30628,30629,30630,30631,30632,30633,30634,30635,30636,30637,30638,30639,30640,30641,30642,30643,30644,30645,30646,30647,30648,30649,30650,30651,30652,30653,30654,30655,30656,30657,30658,30659,30660,30661,30662,30663,30664,30665,30666,30667,30668,30669,30670,30671,30672,30673,30674,30675,30676,30677,30678,30679,30680,30681,30682,30683,30684,30685,30686,30687,30688,30689,30690,30691,30692,30693,30694,30695,30696,30697,30698,30699,30700,30701,30702,30703,30704,30705,30706,30707,30708,30709,30710,30711,30712,30713,30714,30715,30716,30717,30718,30719,30720,30721,30722,30723,30724,30725,30726,30727,30728,30729,30730,30731,30732,30733,30734,30735,30736,30737,30738,30739,30740,30741,30742,30743,30744,30745,30746,30747,30748,30749,30750,30751,30752,30753,30754,30755,30756,30757,30758,30759,30760,30761,30762,30763,30764,30765,30766,30767,30768,30769,30770,30771,30772,30773,30774,30775,30776,30777,30778,30779,30780,30781,30782,30783,30784,30785,30786,30787,30788,30789,30790,30791,30792,30793,30794,30795,30796,30797,30798,30799,30800,30801,30802,30803,30804,30805,30806,30807,30808,30809,30810,30811,30812,30813,30814,30815,30816,30817,30818,30819,30820,30821,30822,30823,30824,30825,30826,30827,30828,30829,30830,30831,30832,30833,30834,30835,30836,30837,30838,30839,30840,30841,30842,30843,30844,30845,30846,30847,30848,30849,30850,30851,30852,30853,30854,30855,30856,30857,30858,30859,30860,30861,30862,30863,30864,30865,30866,30867,30868,30869,30870,30871,30872,30873,30874,30875,30876,30877,30878,30879,30880,30881,30882,30883,30884,30885,30886,30887,30888,30889,30890,30891,30892,30893,30894,30895,30896,30897,30898,30899,30900,30901,30902,30903,30904,30905,30906,30907,30908,30909,30910,30911,30912,30913,30914,30915,30916,30917,30918,30919,30920,30921,30922,30923,30924,30925,30926,30927,30928,30929,30930,30931,30932,30933,30934,30935,30936,30937,30938,30939,30940,30941,30942,30943,30944,30945,30946,30947,30948,30949,30950,30951,30952,30953,30954,30955,30956,30957,30958,30959,30960,30961,30962,30963,30964,30965,30966,30967,30968,30969,30970,30971,30972,30973,30974,30975,30976,30977,30978,30979,30980,30981,30982,30983,30984,30985,30986,30987,30988,30989,30990,30991,30992,30993,30994,30995,30996,30997,30998,30999,31000,31001,31002,31003,31004,31005,31006,31007,31008,31009,31010,31011,31012,31013,31014,31015,31016,31017,31018,31019,31020,31021,31022,31023,31024,31025,31026,31027,31028,31029,31030,31031,31032,31033,31034,31035,31036,31037,31038,31039,31040,31041,31042,31043,31044,31045,31046,31047,31048,31049,31050,31051,31052,31053,31054,31055,31056,31057,31058,31059,31060,31061,31062,31063,31064,31065,31066,31067,31068,31069,31070,31071,31072,31073,31074,31075,31076,31077,31078,31079,31080,31081,31082,31083,31084,31085,31086,31087,31088,31089,31090,31091,31092,31093,31094,31095,31096,31097,31098,31099,31100,31101,31102,31103,31104,31105,31106,31107,31108,31109,31110,31111,31112,31113,31114,31115,31116,31117,31118,31119,31120,31121,31122,31123,31124,31125,31126,31127,31128,31129,31130,31131,31132,31133,31134,31135,31136,31137,31138,31139,31140,31141,31142,31143,31144,31145,31146,31147,31148,31149,31150,31151,31152,31153,31154,31155,31156,31157,31158,31159,31160,31161,31162,31163,31164,31165,31166,31167,31168,31169,31170,31171,31172,31173,31174,31175,31176,31177,31178,31179,31180,31181,31182,31183,31184,31185,31186,31187,31188,31189,31190,31191,31192,31193,31194,31195,31196,31197,31198,31199,31200,31201,31202,31203,31204,31205,31206,31207,31208,31209,31210,31211,31212,31213,31214,31215,31216,31217,31218,31219,31220,31221,31222,31223,31224,31225,31226,31227,31228,31229,31230,31231,31232,31233,31234,31235,31236,31237,31238,31239,31240,31241,31242,31243,31244,31245,31246,31247,31248,31249,31250,31251,31252,31253,31254,31255,31256,31257,31258,31259,31260,31261,31262,31263,31264,31265,31266,31267,31268,31269,31270,31271,31272,31273,31274,31275,31276,31277,31278,31279,31280,31281,31282,31283,31284,31285,31286,31287,31288,31289,31290,31291,31292,31293,31294,31295,31296,31297,31298,31299,31300,31301,31302,31303,31304,31305,31306,31307,31308,31309,31310,31311,31312,31313,31314,31315,31316,31317,31318,31319,31320,31321,31322,31323,31324,31325,31326,31327,31328,31329,31330,31331,31332,31333,31334,31335,31336,31337,31338,31339,31340,31341,31342,31343,31344,31345,31346,31347,31348,31349,31350,31351,31352,31353,31354,31355,31356,31357,31358,31359,31360,31361,31362,31363,31364,31365,31366,31367,31368,31369,31370,31371,31372,31373,31374,31375,31376,31377,31378,31379,31380,31381,31382,31383,31384,31385,31386,31387,31388,31389,31390,31391,31392,31393,31394,31395,31396,31397,31398,31399,31400,31401,31402,31403,31404,31405,31406,31407,31408,31409,31410,31411,31412,31413,31414,31415,31416,31417,31418,31419,31420,31421,31422,31423,31424,31425,31426,31427,31428,31429,31430,31431,31432,31433,31434,31435,31436,31437,31438,31439,31440,31441,31442,31443,31444,31445,31446,31447,31448,31449,31450,31451,31452,31453,31454,31455,31456,31457,31458,31459,31460,31461,31462,31463,31464,31465,31466,31467,31468,31469,31470,31471,31472,31473,31474,31475,31476,31477,31478,31479,31480,31481,31482,31483,31484,31485,31486,31487,31488,31489,31490,31491,31492,31493,31494,31495,31496,31497,31498,31499,31500,31501,31502,31503,31504,31505,31506,31507,31508,31509,31510,31511,31512,31513,31514,31515,31516,31517,31518,31519,31520,31521,31522,31523,31524,31525,31526,31527,31528,31529,31530,31531,31532,31533,31534,31535,31536,31537,31538,31539,31540,31541,31542,31543,31544,31545,31546,31547,31548,31549,31550,31551,31552,31553,31554,31555,31556,31557,31558,31559,31560,31561,31562,31563,31564,31565,31566,31567,31568,31569,31570,31571,31572,31573,31574,31575,31576,31577,31578,31579,31580,31581,31582,31583,31584,31585,31586,31587,31588,31589,31590,31591,31592,31593,31594,31595,31596,31597,31598,31599,31600,31601,31602,31603,31604,31605,31606,31607,31608,31609,31610,31611,31612,31613,31614,31615,31616,31617,31618,31619,31620,31621,31622,31623,31624,31625,31626,31627,31628,31629,31630,31631,31632,31633,31634,31635,31636,31637,31638,31639,31640,31641,31642,31643,31644,31645,31646,31647,31648,31649,31650,31651,31652,31653,31654,31655,31656,31657,31658,31659,31660,31661,31662,31663,31664,31665,31666,31667,31668,31669,31670,31671,31672,31673,31674,31675,31676,31677,31678,31679,31680,31681,31682,31683,31684,31685,31686,31687,31688,31689,31690,31691,31692,31693,31694,31695,31696,31697,31698,31699,31700,31701,31702,31703,31704,31705,31706,31707,31708,31709,31710,31711,31712,31713,31714,31715,31716,31717,31718,31719,31720,31721,31722,31723,31724,31725,31726,31727,31728,31729,31730,31731,31732,31733,31734,31735,31736,31737,31738,31739,31740,31741,31742,31743,31744,31745,31746,31747,31748,31749,31750,31751,31752,31753,31754,31755,31756,31757,31758,31759,31760,31761,31762,31763,31764,31765,31766,31767,31768,31769,31770,31771,31772,31773,31774,31775,31776,31777,31778,31779,31780,31781,31782,31783,31784,31785,31786,31787,31788,31789,31790,31791,31792,31793,31794,31795,31796,31797,31798,31799,31800,31801,31802,31803,31804,31805,31806,31807,31808,31809,31810,31811,31812,31813,31814,31815,31816,31817,31818,31819,31820,31821,31822,31823,31824,31825,31826,31827,31828,31829,31830,31831,31832,31833,31834,31835,31836,31837,31838,31839,31840,31841,31842,31843,31844,31845,31846,31847,31848,31849,31850,31851,31852,31853,31854,31855,31856,31857,31858,31859,31860,31861,31862,31863,31864,31865,31866,31867,31868,31869,31870,31871,31872,31873,31874,31875,31876,31877,31878,31879,31880,31881,31882,31883,31884,31885,31886,31887,31888,31889,31890,31891,31892,31893,31894,31895,31896,31897,31898,31899,31900,31901,31902,31903,31904,31905,31906,31907,31908,31909,31910,31911,31912,31913,31914,31915,31916,31917,31918,31919,31920,31921,31922,31923,31924,31925,31926,31927,31928,31929,31930,31931,31932,31933,31934,31935,31936,31937,31938,31939,31940,31941,31942,31943,31944,31945,31946,31947,31948,31949,31950,31951,31952,31953,31954,31955,31956,31957,31958,31959,31960,31961,31962,31963,31964,31965,31966,31967,31968,31969,31970,31971,31972,31973,31974,31975,31976,31977,31978,31979,31980,31981,31982,31983,31984,31985,31986,31987,31988,31989,31990,31991,31992,31993,31994,31995,31996,31997,31998,31999,32000,32001,32002,32003,32004,32005,32006,32007,32008,32009,32010,32011,32012,32013,32014,32015,32016,32017,32018,32019,32020,32021,32022,32023,32024,32025,32026,32027,32028,32029,32030,32031,32032,32033,32034,32035,32036,32037,32038,32039,32040,32041,32042,32043,32044,32045,32046,32047,32048,32049,32050,32051,32052,32053,32054,32055,32056,32057,32058,32059,32060,32061,32062,32063,32064,32065,32066,32067,32068,32069,32070,32071,32072,32073,32074,32075,32076,32077,32078,32079,32080,32081,32082,32083,32084,32085,32086,32087,32088,32089,32090,32091,32092,32093,32094,32095,32096,32097,32098,32099,32100,32101,32102,32103,32104,32105,32106,32107,32108,32109,32110,32111,32112,32113,32114,32115,32116,32117,32118,32119,32120,32121,32122,32123,32124,32125,32126,32127,32128,32129,32130,32131,32132,32133,32134,32135,32136,32137,32138,32139,32140,32141,32142,32143,32144,32145,32146,32147,32148,32149,32150,32151,32152,32153,32154,32155,32156,32157,32158,32159,32160,32161,32162,32163,32164,32165,32166,32167,32168,32169,32170,32171,32172,32173,32174,32175,32176,32177,32178,32179,32180,32181,32182,32183,32184,32185,32186,32187,32188,32189,32190,32191,32192,32193,32194,32195,32196,32197,32198,32199,32200,32201,32202,32203,32204,32205,32206,32207,32208,32209,32210,32211,32212,32213,32214,32215,32216,32217,32218,32219,32220,32221,32222,32223,32224,32225,32226,32227,32228,32229,32230,32231,32232,32233,32234,32235,32236,32237,32238,32239,32240,32241,32242,32243,32244,32245,32246,32247,32248,32249,32250,32251,32252,32253,32254,32255,32256,32257,32258,32259,32260,32261,32262,32263,32264,32265,32266,32267,32268,32269,32270,32271,32272,32273,32274,32275,32276,32277,32278,32279,32280,32281,32282,32283,32284,32285,32286,32287,32288,32289,32290,32291,32292,32293,32294,32295,32296,32297,32298,32299,32300,32301,32302,32303,32304,32305,32306,32307,32308,32309,32310,32311,32312,32313,32314,32315,32316,32317,32318,32319,32320,32321,32322,32323,32324,32325,32326,32327,32328,32329,32330,32331,32332,32333,32334,32335,32336,32337,32338,32339,32340,32341,32342,32343,32344,32345,32346,32347,32348,32349,32350,32351,32352,32353,32354,32355,32356,32357,32358,32359,32360,32361,32362,32363,32364,32365,32366,32367,32368,32369,32370,32371,32372,32373,32374,32375,32376,32377,32378,32379,32380,32381,32382,32383,32384,32385,32386,32387,32388,32389,32390,32391,32392,32393,32394,32395,32396,32397,32398,32399,32400,32401,32402,32403,32404,32405,32406,32407,32408,32409,32410,32411,32412,32413,32414,32415,32416,32417,32418,32419,32420,32421,32422,32423,32424,32425,32426,32427,32428,32429,32430,32431,32432,32433,32434,32435,32436,32437,32438,32439,32440,32441,32442,32443,32444,32445,32446,32447,32448,32449,32450,32451,32452,32453,32454,32455,32456,32457,32458,32459,32460,32461,32462,32463,32464,32465,32466,32467,32468,32469,32470,32471,32472,32473,32474,32475,32476,32477,32478,32479,32480,32481,32482,32483,32484,32485,32486,32487,32488,32489,32490,32491,32492,32493,32494,32495,32496,32497,32498,32499,32500,32501,32502,32503,32504,32505,32506,32507,32508,32509,32510,32511,32512,32513,32514,32515,32516,32517,32518,32519,32520,32521,32522,32523,32524,32525,32526,32527,32528,32529,32530,32531,32532,32533,32534,32535,32536,32537,32538,32539,32540,32541,32542,32543,32544,32545,32546,32547,32548,32549,32550,32551,32552,32553,32554,32555,32556,32557,32558,32559,32560,32561,32562,32563,32564,32565,32566,32567,32568,32569,32570,32571,32572,32573,32574,32575,32576,32577,32578,32579,32580,32581,32582,32583,32584,32585,32586,32587,32588,32589,32590,32591,32592,32593,32594,32595,32596,32597,32598,32599,32600,32601,32602,32603,32604,32605,32606,32607,32608,32609,32610,32611,32612,32613,32614,32615,32616,32617,32618,32619,32620,32621,32622,32623,32624,32625,32626,32627,32628,32629,32630,32631,32632,32633,32634,32635,32636,32637,32638,32639,32640,32641,32642,32643,32644,32645,32646,32647,32648,32649,32650,32651,32652,32653,32654,32655,32656,32657,32658,32659,32660,32661,32662,32663,32664,32665,32666,32667,32668,32669,32670,32671,32672,32673,32674,32675,32676,32677,32678,32679,32680,32681,32682,32683,32684,32685,32686,32687,32688,32689,32690,32691,32692,32693,32694,32695,32696,32697,32698,32699,32700,32701,32702,32703,32704,32705,32706,32707,32708,32709,32710,32711,32712,32713,32714,32715,32716,32717,32718,32719,32720,32721,32722,32723,32724,32725,32726,32727,32728,32729,32730,32731,32732,32733,32734,32735,32736,32737,32738,32739,32740,32741,32742,32743,32744,32745,32746,32747,32748,32749,32750,32751,32752,32753,32754,32755,32756,32757,32758,32759,32760,32761,32762,32763,32764,32765,32766,32767,32768,32769,32770,32771,32772,32773,32774,32775,32776,32777,32778,32779,32780,32781,32782,32783,32784,32785,32786,32787,32788,32789,32790,32791,32792,32793,32794,32795,32796,32797,32798,32799,32800,32801,32802,32803,32804,32805,32806,32807,32808,32809,32810,32811,32812,32813,32814,32815,32816,32817,32818,32819,32820,32821,32822,32823,32824,32825,32826,32827,32828,32829,32830,32831,32832,32833,32834,32835,32836,32837,32838,32839,32840,32841,32842,32843,32844,32845,32846,32847,32848,32849,32850,32851,32852,32853,32854,32855,32856,32857,32858,32859,32860,32861,32862,32863,32864,32865,32866,32867,32868,32869,32870,32871,32872,32873,32874,32875,32876,32877,32878,32879,32880,32881,32882,32883,32884,32885,32886,32887,32888,32889,32890,32891,32892,32893,32894,32895,32896,32897,32898,32899,32900,32901,32902,32903,32904,32905,32906,32907,32908,32909,32910,32911,32912,32913,32914,32915,32916,32917,32918,32919,32920,32921,32922,32923,32924,32925,32926,32927,32928,32929,32930,32931,32932,32933,32934,32935,32936,32937,32938,32939,32940,32941,32942,32943,32944,32945,32946,32947,32948,32949,32950,32951,32952,32953,32954,32955,32956,32957,32958,32959,32960,32961,32962,32963,32964,32965,32966,32967,32968,32969,32970,32971,32972,32973,32974,32975,32976,32977,32978,32979,32980,32981,32982,32983,32984,32985,32986,32987,32988,32989,32990,32991,32992,32993,32994,32995,32996,32997,32998,32999,33000,33001,33002,33003,33004,33005,33006,33007,33008,33009,33010,33011,33012,33013,33014,33015,33016,33017,33018,33019,33020,33021,33022,33023,33024,33025,33026,33027,33028,33029,33030,33031,33032,33033,33034,33035,33036,33037,33038,33039,33040,33041,33042,33043,33044,33045,33046,33047,33048,33049,33050,33051,33052,33053,33054,33055,33056,33057,33058,33059,33060,33061,33062,33063,33064,33065,33066,33067,33068,33069,33070,33071,33072,33073,33074,33075,33076,33077,33078,33079,33080,33081,33082,33083,33084,33085,33086,33087,33088,33089,33090,33091,33092,33093,33094,33095,33096,33097,33098,33099,33100,33101,33102,33103,33104,33105,33106,33107,33108,33109,33110,33111,33112,33113,33114,33115,33116,33117,33118,33119,33120,33121,33122,33123,33124,33125,33126,33127,33128,33129,33130,33131,33132,33133,33134,33135,33136,33137,33138,33139,33140,33141,33142,33143,33144,33145,33146,33147,33148,33149,33150,33151,33152,33153,33154,33155,33156,33157,33158,33159,33160,33161,33162,33163,33164,33165,33166,33167,33168,33169,33170,33171,33172,33173,33174,33175,33176,33177,33178,33179,33180,33181,33182,33183,33184,33185,33186,33187,33188,33189,33190,33191,33192,33193,33194,33195,33196,33197,33198,33199,33200,33201,33202,33203,33204,33205,33206,33207,33208,33209,33210,33211,33212,33213,33214,33215,33216,33217,33218,33219,33220,33221,33222,33223,33224,33225,33226,33227,33228,33229,33230,33231,33232,33233,33234,33235,33236,33237,33238,33239,33240,33241,33242,33243,33244,33245,33246,33247,33248,33249,33250,33251,33252,33253,33254,33255,33256,33257,33258,33259,33260,33261,33262,33263,33264,33265,33266,33267,33268,33269,33270,33271,33272,33273,33274,33275,33276,33277,33278,33279,33280,33281,33282,33283,33284,33285,33286,33287,33288,33289,33290,33291,33292,33293,33294,33295,33296,33297,33298,33299,33300,33301,33302,33303,33304,33305,33306,33307,33308,33309,33310,33311,33312,33313,33314,33315,33316,33317,33318,33319,33320,33321,33322,33323,33324,33325,33326,33327,33328,33329,33330,33331,33332,33333,33334,33335,33336,33337,33338,33339,33340,33341,33342,33343,33344,33345,33346,33347,33348,33349,33350,33351,33352,33353,33354,33355,33356,33357,33358,33359,33360,33361,33362,33363,33364,33365,33366,33367,33368,33369,33370,33371,33372,33373,33374,33375,33376,33377,33378,33379,33380,33381,33382,33383,33384,33385,33386,33387,33388,33389,33390,33391,33392,33393,33394,33395,33396,33397,33398,33399,33400,33401,33402,33403,33404,33405,33406,33407,33408,33409,33410,33411,33412,33413,33414,33415,33416,33417,33418,33419,33420,33421,33422,33423,33424,33425,33426,33427,33428,33429,33430,33431,33432,33433,33434,33435,33436,33437,33438,33439,33440,33441,33442,33443,33444,33445,33446,33447,33448,33449,33450,33451,33452,33453,33454,33455,33456,33457,33458,33459,33460,33461,33462,33463,33464,33465,33466,33467,33468,33469,33470,33471,33472,33473,33474,33475,33476,33477,33478,33479,33480,33481,33482,33483,33484,33485,33486,33487,33488,33489,33490,33491,33492,33493,33494,33495,33496,33497,33498,33499,33500,33501,33502,33503,33504,33505,33506,33507,33508,33509,33510,33511,33512,33513,33514,33515,33516,33517,33518,33519,33520,33521,33522,33523,33524,33525,33526,33527,33528,33529,33530,33531,33532,33533,33534,33535,33536,33537,33538,33539,33540,33541,33542,33543,33544,33545,33546,33547,33548,33549,33550,33551,33552,33553,33554,33555,33556,33557,33558,33559,33560,33561,33562,33563,33564,33565,33566,33567,33568,33569,33570,33571,33572,33573,33574,33575,33576,33577,33578,33579,33580,33581,33582,33583,33584,33585,33586,33587,33588,33589,33590,33591,33592,33593,33594,33595,33596,33597,33598,33599,33600,33601,33602,33603,33604,33605,33606,33607,33608,33609,33610,33611,33612,33613,33614,33615,33616,33617,33618,33619,33620,33621,33622,33623,33624,33625,33626,33627,33628,33629,33630,33631,33632,33633,33634,33635,33636,33637,33638,33639,33640,33641,33642,33643,33644,33645,33646,33647,33648,33649,33650,33651,33652,33653,33654,33655,33656,33657,33658,33659,33660,33661,33662,33663,33664,33665,33666,33667,33668,33669,33670,33671,33672,33673,33674,33675,33676,33677,33678,33679,33680,33681,33682,33683,33684,33685,33686,33687,33688,33689,33690,33691,33692,33693,33694,33695,33696,33697,33698,33699,33700,33701,33702,33703,33704,33705,33706,33707,33708,33709,33710,33711,33712,33713,33714,33715,33716,33717,33718,33719,33720,33721,33722,33723,33724,33725,33726,33727,33728,33729,33730,33731,33732,33733,33734,33735,33736,33737,33738,33739,33740,33741,33742,33743,33744,33745,33746,33747,33748,33749,33750,33751,33752,33753,33754,33755,33756,33757,33758,33759,33760,33761,33762,33763,33764,33765,33766,33767,33768,33769,33770,33771,33772,33773,33774,33775,33776,33777,33778,33779,33780,33781,33782,33783,33784,33785,33786,33787,33788,33789,33790,33791,33792,33793,33794,33795,33796,33797,33798,33799,33800,33801,33802,33803,33804,33805,33806,33807,33808,33809,33810,33811,33812,33813,33814,33815,33816,33817,33818,33819,33820,33821,33822,33823,33824,33825,33826,33827,33828,33829,33830,33831,33832,33833,33834,33835,33836,33837,33838,33839,33840,33841,33842,33843,33844,33845,33846,33847,33848,33849,33850,33851,33852,33853,33854,33855,33856,33857,33858,33859,33860,33861,33862,33863,33864,33865,33866,33867,33868,33869,33870,33871,33872,33873,33874,33875,33876,33877,33878,33879,33880,33881,33882,33883,33884,33885,33886,33887,33888,33889,33890,33891,33892,33893,33894,33895,33896,33897,33898,33899,33900,33901,33902,33903,33904,33905,33906,33907,33908,33909,33910,33911,33912,33913,33914,33915,33916,33917,33918,33919,33920,33921,33922,33923,33924,33925,33926,33927,33928,33929,33930,33931,33932,33933,33934,33935,33936,33937,33938,33939,33940,33941,33942,33943,33944,33945,33946,33947,33948,33949,33950,33951,33952,33953,33954,33955,33956,33957,33958,33959,33960,33961,33962,33963,33964,33965,33966,33967,33968,33969,33970,33971,33972,33973,33974,33975,33976,33977,33978,33979,33980,33981,33982,33983,33984,33985,33986,33987,33988,33989,33990,33991,33992,33993,33994,33995,33996,33997,33998,33999,34000,34001,34002,34003,34004,34005,34006,34007,34008,34009,34010,34011,34012,34013,34014,34015,34016,34017,34018,34019,34020,34021,34022,34023,34024,34025,34026,34027,34028,34029,34030,34031,34032,34033,34034,34035,34036,34037,34038,34039,34040,34041,34042,34043,34044,34045,34046,34047,34048,34049,34050,34051,34052,34053,34054,34055,34056,34057,34058,34059,34060,34061,34062,34063,34064,34065,34066,34067,34068,34069,34070,34071,34072,34073,34074,34075,34076,34077,34078,34079,34080,34081,34082,34083,34084,34085,34086,34087,34088,34089,34090,34091,34092,34093,34094,34095,34096,34097,34098,34099,34100,34101,34102,34103,34104,34105,34106,34107,34108,34109,34110,34111,34112,34113,34114,34115,34116,34117,34118,34119,34120,34121,34122,34123,34124,34125,34126,34127,34128,34129,34130,34131,34132,34133,34134,34135,34136,34137,34138,34139,34140,34141,34142,34143,34144,34145,34146,34147,34148,34149,34150,34151,34152,34153,34154,34155,34156,34157,34158,34159,34160,34161,34162,34163,34164,34165,34166,34167,34168,34169,34170,34171,34172,34173,34174,34175,34176,34177,34178,34179,34180,34181,34182,34183,34184,34185,34186,34187,34188,34189,34190,34191,34192,34193,34194,34195,34196,34197,34198,34199,34200,34201,34202,34203,34204,34205,34206,34207,34208,34209,34210,34211,34212,34213,34214,34215,34216,34217,34218,34219,34220,34221,34222,34223,34224,34225,34226,34227,34228,34229,34230,34231,34232,34233,34234,34235,34236,34237,34238,34239,34240,34241,34242,34243,34244,34245,34246,34247,34248,34249,34250,34251,34252,34253,34254,34255,34256,34257,34258,34259,34260,34261,34262,34263,34264,34265,34266,34267,34268,34269,34270,34271,34272,34273,34274,34275,34276,34277,34278,34279,34280,34281,34282,34283,34284,34285,34286,34287,34288,34289,34290,34291,34292,34293,34294,34295,34296,34297,34298,34299,34300,34301,34302,34303,34304,34305,34306,34307,34308,34309,34310,34311,34312,34313,34314,34315,34316,34317,34318,34319,34320,34321,34322,34323,34324,34325,34326,34327,34328,34329,34330,34331,34332,34333,34334,34335,34336,34337,34338,34339,34340,34341,34342,34343,34344,34345,34346,34347,34348,34349,34350,34351,34352,34353,34354,34355,34356,34357,34358,34359,34360,34361,34362,34363,34364,34365,34366,34367,34368,34369,34370,34371,34372,34373,34374,34375,34376,34377,34378,34379,34380,34381,34382,34383,34384,34385,34386,34387,34388,34389,34390,34391,34392,34393,34394,34395,34396,34397,34398,34399,34400,34401,34402,34403,34404,34405,34406,34407,34408,34409,34410,34411,34412,34413,34414,34415,34416,34417,34418,34419,34420,34421,34422,34423,34424,34425,34426,34427,34428,34429,34430,34431,34432,34433,34434,34435,34436,34437,34438,34439,34440,34441,34442,34443,34444,34445,34446,34447,34448,34449,34450,34451,34452,34453,34454,34455,34456,34457,34458,34459,34460,34461,34462,34463,34464,34465,34466,34467,34468,34469,34470,34471,34472,34473,34474,34475,34476,34477,34478,34479,34480,34481,34482,34483,34484,34485,34486,34487,34488,34489,34490,34491,34492,34493,34494,34495,34496,34497,34498,34499,34500,34501,34502,34503,34504,34505,34506,34507,34508,34509,34510,34511,34512,34513,34514,34515,34516,34517,34518,34519,34520,34521,34522,34523,34524,34525,34526,34527,34528,34529,34530,34531,34532,34533,34534,34535,34536,34537,34538,34539,34540,34541,34542,34543,34544,34545,34546,34547,34548,34549,34550,34551,34552,34553,34554,34555,34556,34557,34558,34559,34560,34561,34562,34563,34564,34565,34566,34567,34568,34569,34570,34571,34572,34573,34574,34575,34576,34577,34578,34579,34580,34581,34582,34583,34584,34585,34586,34587,34588,34589,34590,34591,34592,34593,34594,34595,34596,34597,34598,34599,34600,34601,34602,34603,34604,34605,34606,34607,34608,34609,34610,34611,34612,34613,34614,34615,34616,34617,34618,34619,34620,34621,34622,34623,34624,34625,34626,34627,34628,34629,34630,34631,34632,34633,34634,34635,34636,34637,34638,34639,34640,34641,34642,34643,34644,34645,34646,34647,34648,34649,34650,34651,34652,34653,34654,34655,34656,34657,34658,34659,34660,34661,34662,34663,34664,34665,34666,34667,34668,34669,34670,34671,34672,34673,34674,34675,34676,34677,34678,34679,34680,34681,34682,34683,34684,34685,34686,34687,34688,34689,34690,34691,34692,34693,34694,34695,34696,34697,34698,34699,34700,34701,34702,34703,34704,34705,34706,34707,34708,34709,34710,34711,34712,34713,34714,34715,34716,34717,34718,34719,34720,34721,34722,34723,34724,34725,34726,34727,34728,34729,34730,34731,34732,34733,34734,34735,34736,34737,34738,34739,34740,34741,34742,34743,34744,34745,34746,34747,34748,34749,34750,34751,34752,34753,34754,34755,34756,34757,34758,34759,34760,34761,34762,34763,34764,34765,34766,34767,34768,34769,34770,34771,34772,34773,34774,34775,34776,34777,34778,34779,34780,34781,34782,34783,34784,34785,34786,34787,34788,34789,34790,34791,34792,34793,34794,34795,34796,34797,34798,34799,34800,34801,34802,34803,34804,34805,34806,34807,34808,34809,34810,34811,34812,34813,34814,34815,34816,34817,34818,34819,34820,34821,34822,34823,34824,34825,34826,34827,34828,34829,34830,34831,34832,34833,34834,34835,34836,34837,34838,34839,34840,34841,34842,34843,34844,34845,34846,34847,34848,34849,34850,34851,34852,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34866,34867,34868,34869,34870,34871,34872,34873,34874,34875,34876,34877,34878,34879,34880,34881,34882,34883,34884,34885,34886,34887,34888,34889,34890,34891,34892,34893,34894,34895,34896,34897,34898,34899,34900,34901,34902,34903,34904,34905,34906,34907,34908,34909,34910,34911,34912,34913,34914,34915,34916,34917,34918,34919,34920,34921,34922,34923,34924,34925,34926,34927,34928,34929,34930,34931,34932,34933,34934,34935,34936,34937,34938,34939,34940,34941,34942,34943,34944,34945,34946,34947,34948,34949,34950,34951,34952,34953,34954,34955,34956,34957,34958,34959,34960,34961,34962,34963,34964,34965,34966,34967,34968,34969,34970,34971,34972,34973,34974,34975,34976,34977,34978,34979,34980,34981,34982,34983,34984,34985,34986,34987,34988,34989,34990,34991,34992,34993,34994,34995,34996,34997,34998,34999,35000,35001,35002,35003,35004,35005,35006,35007,35008,35009,35010,35011,35012,35013,35014,35015,35016,35017,35018,35019,35020,35021,35022,35023,35024,35025,35026,35027,35028,35029,35030,35031,35032,35033,35034,35035,35036,35037,35038,35039,35040,35041,35042,35043,35044,35045,35046,35047,35048,35049,35050,35051,35052,35053,35054,35055,35056,35057,35058,35059,35060,35061,35062,35063,35064,35065,35066,35067,35068,35069,35070,35071,35072,35073,35074,35075,35076,35077,35078,35079,35080,35081,35082,35083,35084,35085,35086,35087,35088,35089,35090,35091,35092,35093,35094,35095,35096,35097,35098,35099,35100,35101,35102,35103,35104,35105,35106,35107,35108,35109,35110,35111,35112,35113,35114,35115,35116,35117,35118,35119,35120,35121,35122,35123,35124,35125,35126,35127,35128,35129,35130,35131,35132,35133,35134,35135,35136,35137,35138,35139,35140,35141,35142,35143,35144,35145,35146,35147,35148,35149,35150,35151,35152,35153,35154,35155,35156,35157,35158,35159,35160,35161,35162,35163,35164,35165,35166,35167,35168,35169,35170,35171,35172,35173,35174,35175,35176,35177,35178,35179,35180,35181,35182,35183,35184,35185,35186,35187,35188,35189,35190,35191,35192,35193,35194,35195,35196,35197,35198,35199,35200,35201,35202,35203,35204,35205,35206,35207,35208,35209,35210,35211,35212,35213,35214,35215,35216,35217,35218,35219,35220,35221,35222,35223,35224,35225,35226,35227,35228,35229,35230,35231,35232,35233,35234,35235,35236,35237,35238,35239,35240,35241,35242,35243,35244,35245,35246,35247,35248,35249,35250,35251,35252,35253,35254,35255,35256,35257,35258,35259,35260,35261,35262,35263,35264,35265,35266,35267,35268,35269,35270,35271,35272,35273,35274,35275,35276,35277,35278,35279,35280,35281,35282,35283,35284,35285,35286,35287,35288,35289,35290,35291,35292,35293,35294,35295,35296,35297,35298,35299,35300,35301,35302,35303,35304,35305,35306,35307,35308,35309,35310,35311,35312,35313,35314,35315,35316,35317,35318,35319,35320,35321,35322,35323,35324,35325,35326,35327,35328,35329,35330,35331,35332,35333,35334,35335,35336,35337,35338,35339,35340,35341,35342,35343,35344,35345,35346,35347,35348,35349,35350,35351,35352,35353,35354,35355,35356,35357,35358,35359,35360,35361,35362,35363,35364,35365,35366,35367,35368,35369,35370,35371,35372,35373,35374,35375,35376,35377,35378,35379,35380,35381,35382,35383,35384,35385,35386,35387,35388,35389,35390,35391,35392,35393,35394,35395,35396,35397,35398,35399,35400,35401,35402,35403,35404,35405,35406,35407,35408,35409,35410,35411,35412,35413,35414,35415,35416,35417,35418,35419,35420,35421,35422,35423,35424,35425,35426,35427,35428,35429,35430,35431,35432,35433,35434,35435,35436,35437,35438,35439,35440,35441,35442,35443,35444,35445,35446,35447,35448,35449,35450,35451,35452,35453,35454,35455,35456,35457,35458,35459,35460,35461,35462,35463,35464,35465,35466,35467,35468,35469,35470,35471,35472,35473,35474,35475,35476,35477,35478,35479,35480,35481,35482,35483,35484,35485,35486,35487,35488,35489,35490,35491,35492,35493,35494,35495,35496,35497,35498,35499,35500,35501,35502,35503,35504,35505,35506,35507,35508,35509,35510,35511,35512,35513,35514,35515,35516,35517,35518,35519,35520,35521,35522,35523,35524,35525,35526,35527,35528,35529,35530,35531,35532,35533,35534,35535,35536,35537,35538,35539,35540,35541,35542,35543,35544,35545,35546,35547,35548,35549,35550,35551,35552,35553,35554,35555,35556,35557,35558,35559,35560,35561,35562,35563,35564,35565,35566,35567,35568,35569,35570,35571,35572,35573,35574,35575,35576,35577,35578,35579,35580,35581,35582,35583,35584,35585,35586,35587,35588,35589,35590,35591,35592,35593,35594,35595,35596,35597,35598,35599,35600,35601,35602,35603,35604,35605,35606,35607,35608,35609,35610,35611,35612,35613,35614,35615,35616,35617,35618,35619,35620,35621,35622,35623,35624,35625,35626,35627,35628,35629,35630,35631,35632,35633,35634,35635,35636,35637,35638,35639,35640,35641,35642,35643,35644,35645,35646,35647,35648,35649,35650,35651,35652,35653,35654,35655,35656,35657,35658,35659,35660,35661,35662,35663,35664,35665,35666,35667,35668,35669,35670,35671,35672,35673,35674,35675,35676,35677,35678,35679,35680,35681,35682,35683,35684,35685,35686,35687,35688,35689,35690,35691,35692,35693,35694,35695,35696,35697,35698,35699,35700,35701,35702,35703,35704,35705,35706,35707,35708,35709,35710,35711,35712,35713,35714,35715,35716,35717,35718,35719,35720,35721,35722,35723,35724,35725,35726,35727,35728,35729,35730,35731,35732,35733,35734,35735,35736,35737,35738,35739,35740,35741,35742,35743,35744,35745,35746,35747,35748,35749,35750,35751,35752,35753,35754,35755,35756,35757,35758,35759,35760,35761,35762,35763,35764,35765,35766,35767,35768,35769,35770,35771,35772,35773,35774,35775,35776,35777,35778,35779,35780,35781,35782,35783,35784,35785,35786,35787,35788,35789,35790,35791,35792,35793,35794,35795,35796,35797,35798,35799,35800,35801,35802,35803,35804,35805,35806,35807,35808,35809,35810,35811,35812,35813,35814,35815,35816,35817,35818,35819,35820,35821,35822,35823,35824,35825,35826,35827,35828,35829,35830,35831,35832,35833,35834,35835,35836,35837,35838,35839,35840,35841,35842,35843,35844,35845,35846,35847,35848,35849,35850,35851,35852,35853,35854,35855,35856,35857,35858,35859,35860,35861,35862,35863,35864,35865,35866,35867,35868,35869,35870,35871,35872,35873,35874,35875,35876,35877,35878,35879,35880,35881,35882,35883,35884,35885,35886,35887,35888,35889,35890,35891,35892,35893,35894,35895,35896,35897,35898,35899,35900,35901,35902,35903,35904,35905,35906,35907,35908,35909,35910,35911,35912,35913,35914,35915,35916,35917,35918,35919,35920,35921,35922,35923,35924,35925,35926,35927,35928,35929,35930,35931,35932,35933,35934,35935,35936,35937,35938,35939,35940,35941,35942,35943,35944,35945,35946,35947,35948,35949,35950,35951,35952,35953,35954,35955,35956,35957,35958,35959,35960,35961,35962,35963,35964,35965,35966,35967,35968,35969,35970,35971,35972,35973,35974,35975,35976,35977,35978,35979,35980,35981,35982,35983,35984,35985,35986,35987,35988,35989,35990,35991,35992,35993,35994,35995,35996,35997,35998,35999,36000,36001,36002,36003,36004,36005,36006,36007,36008,36009,36010,36011,36012,36013,36014,36015,36016,36017,36018,36019,36020,36021,36022,36023,36024,36025,36026,36027,36028,36029,36030,36031,36032,36033,36034,36035,36036,36037,36038,36039,36040,36041,36042,36043,36044,36045,36046,36047,36048,36049,36050,36051,36052,36053,36054,36055,36056,36057,36058,36059,36060,36061,36062,36063,36064,36065,36066,36067,36068,36069,36070,36071,36072,36073,36074,36075,36076,36077,36078,36079,36080,36081,36082,36083,36084,36085,36086,36087,36088,36089,36090,36091,36092,36093,36094,36095,36096,36097,36098,36099,36100,36101,36102,36103,36104,36105,36106,36107,36108,36109,36110,36111,36112,36113,36114,36115,36116,36117,36118,36119,36120,36121,36122,36123,36124,36125,36126,36127,36128,36129,36130,36131,36132,36133,36134,36135,36136,36137,36138,36139,36140,36141,36142,36143,36144,36145,36146,36147,36148,36149,36150,36151,36152,36153,36154,36155,36156,36157,36158,36159,36160,36161,36162,36163,36164,36165,36166,36167,36168,36169,36170,36171,36172,36173,36174,36175,36176,36177,36178,36179,36180,36181,36182,36183,36184,36185,36186,36187,36188,36189,36190,36191,36192,36193,36194,36195,36196,36197,36198,36199,36200,36201,36202,36203,36204,36205,36206,36207,36208,36209,36210,36211,36212,36213,36214,36215,36216,36217,36218,36219,36220,36221,36222,36223,36224,36225,36226,36227,36228,36229,36230,36231,36232,36233,36234,36235,36236,36237,36238,36239,36240,36241,36242,36243,36244,36245,36246,36247,36248,36249,36250,36251,36252,36253,36254,36255,36256,36257,36258,36259,36260,36261,36262,36263,36264,36265,36266,36267,36268,36269,36270,36271,36272,36273,36274,36275,36276,36277,36278,36279,36280,36281,36282,36283,36284,36285,36286,36287,36288,36289,36290,36291,36292,36293,36294,36295,36296,36297,36298,36299,36300,36301,36302,36303,36304,36305,36306,36307,36308,36309,36310,36311,36312,36313,36314,36315,36316,36317,36318,36319,36320,36321,36322,36323,36324,36325,36326,36327,36328,36329,36330,36331,36332,36333,36334,36335,36336,36337,36338,36339,36340,36341,36342,36343,36344,36345,36346,36347,36348,36349,36350,36351,36352,36353,36354,36355,36356,36357,36358,36359,36360,36361,36362,36363,36364,36365,36366,36367,36368,36369,36370,36371,36372,36373,36374,36375,36376,36377,36378,36379,36380,36381,36382,36383,36384,36385,36386,36387,36388,36389,36390,36391,36392,36393,36394,36395,36396,36397,36398,36399,36400,36401,36402,36403,36404,36405,36406,36407,36408,36409,36410,36411,36412,36413,36414,36415,36416,36417,36418,36419,36420,36421,36422,36423,36424,36425,36426,36427,36428,36429,36430,36431,36432,36433,36434,36435,36436,36437,36438,36439,36440,36441,36442,36443,36444,36445,36446,36447,36448,36449,36450,36451,36452,36453,36454,36455,36456,36457,36458,36459,36460,36461,36462,36463,36464,36465,36466,36467,36468,36469,36470,36471,36472,36473,36474,36475,36476,36477,36478,36479,36480,36481,36482,36483,36484,36485,36486,36487,36488,36489,36490,36491,36492,36493,36494,36495,36496,36497,36498,36499,36500,36501,36502,36503,36504,36505,36506,36507,36508,36509,36510,36511,36512,36513,36514,36515,36516,36517,36518,36519,36520,36521,36522,36523,36524,36525,36526,36527,36528,36529,36530,36531,36532,36533,36534,36535,36536,36537,36538,36539,36540,36541,36542,36543,36544,36545,36546,36547,36548,36549,36550,36551,36552,36553,36554,36555,36556,36557,36558,36559,36560,36561,36562,36563,36564,36565,36566,36567,36568,36569,36570,36571,36572,36573,36574,36575,36576,36577,36578,36579,36580,36581,36582,36583,36584,36585,36586,36587,36588,36589,36590,36591,36592,36593,36594,36595,36596,36597,36598,36599,36600,36601,36602,36603,36604,36605,36606,36607,36608,36609,36610,36611,36612,36613,36614,36615,36616,36617,36618,36619,36620,36621,36622,36623,36624,36625,36626,36627,36628,36629,36630,36631,36632,36633,36634,36635,36636,36637,36638,36639,36640,36641,36642,36643,36644,36645,36646,36647,36648,36649,36650,36651,36652,36653,36654,36655,36656,36657,36658,36659,36660,36661,36662,36663,36664,36665,36666,36667,36668,36669,36670,36671,36672,36673,36674,36675,36676,36677,36678,36679,36680,36681,36682,36683,36684,36685,36686,36687,36688,36689,36690,36691,36692,36693,36694,36695,36696,36697,36698,36699,36700,36701,36702,36703,36704,36705,36706,36707,36708,36709,36710,36711,36712,36713,36714,36715,36716,36717,36718,36719,36720,36721,36722,36723,36724,36725,36726,36727,36728,36729,36730,36731,36732,36733,36734,36735,36736,36737,36738,36739,36740,36741,36742,36743,36744,36745,36746,36747,36748,36749,36750,36751,36752,36753,36754,36755,36756,36757,36758,36759,36760,36761,36762,36763,36764,36765,36766,36767,36768,36769,36770,36771,36772,36773,36774,36775,36776,36777,36778,36779,36780,36781,36782,36783,36784,36785,36786,36787,36788,36789,36790,36791,36792,36793,36794,36795,36796,36797,36798,36799,36800,36801,36802,36803,36804,36805,36806,36807,36808,36809,36810,36811,36812,36813,36814,36815,36816,36817,36818,36819,36820,36821,36822,36823,36824,36825,36826,36827,36828,36829,36830,36831,36832,36833,36834,36835,36836,36837,36838,36839,36840,36841,36842,36843,36844,36845,36846,36847,36848,36849,36850,36851,36852,36853,36854,36855,36856,36857,36858,36859,36860,36861,36862,36863,36864,36865,36866,36867,36868,36869,36870,36871,36872,36873,36874,36875,36876,36877,36878,36879,36880,36881,36882,36883,36884,36885,36886,36887,36888,36889,36890,36891,36892,36893,36894,36895,36896,36897,36898,36899,36900,36901,36902,36903,36904,36905,36906,36907,36908,36909,36910,36911,36912,36913,36914,36915,36916,36917,36918,36919,36920,36921,36922,36923,36924,36925,36926,36927,36928,36929,36930,36931,36932,36933,36934,36935,36936,36937,36938,36939,36940,36941,36942,36943,36944,36945,36946,36947,36948,36949,36950,36951,36952,36953,36954,36955,36956,36957,36958,36959,36960,36961,36962,36963,36964,36965,36966,36967,36968,36969,36970,36971,36972,36973,36974,36975,36976,36977,36978,36979,36980,36981,36982,36983,36984,36985,36986,36987,36988,36989,36990,36991,36992,36993,36994,36995,36996,36997,36998,36999,37000,37001,37002,37003,37004,37005,37006,37007,37008,37009,37010,37011,37012,37013,37014,37015,37016,37017,37018,37019,37020,37021,37022,37023,37024,37025,37026,37027,37028,37029,37030,37031,37032,37033,37034,37035,37036,37037,37038,37039,37040,37041,37042,37043,37044,37045,37046,37047,37048,37049,37050,37051,37052,37053,37054,37055,37056,37057,37058,37059,37060,37061,37062,37063,37064,37065,37066,37067,37068,37069,37070,37071,37072,37073,37074,37075,37076,37077,37078,37079,37080,37081,37082,37083,37084,37085,37086,37087,37088,37089,37090,37091,37092,37093,37094,37095,37096,37097,37098,37099,37100,37101,37102,37103,37104,37105,37106,37107,37108,37109,37110,37111,37112,37113,37114,37115,37116,37117,37118,37119,37120,37121,37122,37123,37124,37125,37126,37127,37128,37129,37130,37131,37132,37133,37134,37135,37136,37137,37138,37139,37140,37141,37142,37143,37144,37145,37146,37147,37148,37149,37150,37151,37152,37153,37154,37155,37156,37157,37158,37159,37160,37161,37162,37163,37164,37165,37166,37167,37168,37169,37170,37171,37172,37173,37174,37175,37176,37177,37178,37179,37180,37181,37182,37183,37184,37185,37186,37187,37188,37189,37190,37191,37192,37193,37194,37195,37196,37197,37198,37199,37200,37201,37202,37203,37204,37205,37206,37207,37208,37209,37210,37211,37212,37213,37214,37215,37216,37217,37218,37219,37220,37221,37222,37223,37224,37225,37226,37227,37228,37229,37230,37231,37232,37233,37234,37235,37236,37237,37238,37239,37240,37241,37242,37243,37244,37245,37246,37247,37248,37249,37250,37251,37252,37253,37254,37255,37256,37257,37258,37259,37260,37261,37262,37263,37264,37265,37266,37267,37268,37269,37270,37271,37272,37273,37274,37275,37276,37277,37278,37279,37280,37281,37282,37283,37284,37285,37286,37287,37288,37289,37290,37291,37292,37293,37294,37295,37296,37297,37298,37299,37300,37301,37302,37303,37304,37305,37306,37307,37308,37309,37310,37311,37312,37313,37314,37315,37316,37317,37318,37319,37320,37321,37322,37323,37324,37325,37326,37327,37328,37329,37330,37331,37332,37333,37334,37335,37336,37337,37338,37339,37340,37341,37342,37343,37344,37345,37346,37347,37348,37349,37350,37351,37352,37353,37354,37355,37356,37357,37358,37359,37360,37361,37362,37363,37364,37365,37366,37367,37368,37369,37370,37371,37372,37373,37374,37375,37376,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37387,37388,37389,37390,37391,37392,37393,37394,37395,37396,37397,37398,37399,37400,37401,37402,37403,37404,37405,37406,37407,37408,37409,37410,37411,37412,37413,37414,37415,37416,37417,37418,37419,37420,37421,37422,37423,37424,37425,37426,37427,37428,37429,37430,37431,37432,37433,37434,37435,37436,37437,37438,37439,37440,37441,37442,37443,37444,37445,37446,37447,37448,37449,37450,37451,37452,37453,37454,37455,37456,37457,37458,37459,37460,37461,37462,37463,37464,37465,37466,37467,37468,37469,37470,37471,37472,37473,37474,37475,37476,37477,37478,37479,37480,37481,37482,37483,37484,37485,37486,37487,37488,37489,37490,37491,37492,37493,37494,37495,37496,37497,37498,37499,37500,37501,37502,37503,37504,37505,37506,37507,37508,37509,37510,37511,37512,37513,37514,37515,37516,37517,37518,37519,37520,37521,37522,37523,37524,37525,37526,37527,37528,37529,37530,37531,37532,37533,37534,37535,37536,37537,37538,37539,37540,37541,37542,37543,37544,37545,37546,37547,37548,37549,37550,37551,37552,37553,37554,37555,37556,37557,37558,37559,37560,37561,37562,37563,37564,37565,37566,37567,37568,37569,37570,37571,37572,37573,37574,37575,37576,37577,37578,37579,37580,37581,37582,37583,37584,37585,37586,37587,37588,37589,37590,37591,37592,37593,37594,37595,37596,37597,37598,37599,37600,37601,37602,37603,37604,37605,37606,37607,37608,37609,37610,37611,37612,37613,37614,37615,37616,37617,37618,37619,37620,37621,37622,37623,37624,37625,37626,37627,37628,37629,37630,37631,37632,37633,37634,37635,37636,37637,37638,37639,37640,37641,37642,37643,37644,37645,37646,37647,37648,37649,37650,37651,37652,37653,37654,37655,37656,37657,37658,37659,37660,37661,37662,37663,37664,37665,37666,37667,37668,37669,37670,37671,37672,37673,37674,37675,37676,37677,37678,37679,37680,37681,37682,37683,37684,37685,37686,37687,37688,37689,37690,37691,37692,37693,37694,37695,37696,37697,37698,37699,37700,37701,37702,37703,37704,37705,37706,37707,37708,37709,37710,37711,37712,37713,37714,37715,37716,37717,37718,37719,37720,37721,37722,37723,37724,37725,37726,37727,37728,37729,37730,37731,37732,37733,37734,37735,37736,37737,37738,37739,37740,37741,37742,37743,37744,37745,37746,37747,37748,37749,37750,37751,37752,37753,37754,37755,37756,37757,37758,37759,37760,37761,37762,37763,37764,37765,37766,37767,37768,37769,37770,37771,37772,37773,37774,37775,37776,37777,37778,37779,37780,37781,37782,37783,37784,37785,37786,37787,37788,37789,37790,37791,37792,37793,37794,37795,37796,37797,37798,37799,37800,37801,37802,37803,37804,37805,37806,37807,37808,37809,37810,37811,37812,37813,37814,37815,37816,37817,37818,37819,37820,37821,37822,37823,37824,37825,37826,37827,37828,37829,37830,37831,37832,37833,37834,37835,37836,37837,37838,37839,37840,37841,37842,37843,37844,37845,37846,37847,37848,37849,37850,37851,37852,37853,37854,37855,37856,37857,37858,37859,37860,37861,37862,37863,37864,37865,37866,37867,37868,37869,37870,37871,37872,37873,37874,37875,37876,37877,37878,37879,37880,37881,37882,37883,37884,37885,37886,37887,37888,37889,37890,37891,37892,37893,37894,37895,37896,37897,37898,37899,37900,37901,37902,37903,37904,37905,37906,37907,37908,37909,37910,37911,37912,37913,37914,37915,37916,37917,37918,37919,37920,37921,37922,37923,37924,37925,37926,37927,37928,37929,37930,37931,37932,37933,37934,37935,37936,37937,37938,37939,37940,37941,37942,37943,37944,37945,37946,37947,37948,37949,37950,37951,37952,37953,37954,37955,37956,37957,37958,37959,37960,37961,37962,37963,37964,37965,37966,37967,37968,37969,37970,37971,37972,37973,37974,37975,37976,37977,37978,37979,37980,37981,37982,37983,37984,37985,37986,37987,37988,37989,37990,37991,37992,37993,37994,37995,37996,37997,37998,37999,38000,38001,38002,38003,38004,38005,38006,38007,38008,38009,38010,38011,38012,38013,38014,38015,38016,38017,38018,38019,38020,38021,38022,38023,38024,38025,38026,38027,38028,38029,38030,38031,38032,38033,38034,38035,38036,38037,38038,38039,38040,38041,38042,38043,38044,38045,38046,38047,38048,38049,38050,38051,38052,38053,38054,38055,38056,38057,38058,38059,38060,38061,38062,38063,38064,38065,38066,38067,38068,38069,38070,38071,38072,38073,38074,38075,38076,38077,38078,38079,38080,38081,38082,38083,38084,38085,38086,38087,38088,38089,38090,38091,38092,38093,38094,38095,38096,38097,38098,38099,38100,38101,38102,38103,38104,38105,38106,38107,38108,38109,38110,38111,38112,38113,38114,38115,38116,38117,38118,38119,38120,38121,38122,38123,38124,38125,38126,38127,38128,38129,38130,38131,38132,38133,38134,38135,38136,38137,38138,38139,38140,38141,38142,38143,38144,38145,38146,38147,38148,38149,38150,38151,38152,38153,38154,38155,38156,38157,38158,38159,38160,38161,38162,38163,38164,38165,38166,38167,38168,38169,38170,38171,38172,38173,38174,38175,38176,38177,38178,38179,38180,38181,38182,38183,38184,38185,38186,38187,38188,38189,38190,38191,38192,38193,38194,38195,38196,38197,38198,38199,38200,38201,38202,38203,38204,38205,38206,38207,38208,38209,38210,38211,38212,38213,38214,38215,38216,38217,38218,38219,38220,38221,38222,38223,38224,38225,38226,38227,38228,38229,38230,38231,38232,38233,38234,38235,38236,38237,38238,38239,38240,38241,38242,38243,38244,38245,38246,38247,38248,38249,38250,38251,38252,38253,38254,38255,38256,38257,38258,38259,38260,38261,38262,38263,38264,38265,38266,38267,38268,38269,38270,38271,38272,38273,38274,38275,38276,38277,38278,38279,38280,38281,38282,38283,38284,38285,38286,38287,38288,38289,38290,38291,38292,38293,38294,38295,38296,38297,38298,38299,38300,38301,38302,38303,38304,38305,38306,38307,38308,38309,38310,38311,38312,38313,38314,38315,38316,38317,38318,38319,38320,38321,38322,38323,38324,38325,38326,38327,38328,38329,38330,38331,38332,38333,38334,38335,38336,38337,38338,38339,38340,38341,38342,38343,38344,38345,38346,38347,38348,38349,38350,38351,38352,38353,38354,38355,38356,38357,38358,38359,38360,38361,38362,38363,38364,38365,38366,38367,38368,38369,38370,38371,38372,38373,38374,38375,38376,38377,38378,38379,38380,38381,38382,38383,38384,38385,38386,38387,38388,38389,38390,38391,38392,38393,38394,38395,38396,38397,38398,38399,38400,38401,38402,38403,38404,38405,38406,38407,38408,38409,38410,38411,38412,38413,38414,38415,38416,38417,38418,38419,38420,38421,38422,38423,38424,38425,38426,38427,38428,38429,38430,38431,38432,38433,38434,38435,38436,38437,38438,38439,38440,38441,38442,38443,38444,38445,38446,38447,38448,38449,38450,38451,38452,38453,38454,38455,38456,38457,38458,38459,38460,38461,38462,38463,38464,38465,38466,38467,38468,38469,38470,38471,38472,38473,38474,38475,38476,38477,38478,38479,38480,38481,38482,38483,38484,38485,38486,38487,38488,38489,38490,38491,38492,38493,38494,38495,38496,38497,38498,38499,38500,38501,38502,38503,38504,38505,38506,38507,38508,38509,38510,38511,38512,38513,38514,38515,38516,38517,38518,38519,38520,38521,38522,38523,38524,38525,38526,38527,38528,38529,38530,38531,38532,38533,38534,38535,38536,38537,38538,38539,38540,38541,38542,38543,38544,38545,38546,38547,38548,38549,38550,38551,38552,38553,38554,38555,38556,38557,38558,38559,38560,38561,38562,38563,38564,38565,38566,38567,38568,38569,38570,38571,38572,38573,38574,38575,38576,38577,38578,38579,38580,38581,38582,38583,38584,38585,38586,38587,38588,38589,38590,38591,38592,38593,38594,38595,38596,38597,38598,38599,38600,38601,38602,38603,38604,38605,38606,38607,38608,38609,38610,38611,38612,38613,38614,38615,38616,38617,38618,38619,38620,38621,38622,38623,38624,38625,38626,38627,38628,38629,38630,38631,38632,38633,38634,38635,38636,38637,38638,38639,38640,38641,38642,38643,38644,38645,38646,38647,38648,38649,38650,38651,38652,38653,38654,38655,38656,38657,38658,38659,38660,38661,38662,38663,38664,38665,38666,38667,38668,38669,38670,38671,38672,38673,38674,38675,38676,38677,38678,38679,38680,38681,38682,38683,38684,38685,38686,38687,38688,38689,38690,38691,38692,38693,38694,38695,38696,38697,38698,38699,38700,38701,38702,38703,38704,38705,38706,38707,38708,38709,38710,38711,38712,38713,38714,38715,38716,38717,38718,38719,38720,38721,38722,38723,38724,38725,38726,38727,38728,38729,38730,38731,38732,38733,38734,38735,38736,38737,38738,38739,38740,38741,38742,38743,38744,38745,38746,38747,38748,38749,38750,38751,38752,38753,38754,38755,38756,38757,38758,38759,38760,38761,38762,38763,38764,38765,38766,38767,38768,38769,38770,38771,38772,38773,38774,38775,38776,38777,38778,38779,38780,38781,38782,38783,38784,38785,38786,38787,38788,38789,38790,38791,38792,38793,38794,38795,38796,38797,38798,38799,38800,38801,38802,38803,38804,38805,38806,38807,38808,38809,38810,38811,38812,38813,38814,38815,38816,38817,38818,38819,38820,38821,38822,38823,38824,38825,38826,38827,38828,38829,38830,38831,38832,38833,38834,38835,38836,38837,38838,38839,38840,38841,38842,38843,38844,38845,38846,38847,38848,38849,38850,38851,38852,38853,38854,38855,38856,38857,38858,38859,38860,38861,38862,38863,38864,38865,38866,38867,38868,38869,38870,38871,38872,38873,38874,38875,38876,38877,38878,38879,38880,38881,38882,38883,38884,38885,38886,38887,38888,38889,38890,38891,38892,38893,38894,38895,38896,38897,38898,38899,38900,38901,38902,38903,38904,38905,38906,38907,38908,38909,38910,38911,38912,38913,38914,38915,38916,38917,38918,38919,38920,38921,38922,38923,38924,38925,38926,38927,38928,38929,38930,38931,38932,38933,38934,38935,38936,38937,38938,38939,38940,38941,38942,38943,38944,38945,38946,38947,38948,38949,38950,38951,38952,38953,38954,38955,38956,38957,38958,38959,38960,38961,38962,38963,38964,38965,38966,38967,38968,38969,38970,38971,38972,38973,38974,38975,38976,38977,38978,38979,38980,38981,38982,38983,38984,38985,38986,38987,38988,38989,38990,38991,38992,38993,38994,38995,38996,38997,38998,38999,39000,39001,39002,39003,39004,39005,39006,39007,39008,39009,39010,39011,39012,39013,39014,39015,39016,39017,39018,39019,39020,39021,39022,39023,39024,39025,39026,39027,39028,39029,39030,39031,39032,39033,39034,39035,39036,39037,39038,39039,39040,39041,39042,39043,39044,39045,39046,39047,39048,39049,39050,39051,39052,39053,39054,39055,39056,39057,39058,39059,39060,39061,39062,39063,39064,39065,39066,39067,39068,39069,39070,39071,39072,39073,39074,39075,39076,39077,39078,39079,39080,39081,39082,39083,39084,39085,39086,39087,39088,39089,39090,39091,39092,39093,39094,39095,39096,39097,39098,39099,39100,39101,39102,39103,39104,39105,39106,39107,39108,39109,39110,39111,39112,39113,39114,39115,39116,39117,39118,39119,39120,39121,39122,39123,39124,39125,39126,39127,39128,39129,39130,39131,39132,39133,39134,39135,39136,39137,39138,39139,39140,39141,39142,39143,39144,39145,39146,39147,39148,39149,39150,39151,39152,39153,39154,39155,39156,39157,39158,39159,39160,39161,39162,39163,39164,39165,39166,39167,39168,39169,39170,39171,39172,39173,39174,39175,39176,39177,39178,39179,39180,39181,39182,39183,39184,39185,39186,39187,39188,39189,39190,39191,39192,39193,39194,39195,39196,39197,39198,39199,39200,39201,39202,39203,39204,39205,39206,39207,39208,39209,39210,39211,39212,39213,39214,39215,39216,39217,39218,39219,39220,39221,39222,39223,39224,39225,39226,39227,39228,39229,39230,39231,39232,39233,39234,39235,39236,39237,39238,39239,39240,39241,39242,39243,39244,39245,39246,39247,39248,39249,39250,39251,39252,39253,39254,39255,39256,39257,39258,39259,39260,39261,39262,39263,39264,39265,39266,39267,39268,39269,39270,39271,39272,39273,39274,39275,39276,39277,39278,39279,39280,39281,39282,39283,39284,39285,39286,39287,39288,39289,39290,39291,39292,39293,39294,39295,39296,39297,39298,39299,39300,39301,39302,39303,39304,39305,39306,39307,39308,39309,39310,39311,39312,39313,39314,39315,39316,39317,39318,39319,39320,39321,39322,39323,39324,39325,39326,39327,39328,39329,39330,39331,39332,39333,39334,39335,39336,39337,39338,39339,39340,39341,39342,39343,39344,39345,39346,39347,39348,39349,39350,39351,39352,39353,39354,39355,39356,39357,39358,39359,39360,39361,39362,39363,39364,39365,39366,39367,39368,39369,39370,39371,39372,39373,39374,39375,39376,39377,39378,39379,39380,39381,39382,39383,39384,39385,39386,39387,39388,39389,39390,39391,39392,39393,39394,39395,39396,39397,39398,39399,39400,39401,39402,39403,39404,39405,39406,39407,39408,39409,39410,39411,39412,39413,39414,39415,39416,39417,39418,39419,39420,39421,39422,39423,39424,39425,39426,39427,39428,39429,39430,39431,39432,39433,39434,39435,39436,39437,39438,39439,39440,39441,39442,39443,39444,39445,39446,39447,39448,39449,39450,39451,39452,39453,39454,39455,39456,39457,39458,39459,39460,39461,39462,39463,39464,39465,39466,39467,39468,39469,39470,39471,39472,39473,39474,39475,39476,39477,39478,39479,39480,39481,39482,39483,39484,39485,39486,39487,39488,39489,39490,39491,39492,39493,39494,39495,39496,39497,39498,39499,39500,39501,39502,39503,39504,39505,39506,39507,39508,39509,39510,39511,39512,39513,39514,39515,39516,39517,39518,39519,39520,39521,39522,39523,39524,39525,39526,39527,39528,39529,39530,39531,39532,39533,39534,39535,39536,39537,39538,39539,39540,39541,39542,39543,39544,39545,39546,39547,39548,39549,39550,39551,39552,39553,39554,39555,39556,39557,39558,39559,39560,39561,39562,39563,39564,39565,39566,39567,39568,39569,39570,39571,39572,39573,39574,39575,39576,39577,39578,39579,39580,39581,39582,39583,39584,39585,39586,39587,39588,39589,39590,39591,39592,39593,39594,39595,39596,39597,39598,39599,39600,39601,39602,39603,39604,39605,39606,39607,39608,39609,39610,39611,39612,39613,39614,39615,39616,39617,39618,39619,39620,39621,39622,39623,39624,39625,39626,39627,39628,39629,39630,39631,39632,39633,39634,39635,39636,39637,39638,39639,39640,39641,39642,39643,39644,39645,39646,39647,39648,39649,39650,39651,39652,39653,39654,39655,39656,39657,39658,39659,39660,39661,39662,39663,39664,39665,39666,39667,39668,39669,39670,39671,39672,39673,39674,39675,39676,39677,39678,39679,39680,39681,39682,39683,39684,39685,39686,39687,39688,39689,39690,39691,39692,39693,39694,39695,39696,39697,39698,39699,39700,39701,39702,39703,39704,39705,39706,39707,39708,39709,39710,39711,39712,39713,39714,39715,39716,39717,39718,39719,39720,39721,39722,39723,39724,39725,39726,39727,39728,39729,39730,39731,39732,39733,39734,39735,39736,39737,39738,39739,39740,39741,39742,39743,39744,39745,39746,39747,39748,39749,39750,39751,39752,39753,39754,39755,39756,39757,39758,39759,39760,39761,39762,39763,39764,39765,39766,39767,39768,39769,39770,39771,39772,39773,39774,39775,39776,39777,39778,39779,39780,39781,39782,39783,39784,39785,39786,39787,39788,39789,39790,39791,39792,39793,39794,39795,39796,39797,39798,39799,39800,39801,39802,39803,39804,39805,39806,39807,39808,39809,39810,39811,39812,39813,39814,39815,39816,39817,39818,39819,39820,39821,39822,39823,39824,39825,39826,39827,39828,39829,39830,39831,39832,39833,39834,39835,39836,39837,39838,39839,39840,39841,39842,39843,39844,39845,39846,39847,39848,39849,39850,39851,39852,39853,39854,39855,39856,39857,39858,39859,39860,39861,39862,39863,39864,39865,39866,39867,39868,39869,39870,39871,39872,39873,39874,39875,39876,39877,39878,39879,39880,39881,39882,39883,39884,39885,39886,39887,39888,39889,39890,39891,39892,39893,39894,39895,39896,39897,39898,39899,39900,39901,39902,39903,39904,39905,39906,39907,39908,39909,39910,39911,39912,39913,39914,39915,39916,39917,39918,39919,39920,39921,39922,39923,39924,39925,39926,39927,39928,39929,39930,39931,39932,39933,39934,39935,39936,39937,39938,39939,39940,39941,39942,39943,39944,39945,39946,39947,39948,39949,39950,39951,39952,39953,39954,39955,39956,39957,39958,39959,39960,39961,39962,39963,39964,39965,39966,39967,39968,39969,39970,39971,39972,39973,39974,39975,39976,39977,39978,39979,39980,39981,39982,39983,39984,39985,39986,39987,39988,39989,39990,39991,39992,39993,39994,39995,39996,39997,39998,39999,40000,40001,40002,40003,40004,40005,40006,40007,40008,40009,40010,40011,40012,40013,40014,40015,40016,40017,40018,40019,40020,40021,40022,40023,40024,40025,40026,40027,40028,40029,40030,40031,40032,40033,40034,40035,40036,40037,40038,40039,40040,40041,40042,40043,40044,40045,40046,40047,40048,40049,40050,40051,40052,40053,40054,40055,40056,40057,40058,40059,40060,40061,40062,40063,40064,40065,40066,40067,40068,40069,40070,40071,40072,40073,40074,40075,40076,40077,40078,40079,40080,40081,40082,40083,40084,40085,40086,40087,40088,40089,40090,40091,40092,40093,40094,40095,40096,40097,40098,40099,40100,40101,40102,40103,40104,40105,40106,40107,40108,40109,40110,40111,40112,40113,40114,40115,40116,40117,40118,40119,40120,40121,40122,40123,40124,40125,40126,40127,40128,40129,40130,40131,40132,40133,40134,40135,40136,40137,40138,40139,40140,40141,40142,40143,40144,40145,40146,40147,40148,40149,40150,40151,40152,40153,40154,40155,40156,40157,40158,40159,40160,40161,40162,40163,40164,40165,40166,40167,40168,40169,40170,40171,40172,40173,40174,40175,40176,40177,40178,40179,40180,40181,40182,40183,40184,40185,40186,40187,40188,40189,40190,40191,40192,40193,40194,40195,40196,40197,40198,40199,40200,40201,40202,40203,40204,40205,40206,40207,40208,40209,40210,40211,40212,40213,40214,40215,40216,40217,40218,40219,40220,40221,40222,40223,40224,40225,40226,40227,40228,40229,40230,40231,40232,40233,40234,40235,40236,40237,40238,40239,40240,40241,40242,40243,40244,40245,40246,40247,40248,40249,40250,40251,40252,40253,40254,40255,40256,40257,40258,40259,40260,40261,40262,40263,40264,40265,40266,40267,40268,40269,40270,40271,40272,40273,40274,40275,40276,40277,40278,40279,40280,40281,40282,40283,40284,40285,40286,40287,40288,40289,40290,40291,40292,40293,40294,40295,40296,40297,40298,40299,40300,40301,40302,40303,40304,40305,40306,40307,40308,40309,40310,40311,40312,40313,40314,40315,40316,40317,40318,40319,40320,40321,40322,40323,40324,40325,40326,40327,40328,40329,40330,40331,40332,40333,40334,40335,40336,40337,40338,40339,40340,40341,40342,40343,40344,40345,40346,40347,40348,40349,40350,40351,40352,40353,40354,40355,40356,40357,40358,40359,40360,40361,40362,40363,40364,40365,40366,40367,40368,40369,40370,40371,40372,40373,40374,40375,40376,40377,40378,40379,40380,40381,40382,40383,40384,40385,40386,40387,40388,40389,40390,40391,40392,40393,40394,40395,40396,40397,40398,40399,40400,40401,40402,40403,40404,40405,40406,40407,40408,40409,40410,40411,40412,40413,40414,40415,40416,40417,40418,40419,40420,40421,40422,40423,40424,40425,40426,40427,40428,40429,40430,40431,40432,40433,40434,40435,40436,40437,40438,40439,40440,40441,40442,40443,40444,40445,40446,40447,40448,40449,40450,40451,40452,40453,40454,40455,40456,40457,40458,40459,40460,40461,40462,40463,40464,40465,40466,40467,40468,40469,40470,40471,40472,40473,40474,40475,40476,40477,40478,40479,40480,40481,40482,40483,40484,40485,40486,40487,40488,40489,40490,40491,40492,40493,40494,40495,40496,40497,40498,40499,40500,40501,40502,40503,40504,40505,40506,40507,40508,40509,40510,40511,40512,40513,40514,40515,40516,40517,40518,40519,40520,40521,40522,40523,40524,40525,40526,40527,40528,40529,40530,40531,40532,40533,40534,40535,40536,40537,40538,40539,40540,40541,40542,40543,40544,40545,40546,40547,40548,40549,40550,40551,40552,40553,40554,40555,40556,40557,40558,40559,40560,40561,40562,40563,40564,40565,40566,40567,40568,40569,40570,40571,40572,40573,40574,40575,40576,40577,40578,40579,40580,40581,40582,40583,40584,40585,40586,40587,40588,40589,40590,40591,40592,40593,40594,40595,40596,40597,40598,40599,40600,40601,40602,40603,40604,40605,40606,40607,40608,40609,40610,40611,40612,40613,40614,40615,40616,40617,40618,40619,40620,40621,40622,40623,40624,40625,40626,40627,40628,40629,40630,40631,40632,40633,40634,40635,40636,40637,40638,40639,40640,40641,40642,40643,40644,40645,40646,40647,40648,40649,40650,40651,40652,40653,40654,40655,40656,40657,40658,40659,40660,40661,40662,40663,40664,40665,40666,40667,40668,40669,40670,40671,40672,40673,40674,40675,40676,40677,40678,40679,40680,40681,40682,40683,40684,40685,40686,40687,40688,40689,40690,40691,40692,40693,40694,40695,40696,40697,40698,40699,40700,40701,40702,40703,40704,40705,40706,40707,40708,40709,40710,40711,40712,40713,40714,40715,40716,40717,40718,40719,40720,40721,40722,40723,40724,40725,40726,40727,40728,40729,40730,40731,40732,40733,40734,40735,40736,40737,40738,40739,40740,40741,40742,40743,40744,40745,40746,40747,40748,40749,40750,40751,40752,40753,40754,40755,40756,40757,40758,40759,40760,40761,40762,40763,40764,40765,40766,40767,40768,40769,40770,40771,40772,40773,40774,40775,40776,40777,40778,40779,40780,40781,40782,40783,40784,40785,40786,40787,40788,40789,40790,40791,40792,40793,40794,40795,40796,40797,40798,40799,40800,40801,40802,40803,40804,40805,40806,40807,40808,40809,40810,40811,40812,40813,40814,40815,40816,40817,40818,40819,40820,40821,40822,40823,40824,40825,40826,40827,40828,40829,40830,40831,40832,40833,40834,40835,40836,40837,40838,40839,40840,40841,40842,40843,40844,40845,40846,40847,40848,40849,40850,40851,40852,40853,40854,40855,40856,40857,40858,40859,40860,40861,40862,40863,40864,40865,40866,40867,40868,40869,40870,40871,40872,40873,40874,40875,40876,40877,40878,40879,40880,40881,40882,40883,40884,40885,40886,40887,40888,40889,40890,40891,40892,40893,40894,40895,40896,40897,40898,40899,40900,40901,40902,40903,40904,40905,40906,40907,40908,40960,40961,40962,40963,40964,40965,40966,40967,40968,40969,40970,40971,40972,40973,40974,40975,40976,40977,40978,40979,40980,40981,40982,40983,40984,40985,40986,40987,40988,40989,40990,40991,40992,40993,40994,40995,40996,40997,40998,40999,41000,41001,41002,41003,41004,41005,41006,41007,41008,41009,41010,41011,41012,41013,41014,41015,41016,41017,41018,41019,41020,41021,41022,41023,41024,41025,41026,41027,41028,41029,41030,41031,41032,41033,41034,41035,41036,41037,41038,41039,41040,41041,41042,41043,41044,41045,41046,41047,41048,41049,41050,41051,41052,41053,41054,41055,41056,41057,41058,41059,41060,41061,41062,41063,41064,41065,41066,41067,41068,41069,41070,41071,41072,41073,41074,41075,41076,41077,41078,41079,41080,41081,41082,41083,41084,41085,41086,41087,41088,41089,41090,41091,41092,41093,41094,41095,41096,41097,41098,41099,41100,41101,41102,41103,41104,41105,41106,41107,41108,41109,41110,41111,41112,41113,41114,41115,41116,41117,41118,41119,41120,41121,41122,41123,41124,41125,41126,41127,41128,41129,41130,41131,41132,41133,41134,41135,41136,41137,41138,41139,41140,41141,41142,41143,41144,41145,41146,41147,41148,41149,41150,41151,41152,41153,41154,41155,41156,41157,41158,41159,41160,41161,41162,41163,41164,41165,41166,41167,41168,41169,41170,41171,41172,41173,41174,41175,41176,41177,41178,41179,41180,41181,41182,41183,41184,41185,41186,41187,41188,41189,41190,41191,41192,41193,41194,41195,41196,41197,41198,41199,41200,41201,41202,41203,41204,41205,41206,41207,41208,41209,41210,41211,41212,41213,41214,41215,41216,41217,41218,41219,41220,41221,41222,41223,41224,41225,41226,41227,41228,41229,41230,41231,41232,41233,41234,41235,41236,41237,41238,41239,41240,41241,41242,41243,41244,41245,41246,41247,41248,41249,41250,41251,41252,41253,41254,41255,41256,41257,41258,41259,41260,41261,41262,41263,41264,41265,41266,41267,41268,41269,41270,41271,41272,41273,41274,41275,41276,41277,41278,41279,41280,41281,41282,41283,41284,41285,41286,41287,41288,41289,41290,41291,41292,41293,41294,41295,41296,41297,41298,41299,41300,41301,41302,41303,41304,41305,41306,41307,41308,41309,41310,41311,41312,41313,41314,41315,41316,41317,41318,41319,41320,41321,41322,41323,41324,41325,41326,41327,41328,41329,41330,41331,41332,41333,41334,41335,41336,41337,41338,41339,41340,41341,41342,41343,41344,41345,41346,41347,41348,41349,41350,41351,41352,41353,41354,41355,41356,41357,41358,41359,41360,41361,41362,41363,41364,41365,41366,41367,41368,41369,41370,41371,41372,41373,41374,41375,41376,41377,41378,41379,41380,41381,41382,41383,41384,41385,41386,41387,41388,41389,41390,41391,41392,41393,41394,41395,41396,41397,41398,41399,41400,41401,41402,41403,41404,41405,41406,41407,41408,41409,41410,41411,41412,41413,41414,41415,41416,41417,41418,41419,41420,41421,41422,41423,41424,41425,41426,41427,41428,41429,41430,41431,41432,41433,41434,41435,41436,41437,41438,41439,41440,41441,41442,41443,41444,41445,41446,41447,41448,41449,41450,41451,41452,41453,41454,41455,41456,41457,41458,41459,41460,41461,41462,41463,41464,41465,41466,41467,41468,41469,41470,41471,41472,41473,41474,41475,41476,41477,41478,41479,41480,41481,41482,41483,41484,41485,41486,41487,41488,41489,41490,41491,41492,41493,41494,41495,41496,41497,41498,41499,41500,41501,41502,41503,41504,41505,41506,41507,41508,41509,41510,41511,41512,41513,41514,41515,41516,41517,41518,41519,41520,41521,41522,41523,41524,41525,41526,41527,41528,41529,41530,41531,41532,41533,41534,41535,41536,41537,41538,41539,41540,41541,41542,41543,41544,41545,41546,41547,41548,41549,41550,41551,41552,41553,41554,41555,41556,41557,41558,41559,41560,41561,41562,41563,41564,41565,41566,41567,41568,41569,41570,41571,41572,41573,41574,41575,41576,41577,41578,41579,41580,41581,41582,41583,41584,41585,41586,41587,41588,41589,41590,41591,41592,41593,41594,41595,41596,41597,41598,41599,41600,41601,41602,41603,41604,41605,41606,41607,41608,41609,41610,41611,41612,41613,41614,41615,41616,41617,41618,41619,41620,41621,41622,41623,41624,41625,41626,41627,41628,41629,41630,41631,41632,41633,41634,41635,41636,41637,41638,41639,41640,41641,41642,41643,41644,41645,41646,41647,41648,41649,41650,41651,41652,41653,41654,41655,41656,41657,41658,41659,41660,41661,41662,41663,41664,41665,41666,41667,41668,41669,41670,41671,41672,41673,41674,41675,41676,41677,41678,41679,41680,41681,41682,41683,41684,41685,41686,41687,41688,41689,41690,41691,41692,41693,41694,41695,41696,41697,41698,41699,41700,41701,41702,41703,41704,41705,41706,41707,41708,41709,41710,41711,41712,41713,41714,41715,41716,41717,41718,41719,41720,41721,41722,41723,41724,41725,41726,41727,41728,41729,41730,41731,41732,41733,41734,41735,41736,41737,41738,41739,41740,41741,41742,41743,41744,41745,41746,41747,41748,41749,41750,41751,41752,41753,41754,41755,41756,41757,41758,41759,41760,41761,41762,41763,41764,41765,41766,41767,41768,41769,41770,41771,41772,41773,41774,41775,41776,41777,41778,41779,41780,41781,41782,41783,41784,41785,41786,41787,41788,41789,41790,41791,41792,41793,41794,41795,41796,41797,41798,41799,41800,41801,41802,41803,41804,41805,41806,41807,41808,41809,41810,41811,41812,41813,41814,41815,41816,41817,41818,41819,41820,41821,41822,41823,41824,41825,41826,41827,41828,41829,41830,41831,41832,41833,41834,41835,41836,41837,41838,41839,41840,41841,41842,41843,41844,41845,41846,41847,41848,41849,41850,41851,41852,41853,41854,41855,41856,41857,41858,41859,41860,41861,41862,41863,41864,41865,41866,41867,41868,41869,41870,41871,41872,41873,41874,41875,41876,41877,41878,41879,41880,41881,41882,41883,41884,41885,41886,41887,41888,41889,41890,41891,41892,41893,41894,41895,41896,41897,41898,41899,41900,41901,41902,41903,41904,41905,41906,41907,41908,41909,41910,41911,41912,41913,41914,41915,41916,41917,41918,41919,41920,41921,41922,41923,41924,41925,41926,41927,41928,41929,41930,41931,41932,41933,41934,41935,41936,41937,41938,41939,41940,41941,41942,41943,41944,41945,41946,41947,41948,41949,41950,41951,41952,41953,41954,41955,41956,41957,41958,41959,41960,41961,41962,41963,41964,41965,41966,41967,41968,41969,41970,41971,41972,41973,41974,41975,41976,41977,41978,41979,41980,41981,41982,41983,41984,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,41997,41998,41999,42000,42001,42002,42003,42004,42005,42006,42007,42008,42009,42010,42011,42012,42013,42014,42015,42016,42017,42018,42019,42020,42021,42022,42023,42024,42025,42026,42027,42028,42029,42030,42031,42032,42033,42034,42035,42036,42037,42038,42039,42040,42041,42042,42043,42044,42045,42046,42047,42048,42049,42050,42051,42052,42053,42054,42055,42056,42057,42058,42059,42060,42061,42062,42063,42064,42065,42066,42067,42068,42069,42070,42071,42072,42073,42074,42075,42076,42077,42078,42079,42080,42081,42082,42083,42084,42085,42086,42087,42088,42089,42090,42091,42092,42093,42094,42095,42096,42097,42098,42099,42100,42101,42102,42103,42104,42105,42106,42107,42108,42109,42110,42111,42112,42113,42114,42115,42116,42117,42118,42119,42120,42121,42122,42123,42124,42192,42193,42194,42195,42196,42197,42198,42199,42200,42201,42202,42203,42204,42205,42206,42207,42208,42209,42210,42211,42212,42213,42214,42215,42216,42217,42218,42219,42220,42221,42222,42223,42224,42225,42226,42227,42228,42229,42230,42231,42232,42233,42234,42235,42236,42237,42240,42241,42242,42243,42244,42245,42246,42247,42248,42249,42250,42251,42252,42253,42254,42255,42256,42257,42258,42259,42260,42261,42262,42263,42264,42265,42266,42267,42268,42269,42270,42271,42272,42273,42274,42275,42276,42277,42278,42279,42280,42281,42282,42283,42284,42285,42286,42287,42288,42289,42290,42291,42292,42293,42294,42295,42296,42297,42298,42299,42300,42301,42302,42303,42304,42305,42306,42307,42308,42309,42310,42311,42312,42313,42314,42315,42316,42317,42318,42319,42320,42321,42322,42323,42324,42325,42326,42327,42328,42329,42330,42331,42332,42333,42334,42335,42336,42337,42338,42339,42340,42341,42342,42343,42344,42345,42346,42347,42348,42349,42350,42351,42352,42353,42354,42355,42356,42357,42358,42359,42360,42361,42362,42363,42364,42365,42366,42367,42368,42369,42370,42371,42372,42373,42374,42375,42376,42377,42378,42379,42380,42381,42382,42383,42384,42385,42386,42387,42388,42389,42390,42391,42392,42393,42394,42395,42396,42397,42398,42399,42400,42401,42402,42403,42404,42405,42406,42407,42408,42409,42410,42411,42412,42413,42414,42415,42416,42417,42418,42419,42420,42421,42422,42423,42424,42425,42426,42427,42428,42429,42430,42431,42432,42433,42434,42435,42436,42437,42438,42439,42440,42441,42442,42443,42444,42445,42446,42447,42448,42449,42450,42451,42452,42453,42454,42455,42456,42457,42458,42459,42460,42461,42462,42463,42464,42465,42466,42467,42468,42469,42470,42471,42472,42473,42474,42475,42476,42477,42478,42479,42480,42481,42482,42483,42484,42485,42486,42487,42488,42489,42490,42491,42492,42493,42494,42495,42496,42497,42498,42499,42500,42501,42502,42503,42504,42505,42506,42507,42508,42512,42513,42514,42515,42516,42517,42518,42519,42520,42521,42522,42523,42524,42525,42526,42527,42538,42539,42560,42561,42562,42563,42564,42565,42566,42567,42568,42569,42570,42571,42572,42573,42574,42575,42576,42577,42578,42579,42580,42581,42582,42583,42584,42585,42586,42587,42588,42589,42590,42591,42592,42593,42594,42595,42596,42597,42598,42599,42600,42601,42602,42603,42604,42605,42606,42623,42624,42625,42626,42627,42628,42629,42630,42631,42632,42633,42634,42635,42636,42637,42638,42639,42640,42641,42642,42643,42644,42645,42646,42647,42656,42657,42658,42659,42660,42661,42662,42663,42664,42665,42666,42667,42668,42669,42670,42671,42672,42673,42674,42675,42676,42677,42678,42679,42680,42681,42682,42683,42684,42685,42686,42687,42688,42689,42690,42691,42692,42693,42694,42695,42696,42697,42698,42699,42700,42701,42702,42703,42704,42705,42706,42707,42708,42709,42710,42711,42712,42713,42714,42715,42716,42717,42718,42719,42720,42721,42722,42723,42724,42725,42726,42727,42728,42729,42730,42731,42732,42733,42734,42735,42775,42776,42777,42778,42779,42780,42781,42782,42783,42786,42787,42788,42789,42790,42791,42792,42793,42794,42795,42796,42797,42798,42799,42800,42801,42802,42803,42804,42805,42806,42807,42808,42809,42810,42811,42812,42813,42814,42815,42816,42817,42818,42819,42820,42821,42822,42823,42824,42825,42826,42827,42828,42829,42830,42831,42832,42833,42834,42835,42836,42837,42838,42839,42840,42841,42842,42843,42844,42845,42846,42847,42848,42849,42850,42851,42852,42853,42854,42855,42856,42857,42858,42859,42860,42861,42862,42863,42864,42865,42866,42867,42868,42869,42870,42871,42872,42873,42874,42875,42876,42877,42878,42879,42880,42881,42882,42883,42884,42885,42886,42887,42888,42891,42892,42893,42894,42896,42897,42898,42899,42912,42913,42914,42915,42916,42917,42918,42919,42920,42921,42922,43000,43001,43002,43003,43004,43005,43006,43007,43008,43009,43011,43012,43013,43015,43016,43017,43018,43020,43021,43022,43023,43024,43025,43026,43027,43028,43029,43030,43031,43032,43033,43034,43035,43036,43037,43038,43039,43040,43041,43042,43072,43073,43074,43075,43076,43077,43078,43079,43080,43081,43082,43083,43084,43085,43086,43087,43088,43089,43090,43091,43092,43093,43094,43095,43096,43097,43098,43099,43100,43101,43102,43103,43104,43105,43106,43107,43108,43109,43110,43111,43112,43113,43114,43115,43116,43117,43118,43119,43120,43121,43122,43123,43138,43139,43140,43141,43142,43143,43144,43145,43146,43147,43148,43149,43150,43151,43152,43153,43154,43155,43156,43157,43158,43159,43160,43161,43162,43163,43164,43165,43166,43167,43168,43169,43170,43171,43172,43173,43174,43175,43176,43177,43178,43179,43180,43181,43182,43183,43184,43185,43186,43187,43250,43251,43252,43253,43254,43255,43259,43274,43275,43276,43277,43278,43279,43280,43281,43282,43283,43284,43285,43286,43287,43288,43289,43290,43291,43292,43293,43294,43295,43296,43297,43298,43299,43300,43301,43312,43313,43314,43315,43316,43317,43318,43319,43320,43321,43322,43323,43324,43325,43326,43327,43328,43329,43330,43331,43332,43333,43334,43360,43361,43362,43363,43364,43365,43366,43367,43368,43369,43370,43371,43372,43373,43374,43375,43376,43377,43378,43379,43380,43381,43382,43383,43384,43385,43386,43387,43388,43396,43397,43398,43399,43400,43401,43402,43403,43404,43405,43406,43407,43408,43409,43410,43411,43412,43413,43414,43415,43416,43417,43418,43419,43420,43421,43422,43423,43424,43425,43426,43427,43428,43429,43430,43431,43432,43433,43434,43435,43436,43437,43438,43439,43440,43441,43442,43471,43520,43521,43522,43523,43524,43525,43526,43527,43528,43529,43530,43531,43532,43533,43534,43535,43536,43537,43538,43539,43540,43541,43542,43543,43544,43545,43546,43547,43548,43549,43550,43551,43552,43553,43554,43555,43556,43557,43558,43559,43560,43584,43585,43586,43588,43589,43590,43591,43592,43593,43594,43595,43616,43617,43618,43619,43620,43621,43622,43623,43624,43625,43626,43627,43628,43629,43630,43631,43632,43633,43634,43635,43636,43637,43638,43642,43648,43649,43650,43651,43652,43653,43654,43655,43656,43657,43658,43659,43660,43661,43662,43663,43664,43665,43666,43667,43668,43669,43670,43671,43672,43673,43674,43675,43676,43677,43678,43679,43680,43681,43682,43683,43684,43685,43686,43687,43688,43689,43690,43691,43692,43693,43694,43695,43697,43701,43702,43705,43706,43707,43708,43709,43712,43714,43739,43740,43741,43744,43745,43746,43747,43748,43749,43750,43751,43752,43753,43754,43762,43763,43764,43777,43778,43779,43780,43781,43782,43785,43786,43787,43788,43789,43790,43793,43794,43795,43796,43797,43798,43808,43809,43810,43811,43812,43813,43814,43816,43817,43818,43819,43820,43821,43822,43968,43969,43970,43971,43972,43973,43974,43975,43976,43977,43978,43979,43980,43981,43982,43983,43984,43985,43986,43987,43988,43989,43990,43991,43992,43993,43994,43995,43996,43997,43998,43999,44000,44001,44002,44032,44033,44034,44035,44036,44037,44038,44039,44040,44041,44042,44043,44044,44045,44046,44047,44048,44049,44050,44051,44052,44053,44054,44055,44056,44057,44058,44059,44060,44061,44062,44063,44064,44065,44066,44067,44068,44069,44070,44071,44072,44073,44074,44075,44076,44077,44078,44079,44080,44081,44082,44083,44084,44085,44086,44087,44088,44089,44090,44091,44092,44093,44094,44095,44096,44097,44098,44099,44100,44101,44102,44103,44104,44105,44106,44107,44108,44109,44110,44111,44112,44113,44114,44115,44116,44117,44118,44119,44120,44121,44122,44123,44124,44125,44126,44127,44128,44129,44130,44131,44132,44133,44134,44135,44136,44137,44138,44139,44140,44141,44142,44143,44144,44145,44146,44147,44148,44149,44150,44151,44152,44153,44154,44155,44156,44157,44158,44159,44160,44161,44162,44163,44164,44165,44166,44167,44168,44169,44170,44171,44172,44173,44174,44175,44176,44177,44178,44179,44180,44181,44182,44183,44184,44185,44186,44187,44188,44189,44190,44191,44192,44193,44194,44195,44196,44197,44198,44199,44200,44201,44202,44203,44204,44205,44206,44207,44208,44209,44210,44211,44212,44213,44214,44215,44216,44217,44218,44219,44220,44221,44222,44223,44224,44225,44226,44227,44228,44229,44230,44231,44232,44233,44234,44235,44236,44237,44238,44239,44240,44241,44242,44243,44244,44245,44246,44247,44248,44249,44250,44251,44252,44253,44254,44255,44256,44257,44258,44259,44260,44261,44262,44263,44264,44265,44266,44267,44268,44269,44270,44271,44272,44273,44274,44275,44276,44277,44278,44279,44280,44281,44282,44283,44284,44285,44286,44287,44288,44289,44290,44291,44292,44293,44294,44295,44296,44297,44298,44299,44300,44301,44302,44303,44304,44305,44306,44307,44308,44309,44310,44311,44312,44313,44314,44315,44316,44317,44318,44319,44320,44321,44322,44323,44324,44325,44326,44327,44328,44329,44330,44331,44332,44333,44334,44335,44336,44337,44338,44339,44340,44341,44342,44343,44344,44345,44346,44347,44348,44349,44350,44351,44352,44353,44354,44355,44356,44357,44358,44359,44360,44361,44362,44363,44364,44365,44366,44367,44368,44369,44370,44371,44372,44373,44374,44375,44376,44377,44378,44379,44380,44381,44382,44383,44384,44385,44386,44387,44388,44389,44390,44391,44392,44393,44394,44395,44396,44397,44398,44399,44400,44401,44402,44403,44404,44405,44406,44407,44408,44409,44410,44411,44412,44413,44414,44415,44416,44417,44418,44419,44420,44421,44422,44423,44424,44425,44426,44427,44428,44429,44430,44431,44432,44433,44434,44435,44436,44437,44438,44439,44440,44441,44442,44443,44444,44445,44446,44447,44448,44449,44450,44451,44452,44453,44454,44455,44456,44457,44458,44459,44460,44461,44462,44463,44464,44465,44466,44467,44468,44469,44470,44471,44472,44473,44474,44475,44476,44477,44478,44479,44480,44481,44482,44483,44484,44485,44486,44487,44488,44489,44490,44491,44492,44493,44494,44495,44496,44497,44498,44499,44500,44501,44502,44503,44504,44505,44506,44507,44508,44509,44510,44511,44512,44513,44514,44515,44516,44517,44518,44519,44520,44521,44522,44523,44524,44525,44526,44527,44528,44529,44530,44531,44532,44533,44534,44535,44536,44537,44538,44539,44540,44541,44542,44543,44544,44545,44546,44547,44548,44549,44550,44551,44552,44553,44554,44555,44556,44557,44558,44559,44560,44561,44562,44563,44564,44565,44566,44567,44568,44569,44570,44571,44572,44573,44574,44575,44576,44577,44578,44579,44580,44581,44582,44583,44584,44585,44586,44587,44588,44589,44590,44591,44592,44593,44594,44595,44596,44597,44598,44599,44600,44601,44602,44603,44604,44605,44606,44607,44608,44609,44610,44611,44612,44613,44614,44615,44616,44617,44618,44619,44620,44621,44622,44623,44624,44625,44626,44627,44628,44629,44630,44631,44632,44633,44634,44635,44636,44637,44638,44639,44640,44641,44642,44643,44644,44645,44646,44647,44648,44649,44650,44651,44652,44653,44654,44655,44656,44657,44658,44659,44660,44661,44662,44663,44664,44665,44666,44667,44668,44669,44670,44671,44672,44673,44674,44675,44676,44677,44678,44679,44680,44681,44682,44683,44684,44685,44686,44687,44688,44689,44690,44691,44692,44693,44694,44695,44696,44697,44698,44699,44700,44701,44702,44703,44704,44705,44706,44707,44708,44709,44710,44711,44712,44713,44714,44715,44716,44717,44718,44719,44720,44721,44722,44723,44724,44725,44726,44727,44728,44729,44730,44731,44732,44733,44734,44735,44736,44737,44738,44739,44740,44741,44742,44743,44744,44745,44746,44747,44748,44749,44750,44751,44752,44753,44754,44755,44756,44757,44758,44759,44760,44761,44762,44763,44764,44765,44766,44767,44768,44769,44770,44771,44772,44773,44774,44775,44776,44777,44778,44779,44780,44781,44782,44783,44784,44785,44786,44787,44788,44789,44790,44791,44792,44793,44794,44795,44796,44797,44798,44799,44800,44801,44802,44803,44804,44805,44806,44807,44808,44809,44810,44811,44812,44813,44814,44815,44816,44817,44818,44819,44820,44821,44822,44823,44824,44825,44826,44827,44828,44829,44830,44831,44832,44833,44834,44835,44836,44837,44838,44839,44840,44841,44842,44843,44844,44845,44846,44847,44848,44849,44850,44851,44852,44853,44854,44855,44856,44857,44858,44859,44860,44861,44862,44863,44864,44865,44866,44867,44868,44869,44870,44871,44872,44873,44874,44875,44876,44877,44878,44879,44880,44881,44882,44883,44884,44885,44886,44887,44888,44889,44890,44891,44892,44893,44894,44895,44896,44897,44898,44899,44900,44901,44902,44903,44904,44905,44906,44907,44908,44909,44910,44911,44912,44913,44914,44915,44916,44917,44918,44919,44920,44921,44922,44923,44924,44925,44926,44927,44928,44929,44930,44931,44932,44933,44934,44935,44936,44937,44938,44939,44940,44941,44942,44943,44944,44945,44946,44947,44948,44949,44950,44951,44952,44953,44954,44955,44956,44957,44958,44959,44960,44961,44962,44963,44964,44965,44966,44967,44968,44969,44970,44971,44972,44973,44974,44975,44976,44977,44978,44979,44980,44981,44982,44983,44984,44985,44986,44987,44988,44989,44990,44991,44992,44993,44994,44995,44996,44997,44998,44999,45000,45001,45002,45003,45004,45005,45006,45007,45008,45009,45010,45011,45012,45013,45014,45015,45016,45017,45018,45019,45020,45021,45022,45023,45024,45025,45026,45027,45028,45029,45030,45031,45032,45033,45034,45035,45036,45037,45038,45039,45040,45041,45042,45043,45044,45045,45046,45047,45048,45049,45050,45051,45052,45053,45054,45055,45056,45057,45058,45059,45060,45061,45062,45063,45064,45065,45066,45067,45068,45069,45070,45071,45072,45073,45074,45075,45076,45077,45078,45079,45080,45081,45082,45083,45084,45085,45086,45087,45088,45089,45090,45091,45092,45093,45094,45095,45096,45097,45098,45099,45100,45101,45102,45103,45104,45105,45106,45107,45108,45109,45110,45111,45112,45113,45114,45115,45116,45117,45118,45119,45120,45121,45122,45123,45124,45125,45126,45127,45128,45129,45130,45131,45132,45133,45134,45135,45136,45137,45138,45139,45140,45141,45142,45143,45144,45145,45146,45147,45148,45149,45150,45151,45152,45153,45154,45155,45156,45157,45158,45159,45160,45161,45162,45163,45164,45165,45166,45167,45168,45169,45170,45171,45172,45173,45174,45175,45176,45177,45178,45179,45180,45181,45182,45183,45184,45185,45186,45187,45188,45189,45190,45191,45192,45193,45194,45195,45196,45197,45198,45199,45200,45201,45202,45203,45204,45205,45206,45207,45208,45209,45210,45211,45212,45213,45214,45215,45216,45217,45218,45219,45220,45221,45222,45223,45224,45225,45226,45227,45228,45229,45230,45231,45232,45233,45234,45235,45236,45237,45238,45239,45240,45241,45242,45243,45244,45245,45246,45247,45248,45249,45250,45251,45252,45253,45254,45255,45256,45257,45258,45259,45260,45261,45262,45263,45264,45265,45266,45267,45268,45269,45270,45271,45272,45273,45274,45275,45276,45277,45278,45279,45280,45281,45282,45283,45284,45285,45286,45287,45288,45289,45290,45291,45292,45293,45294,45295,45296,45297,45298,45299,45300,45301,45302,45303,45304,45305,45306,45307,45308,45309,45310,45311,45312,45313,45314,45315,45316,45317,45318,45319,45320,45321,45322,45323,45324,45325,45326,45327,45328,45329,45330,45331,45332,45333,45334,45335,45336,45337,45338,45339,45340,45341,45342,45343,45344,45345,45346,45347,45348,45349,45350,45351,45352,45353,45354,45355,45356,45357,45358,45359,45360,45361,45362,45363,45364,45365,45366,45367,45368,45369,45370,45371,45372,45373,45374,45375,45376,45377,45378,45379,45380,45381,45382,45383,45384,45385,45386,45387,45388,45389,45390,45391,45392,45393,45394,45395,45396,45397,45398,45399,45400,45401,45402,45403,45404,45405,45406,45407,45408,45409,45410,45411,45412,45413,45414,45415,45416,45417,45418,45419,45420,45421,45422,45423,45424,45425,45426,45427,45428,45429,45430,45431,45432,45433,45434,45435,45436,45437,45438,45439,45440,45441,45442,45443,45444,45445,45446,45447,45448,45449,45450,45451,45452,45453,45454,45455,45456,45457,45458,45459,45460,45461,45462,45463,45464,45465,45466,45467,45468,45469,45470,45471,45472,45473,45474,45475,45476,45477,45478,45479,45480,45481,45482,45483,45484,45485,45486,45487,45488,45489,45490,45491,45492,45493,45494,45495,45496,45497,45498,45499,45500,45501,45502,45503,45504,45505,45506,45507,45508,45509,45510,45511,45512,45513,45514,45515,45516,45517,45518,45519,45520,45521,45522,45523,45524,45525,45526,45527,45528,45529,45530,45531,45532,45533,45534,45535,45536,45537,45538,45539,45540,45541,45542,45543,45544,45545,45546,45547,45548,45549,45550,45551,45552,45553,45554,45555,45556,45557,45558,45559,45560,45561,45562,45563,45564,45565,45566,45567,45568,45569,45570,45571,45572,45573,45574,45575,45576,45577,45578,45579,45580,45581,45582,45583,45584,45585,45586,45587,45588,45589,45590,45591,45592,45593,45594,45595,45596,45597,45598,45599,45600,45601,45602,45603,45604,45605,45606,45607,45608,45609,45610,45611,45612,45613,45614,45615,45616,45617,45618,45619,45620,45621,45622,45623,45624,45625,45626,45627,45628,45629,45630,45631,45632,45633,45634,45635,45636,45637,45638,45639,45640,45641,45642,45643,45644,45645,45646,45647,45648,45649,45650,45651,45652,45653,45654,45655,45656,45657,45658,45659,45660,45661,45662,45663,45664,45665,45666,45667,45668,45669,45670,45671,45672,45673,45674,45675,45676,45677,45678,45679,45680,45681,45682,45683,45684,45685,45686,45687,45688,45689,45690,45691,45692,45693,45694,45695,45696,45697,45698,45699,45700,45701,45702,45703,45704,45705,45706,45707,45708,45709,45710,45711,45712,45713,45714,45715,45716,45717,45718,45719,45720,45721,45722,45723,45724,45725,45726,45727,45728,45729,45730,45731,45732,45733,45734,45735,45736,45737,45738,45739,45740,45741,45742,45743,45744,45745,45746,45747,45748,45749,45750,45751,45752,45753,45754,45755,45756,45757,45758,45759,45760,45761,45762,45763,45764,45765,45766,45767,45768,45769,45770,45771,45772,45773,45774,45775,45776,45777,45778,45779,45780,45781,45782,45783,45784,45785,45786,45787,45788,45789,45790,45791,45792,45793,45794,45795,45796,45797,45798,45799,45800,45801,45802,45803,45804,45805,45806,45807,45808,45809,45810,45811,45812,45813,45814,45815,45816,45817,45818,45819,45820,45821,45822,45823,45824,45825,45826,45827,45828,45829,45830,45831,45832,45833,45834,45835,45836,45837,45838,45839,45840,45841,45842,45843,45844,45845,45846,45847,45848,45849,45850,45851,45852,45853,45854,45855,45856,45857,45858,45859,45860,45861,45862,45863,45864,45865,45866,45867,45868,45869,45870,45871,45872,45873,45874,45875,45876,45877,45878,45879,45880,45881,45882,45883,45884,45885,45886,45887,45888,45889,45890,45891,45892,45893,45894,45895,45896,45897,45898,45899,45900,45901,45902,45903,45904,45905,45906,45907,45908,45909,45910,45911,45912,45913,45914,45915,45916,45917,45918,45919,45920,45921,45922,45923,45924,45925,45926,45927,45928,45929,45930,45931,45932,45933,45934,45935,45936,45937,45938,45939,45940,45941,45942,45943,45944,45945,45946,45947,45948,45949,45950,45951,45952,45953,45954,45955,45956,45957,45958,45959,45960,45961,45962,45963,45964,45965,45966,45967,45968,45969,45970,45971,45972,45973,45974,45975,45976,45977,45978,45979,45980,45981,45982,45983,45984,45985,45986,45987,45988,45989,45990,45991,45992,45993,45994,45995,45996,45997,45998,45999,46000,46001,46002,46003,46004,46005,46006,46007,46008,46009,46010,46011,46012,46013,46014,46015,46016,46017,46018,46019,46020,46021,46022,46023,46024,46025,46026,46027,46028,46029,46030,46031,46032,46033,46034,46035,46036,46037,46038,46039,46040,46041,46042,46043,46044,46045,46046,46047,46048,46049,46050,46051,46052,46053,46054,46055,46056,46057,46058,46059,46060,46061,46062,46063,46064,46065,46066,46067,46068,46069,46070,46071,46072,46073,46074,46075,46076,46077,46078,46079,46080,46081,46082,46083,46084,46085,46086,46087,46088,46089,46090,46091,46092,46093,46094,46095,46096,46097,46098,46099,46100,46101,46102,46103,46104,46105,46106,46107,46108,46109,46110,46111,46112,46113,46114,46115,46116,46117,46118,46119,46120,46121,46122,46123,46124,46125,46126,46127,46128,46129,46130,46131,46132,46133,46134,46135,46136,46137,46138,46139,46140,46141,46142,46143,46144,46145,46146,46147,46148,46149,46150,46151,46152,46153,46154,46155,46156,46157,46158,46159,46160,46161,46162,46163,46164,46165,46166,46167,46168,46169,46170,46171,46172,46173,46174,46175,46176,46177,46178,46179,46180,46181,46182,46183,46184,46185,46186,46187,46188,46189,46190,46191,46192,46193,46194,46195,46196,46197,46198,46199,46200,46201,46202,46203,46204,46205,46206,46207,46208,46209,46210,46211,46212,46213,46214,46215,46216,46217,46218,46219,46220,46221,46222,46223,46224,46225,46226,46227,46228,46229,46230,46231,46232,46233,46234,46235,46236,46237,46238,46239,46240,46241,46242,46243,46244,46245,46246,46247,46248,46249,46250,46251,46252,46253,46254,46255,46256,46257,46258,46259,46260,46261,46262,46263,46264,46265,46266,46267,46268,46269,46270,46271,46272,46273,46274,46275,46276,46277,46278,46279,46280,46281,46282,46283,46284,46285,46286,46287,46288,46289,46290,46291,46292,46293,46294,46295,46296,46297,46298,46299,46300,46301,46302,46303,46304,46305,46306,46307,46308,46309,46310,46311,46312,46313,46314,46315,46316,46317,46318,46319,46320,46321,46322,46323,46324,46325,46326,46327,46328,46329,46330,46331,46332,46333,46334,46335,46336,46337,46338,46339,46340,46341,46342,46343,46344,46345,46346,46347,46348,46349,46350,46351,46352,46353,46354,46355,46356,46357,46358,46359,46360,46361,46362,46363,46364,46365,46366,46367,46368,46369,46370,46371,46372,46373,46374,46375,46376,46377,46378,46379,46380,46381,46382,46383,46384,46385,46386,46387,46388,46389,46390,46391,46392,46393,46394,46395,46396,46397,46398,46399,46400,46401,46402,46403,46404,46405,46406,46407,46408,46409,46410,46411,46412,46413,46414,46415,46416,46417,46418,46419,46420,46421,46422,46423,46424,46425,46426,46427,46428,46429,46430,46431,46432,46433,46434,46435,46436,46437,46438,46439,46440,46441,46442,46443,46444,46445,46446,46447,46448,46449,46450,46451,46452,46453,46454,46455,46456,46457,46458,46459,46460,46461,46462,46463,46464,46465,46466,46467,46468,46469,46470,46471,46472,46473,46474,46475,46476,46477,46478,46479,46480,46481,46482,46483,46484,46485,46486,46487,46488,46489,46490,46491,46492,46493,46494,46495,46496,46497,46498,46499,46500,46501,46502,46503,46504,46505,46506,46507,46508,46509,46510,46511,46512,46513,46514,46515,46516,46517,46518,46519,46520,46521,46522,46523,46524,46525,46526,46527,46528,46529,46530,46531,46532,46533,46534,46535,46536,46537,46538,46539,46540,46541,46542,46543,46544,46545,46546,46547,46548,46549,46550,46551,46552,46553,46554,46555,46556,46557,46558,46559,46560,46561,46562,46563,46564,46565,46566,46567,46568,46569,46570,46571,46572,46573,46574,46575,46576,46577,46578,46579,46580,46581,46582,46583,46584,46585,46586,46587,46588,46589,46590,46591,46592,46593,46594,46595,46596,46597,46598,46599,46600,46601,46602,46603,46604,46605,46606,46607,46608,46609,46610,46611,46612,46613,46614,46615,46616,46617,46618,46619,46620,46621,46622,46623,46624,46625,46626,46627,46628,46629,46630,46631,46632,46633,46634,46635,46636,46637,46638,46639,46640,46641,46642,46643,46644,46645,46646,46647,46648,46649,46650,46651,46652,46653,46654,46655,46656,46657,46658,46659,46660,46661,46662,46663,46664,46665,46666,46667,46668,46669,46670,46671,46672,46673,46674,46675,46676,46677,46678,46679,46680,46681,46682,46683,46684,46685,46686,46687,46688,46689,46690,46691,46692,46693,46694,46695,46696,46697,46698,46699,46700,46701,46702,46703,46704,46705,46706,46707,46708,46709,46710,46711,46712,46713,46714,46715,46716,46717,46718,46719,46720,46721,46722,46723,46724,46725,46726,46727,46728,46729,46730,46731,46732,46733,46734,46735,46736,46737,46738,46739,46740,46741,46742,46743,46744,46745,46746,46747,46748,46749,46750,46751,46752,46753,46754,46755,46756,46757,46758,46759,46760,46761,46762,46763,46764,46765,46766,46767,46768,46769,46770,46771,46772,46773,46774,46775,46776,46777,46778,46779,46780,46781,46782,46783,46784,46785,46786,46787,46788,46789,46790,46791,46792,46793,46794,46795,46796,46797,46798,46799,46800,46801,46802,46803,46804,46805,46806,46807,46808,46809,46810,46811,46812,46813,46814,46815,46816,46817,46818,46819,46820,46821,46822,46823,46824,46825,46826,46827,46828,46829,46830,46831,46832,46833,46834,46835,46836,46837,46838,46839,46840,46841,46842,46843,46844,46845,46846,46847,46848,46849,46850,46851,46852,46853,46854,46855,46856,46857,46858,46859,46860,46861,46862,46863,46864,46865,46866,46867,46868,46869,46870,46871,46872,46873,46874,46875,46876,46877,46878,46879,46880,46881,46882,46883,46884,46885,46886,46887,46888,46889,46890,46891,46892,46893,46894,46895,46896,46897,46898,46899,46900,46901,46902,46903,46904,46905,46906,46907,46908,46909,46910,46911,46912,46913,46914,46915,46916,46917,46918,46919,46920,46921,46922,46923,46924,46925,46926,46927,46928,46929,46930,46931,46932,46933,46934,46935,46936,46937,46938,46939,46940,46941,46942,46943,46944,46945,46946,46947,46948,46949,46950,46951,46952,46953,46954,46955,46956,46957,46958,46959,46960,46961,46962,46963,46964,46965,46966,46967,46968,46969,46970,46971,46972,46973,46974,46975,46976,46977,46978,46979,46980,46981,46982,46983,46984,46985,46986,46987,46988,46989,46990,46991,46992,46993,46994,46995,46996,46997,46998,46999,47000,47001,47002,47003,47004,47005,47006,47007,47008,47009,47010,47011,47012,47013,47014,47015,47016,47017,47018,47019,47020,47021,47022,47023,47024,47025,47026,47027,47028,47029,47030,47031,47032,47033,47034,47035,47036,47037,47038,47039,47040,47041,47042,47043,47044,47045,47046,47047,47048,47049,47050,47051,47052,47053,47054,47055,47056,47057,47058,47059,47060,47061,47062,47063,47064,47065,47066,47067,47068,47069,47070,47071,47072,47073,47074,47075,47076,47077,47078,47079,47080,47081,47082,47083,47084,47085,47086,47087,47088,47089,47090,47091,47092,47093,47094,47095,47096,47097,47098,47099,47100,47101,47102,47103,47104,47105,47106,47107,47108,47109,47110,47111,47112,47113,47114,47115,47116,47117,47118,47119,47120,47121,47122,47123,47124,47125,47126,47127,47128,47129,47130,47131,47132,47133,47134,47135,47136,47137,47138,47139,47140,47141,47142,47143,47144,47145,47146,47147,47148,47149,47150,47151,47152,47153,47154,47155,47156,47157,47158,47159,47160,47161,47162,47163,47164,47165,47166,47167,47168,47169,47170,47171,47172,47173,47174,47175,47176,47177,47178,47179,47180,47181,47182,47183,47184,47185,47186,47187,47188,47189,47190,47191,47192,47193,47194,47195,47196,47197,47198,47199,47200,47201,47202,47203,47204,47205,47206,47207,47208,47209,47210,47211,47212,47213,47214,47215,47216,47217,47218,47219,47220,47221,47222,47223,47224,47225,47226,47227,47228,47229,47230,47231,47232,47233,47234,47235,47236,47237,47238,47239,47240,47241,47242,47243,47244,47245,47246,47247,47248,47249,47250,47251,47252,47253,47254,47255,47256,47257,47258,47259,47260,47261,47262,47263,47264,47265,47266,47267,47268,47269,47270,47271,47272,47273,47274,47275,47276,47277,47278,47279,47280,47281,47282,47283,47284,47285,47286,47287,47288,47289,47290,47291,47292,47293,47294,47295,47296,47297,47298,47299,47300,47301,47302,47303,47304,47305,47306,47307,47308,47309,47310,47311,47312,47313,47314,47315,47316,47317,47318,47319,47320,47321,47322,47323,47324,47325,47326,47327,47328,47329,47330,47331,47332,47333,47334,47335,47336,47337,47338,47339,47340,47341,47342,47343,47344,47345,47346,47347,47348,47349,47350,47351,47352,47353,47354,47355,47356,47357,47358,47359,47360,47361,47362,47363,47364,47365,47366,47367,47368,47369,47370,47371,47372,47373,47374,47375,47376,47377,47378,47379,47380,47381,47382,47383,47384,47385,47386,47387,47388,47389,47390,47391,47392,47393,47394,47395,47396,47397,47398,47399,47400,47401,47402,47403,47404,47405,47406,47407,47408,47409,47410,47411,47412,47413,47414,47415,47416,47417,47418,47419,47420,47421,47422,47423,47424,47425,47426,47427,47428,47429,47430,47431,47432,47433,47434,47435,47436,47437,47438,47439,47440,47441,47442,47443,47444,47445,47446,47447,47448,47449,47450,47451,47452,47453,47454,47455,47456,47457,47458,47459,47460,47461,47462,47463,47464,47465,47466,47467,47468,47469,47470,47471,47472,47473,47474,47475,47476,47477,47478,47479,47480,47481,47482,47483,47484,47485,47486,47487,47488,47489,47490,47491,47492,47493,47494,47495,47496,47497,47498,47499,47500,47501,47502,47503,47504,47505,47506,47507,47508,47509,47510,47511,47512,47513,47514,47515,47516,47517,47518,47519,47520,47521,47522,47523,47524,47525,47526,47527,47528,47529,47530,47531,47532,47533,47534,47535,47536,47537,47538,47539,47540,47541,47542,47543,47544,47545,47546,47547,47548,47549,47550,47551,47552,47553,47554,47555,47556,47557,47558,47559,47560,47561,47562,47563,47564,47565,47566,47567,47568,47569,47570,47571,47572,47573,47574,47575,47576,47577,47578,47579,47580,47581,47582,47583,47584,47585,47586,47587,47588,47589,47590,47591,47592,47593,47594,47595,47596,47597,47598,47599,47600,47601,47602,47603,47604,47605,47606,47607,47608,47609,47610,47611,47612,47613,47614,47615,47616,47617,47618,47619,47620,47621,47622,47623,47624,47625,47626,47627,47628,47629,47630,47631,47632,47633,47634,47635,47636,47637,47638,47639,47640,47641,47642,47643,47644,47645,47646,47647,47648,47649,47650,47651,47652,47653,47654,47655,47656,47657,47658,47659,47660,47661,47662,47663,47664,47665,47666,47667,47668,47669,47670,47671,47672,47673,47674,47675,47676,47677,47678,47679,47680,47681,47682,47683,47684,47685,47686,47687,47688,47689,47690,47691,47692,47693,47694,47695,47696,47697,47698,47699,47700,47701,47702,47703,47704,47705,47706,47707,47708,47709,47710,47711,47712,47713,47714,47715,47716,47717,47718,47719,47720,47721,47722,47723,47724,47725,47726,47727,47728,47729,47730,47731,47732,47733,47734,47735,47736,47737,47738,47739,47740,47741,47742,47743,47744,47745,47746,47747,47748,47749,47750,47751,47752,47753,47754,47755,47756,47757,47758,47759,47760,47761,47762,47763,47764,47765,47766,47767,47768,47769,47770,47771,47772,47773,47774,47775,47776,47777,47778,47779,47780,47781,47782,47783,47784,47785,47786,47787,47788,47789,47790,47791,47792,47793,47794,47795,47796,47797,47798,47799,47800,47801,47802,47803,47804,47805,47806,47807,47808,47809,47810,47811,47812,47813,47814,47815,47816,47817,47818,47819,47820,47821,47822,47823,47824,47825,47826,47827,47828,47829,47830,47831,47832,47833,47834,47835,47836,47837,47838,47839,47840,47841,47842,47843,47844,47845,47846,47847,47848,47849,47850,47851,47852,47853,47854,47855,47856,47857,47858,47859,47860,47861,47862,47863,47864,47865,47866,47867,47868,47869,47870,47871,47872,47873,47874,47875,47876,47877,47878,47879,47880,47881,47882,47883,47884,47885,47886,47887,47888,47889,47890,47891,47892,47893,47894,47895,47896,47897,47898,47899,47900,47901,47902,47903,47904,47905,47906,47907,47908,47909,47910,47911,47912,47913,47914,47915,47916,47917,47918,47919,47920,47921,47922,47923,47924,47925,47926,47927,47928,47929,47930,47931,47932,47933,47934,47935,47936,47937,47938,47939,47940,47941,47942,47943,47944,47945,47946,47947,47948,47949,47950,47951,47952,47953,47954,47955,47956,47957,47958,47959,47960,47961,47962,47963,47964,47965,47966,47967,47968,47969,47970,47971,47972,47973,47974,47975,47976,47977,47978,47979,47980,47981,47982,47983,47984,47985,47986,47987,47988,47989,47990,47991,47992,47993,47994,47995,47996,47997,47998,47999,48000,48001,48002,48003,48004,48005,48006,48007,48008,48009,48010,48011,48012,48013,48014,48015,48016,48017,48018,48019,48020,48021,48022,48023,48024,48025,48026,48027,48028,48029,48030,48031,48032,48033,48034,48035,48036,48037,48038,48039,48040,48041,48042,48043,48044,48045,48046,48047,48048,48049,48050,48051,48052,48053,48054,48055,48056,48057,48058,48059,48060,48061,48062,48063,48064,48065,48066,48067,48068,48069,48070,48071,48072,48073,48074,48075,48076,48077,48078,48079,48080,48081,48082,48083,48084,48085,48086,48087,48088,48089,48090,48091,48092,48093,48094,48095,48096,48097,48098,48099,48100,48101,48102,48103,48104,48105,48106,48107,48108,48109,48110,48111,48112,48113,48114,48115,48116,48117,48118,48119,48120,48121,48122,48123,48124,48125,48126,48127,48128,48129,48130,48131,48132,48133,48134,48135,48136,48137,48138,48139,48140,48141,48142,48143,48144,48145,48146,48147,48148,48149,48150,48151,48152,48153,48154,48155,48156,48157,48158,48159,48160,48161,48162,48163,48164,48165,48166,48167,48168,48169,48170,48171,48172,48173,48174,48175,48176,48177,48178,48179,48180,48181,48182,48183,48184,48185,48186,48187,48188,48189,48190,48191,48192,48193,48194,48195,48196,48197,48198,48199,48200,48201,48202,48203,48204,48205,48206,48207,48208,48209,48210,48211,48212,48213,48214,48215,48216,48217,48218,48219,48220,48221,48222,48223,48224,48225,48226,48227,48228,48229,48230,48231,48232,48233,48234,48235,48236,48237,48238,48239,48240,48241,48242,48243,48244,48245,48246,48247,48248,48249,48250,48251,48252,48253,48254,48255,48256,48257,48258,48259,48260,48261,48262,48263,48264,48265,48266,48267,48268,48269,48270,48271,48272,48273,48274,48275,48276,48277,48278,48279,48280,48281,48282,48283,48284,48285,48286,48287,48288,48289,48290,48291,48292,48293,48294,48295,48296,48297,48298,48299,48300,48301,48302,48303,48304,48305,48306,48307,48308,48309,48310,48311,48312,48313,48314,48315,48316,48317,48318,48319,48320,48321,48322,48323,48324,48325,48326,48327,48328,48329,48330,48331,48332,48333,48334,48335,48336,48337,48338,48339,48340,48341,48342,48343,48344,48345,48346,48347,48348,48349,48350,48351,48352,48353,48354,48355,48356,48357,48358,48359,48360,48361,48362,48363,48364,48365,48366,48367,48368,48369,48370,48371,48372,48373,48374,48375,48376,48377,48378,48379,48380,48381,48382,48383,48384,48385,48386,48387,48388,48389,48390,48391,48392,48393,48394,48395,48396,48397,48398,48399,48400,48401,48402,48403,48404,48405,48406,48407,48408,48409,48410,48411,48412,48413,48414,48415,48416,48417,48418,48419,48420,48421,48422,48423,48424,48425,48426,48427,48428,48429,48430,48431,48432,48433,48434,48435,48436,48437,48438,48439,48440,48441,48442,48443,48444,48445,48446,48447,48448,48449,48450,48451,48452,48453,48454,48455,48456,48457,48458,48459,48460,48461,48462,48463,48464,48465,48466,48467,48468,48469,48470,48471,48472,48473,48474,48475,48476,48477,48478,48479,48480,48481,48482,48483,48484,48485,48486,48487,48488,48489,48490,48491,48492,48493,48494,48495,48496,48497,48498,48499,48500,48501,48502,48503,48504,48505,48506,48507,48508,48509,48510,48511,48512,48513,48514,48515,48516,48517,48518,48519,48520,48521,48522,48523,48524,48525,48526,48527,48528,48529,48530,48531,48532,48533,48534,48535,48536,48537,48538,48539,48540,48541,48542,48543,48544,48545,48546,48547,48548,48549,48550,48551,48552,48553,48554,48555,48556,48557,48558,48559,48560,48561,48562,48563,48564,48565,48566,48567,48568,48569,48570,48571,48572,48573,48574,48575,48576,48577,48578,48579,48580,48581,48582,48583,48584,48585,48586,48587,48588,48589,48590,48591,48592,48593,48594,48595,48596,48597,48598,48599,48600,48601,48602,48603,48604,48605,48606,48607,48608,48609,48610,48611,48612,48613,48614,48615,48616,48617,48618,48619,48620,48621,48622,48623,48624,48625,48626,48627,48628,48629,48630,48631,48632,48633,48634,48635,48636,48637,48638,48639,48640,48641,48642,48643,48644,48645,48646,48647,48648,48649,48650,48651,48652,48653,48654,48655,48656,48657,48658,48659,48660,48661,48662,48663,48664,48665,48666,48667,48668,48669,48670,48671,48672,48673,48674,48675,48676,48677,48678,48679,48680,48681,48682,48683,48684,48685,48686,48687,48688,48689,48690,48691,48692,48693,48694,48695,48696,48697,48698,48699,48700,48701,48702,48703,48704,48705,48706,48707,48708,48709,48710,48711,48712,48713,48714,48715,48716,48717,48718,48719,48720,48721,48722,48723,48724,48725,48726,48727,48728,48729,48730,48731,48732,48733,48734,48735,48736,48737,48738,48739,48740,48741,48742,48743,48744,48745,48746,48747,48748,48749,48750,48751,48752,48753,48754,48755,48756,48757,48758,48759,48760,48761,48762,48763,48764,48765,48766,48767,48768,48769,48770,48771,48772,48773,48774,48775,48776,48777,48778,48779,48780,48781,48782,48783,48784,48785,48786,48787,48788,48789,48790,48791,48792,48793,48794,48795,48796,48797,48798,48799,48800,48801,48802,48803,48804,48805,48806,48807,48808,48809,48810,48811,48812,48813,48814,48815,48816,48817,48818,48819,48820,48821,48822,48823,48824,48825,48826,48827,48828,48829,48830,48831,48832,48833,48834,48835,48836,48837,48838,48839,48840,48841,48842,48843,48844,48845,48846,48847,48848,48849,48850,48851,48852,48853,48854,48855,48856,48857,48858,48859,48860,48861,48862,48863,48864,48865,48866,48867,48868,48869,48870,48871,48872,48873,48874,48875,48876,48877,48878,48879,48880,48881,48882,48883,48884,48885,48886,48887,48888,48889,48890,48891,48892,48893,48894,48895,48896,48897,48898,48899,48900,48901,48902,48903,48904,48905,48906,48907,48908,48909,48910,48911,48912,48913,48914,48915,48916,48917,48918,48919,48920,48921,48922,48923,48924,48925,48926,48927,48928,48929,48930,48931,48932,48933,48934,48935,48936,48937,48938,48939,48940,48941,48942,48943,48944,48945,48946,48947,48948,48949,48950,48951,48952,48953,48954,48955,48956,48957,48958,48959,48960,48961,48962,48963,48964,48965,48966,48967,48968,48969,48970,48971,48972,48973,48974,48975,48976,48977,48978,48979,48980,48981,48982,48983,48984,48985,48986,48987,48988,48989,48990,48991,48992,48993,48994,48995,48996,48997,48998,48999,49000,49001,49002,49003,49004,49005,49006,49007,49008,49009,49010,49011,49012,49013,49014,49015,49016,49017,49018,49019,49020,49021,49022,49023,49024,49025,49026,49027,49028,49029,49030,49031,49032,49033,49034,49035,49036,49037,49038,49039,49040,49041,49042,49043,49044,49045,49046,49047,49048,49049,49050,49051,49052,49053,49054,49055,49056,49057,49058,49059,49060,49061,49062,49063,49064,49065,49066,49067,49068,49069,49070,49071,49072,49073,49074,49075,49076,49077,49078,49079,49080,49081,49082,49083,49084,49085,49086,49087,49088,49089,49090,49091,49092,49093,49094,49095,49096,49097,49098,49099,49100,49101,49102,49103,49104,49105,49106,49107,49108,49109,49110,49111,49112,49113,49114,49115,49116,49117,49118,49119,49120,49121,49122,49123,49124,49125,49126,49127,49128,49129,49130,49131,49132,49133,49134,49135,49136,49137,49138,49139,49140,49141,49142,49143,49144,49145,49146,49147,49148,49149,49150,49151,49152,49153,49154,49155,49156,49157,49158,49159,49160,49161,49162,49163,49164,49165,49166,49167,49168,49169,49170,49171,49172,49173,49174,49175,49176,49177,49178,49179,49180,49181,49182,49183,49184,49185,49186,49187,49188,49189,49190,49191,49192,49193,49194,49195,49196,49197,49198,49199,49200,49201,49202,49203,49204,49205,49206,49207,49208,49209,49210,49211,49212,49213,49214,49215,49216,49217,49218,49219,49220,49221,49222,49223,49224,49225,49226,49227,49228,49229,49230,49231,49232,49233,49234,49235,49236,49237,49238,49239,49240,49241,49242,49243,49244,49245,49246,49247,49248,49249,49250,49251,49252,49253,49254,49255,49256,49257,49258,49259,49260,49261,49262,49263,49264,49265,49266,49267,49268,49269,49270,49271,49272,49273,49274,49275,49276,49277,49278,49279,49280,49281,49282,49283,49284,49285,49286,49287,49288,49289,49290,49291,49292,49293,49294,49295,49296,49297,49298,49299,49300,49301,49302,49303,49304,49305,49306,49307,49308,49309,49310,49311,49312,49313,49314,49315,49316,49317,49318,49319,49320,49321,49322,49323,49324,49325,49326,49327,49328,49329,49330,49331,49332,49333,49334,49335,49336,49337,49338,49339,49340,49341,49342,49343,49344,49345,49346,49347,49348,49349,49350,49351,49352,49353,49354,49355,49356,49357,49358,49359,49360,49361,49362,49363,49364,49365,49366,49367,49368,49369,49370,49371,49372,49373,49374,49375,49376,49377,49378,49379,49380,49381,49382,49383,49384,49385,49386,49387,49388,49389,49390,49391,49392,49393,49394,49395,49396,49397,49398,49399,49400,49401,49402,49403,49404,49405,49406,49407,49408,49409,49410,49411,49412,49413,49414,49415,49416,49417,49418,49419,49420,49421,49422,49423,49424,49425,49426,49427,49428,49429,49430,49431,49432,49433,49434,49435,49436,49437,49438,49439,49440,49441,49442,49443,49444,49445,49446,49447,49448,49449,49450,49451,49452,49453,49454,49455,49456,49457,49458,49459,49460,49461,49462,49463,49464,49465,49466,49467,49468,49469,49470,49471,49472,49473,49474,49475,49476,49477,49478,49479,49480,49481,49482,49483,49484,49485,49486,49487,49488,49489,49490,49491,49492,49493,49494,49495,49496,49497,49498,49499,49500,49501,49502,49503,49504,49505,49506,49507,49508,49509,49510,49511,49512,49513,49514,49515,49516,49517,49518,49519,49520,49521,49522,49523,49524,49525,49526,49527,49528,49529,49530,49531,49532,49533,49534,49535,49536,49537,49538,49539,49540,49541,49542,49543,49544,49545,49546,49547,49548,49549,49550,49551,49552,49553,49554,49555,49556,49557,49558,49559,49560,49561,49562,49563,49564,49565,49566,49567,49568,49569,49570,49571,49572,49573,49574,49575,49576,49577,49578,49579,49580,49581,49582,49583,49584,49585,49586,49587,49588,49589,49590,49591,49592,49593,49594,49595,49596,49597,49598,49599,49600,49601,49602,49603,49604,49605,49606,49607,49608,49609,49610,49611,49612,49613,49614,49615,49616,49617,49618,49619,49620,49621,49622,49623,49624,49625,49626,49627,49628,49629,49630,49631,49632,49633,49634,49635,49636,49637,49638,49639,49640,49641,49642,49643,49644,49645,49646,49647,49648,49649,49650,49651,49652,49653,49654,49655,49656,49657,49658,49659,49660,49661,49662,49663,49664,49665,49666,49667,49668,49669,49670,49671,49672,49673,49674,49675,49676,49677,49678,49679,49680,49681,49682,49683,49684,49685,49686,49687,49688,49689,49690,49691,49692,49693,49694,49695,49696,49697,49698,49699,49700,49701,49702,49703,49704,49705,49706,49707,49708,49709,49710,49711,49712,49713,49714,49715,49716,49717,49718,49719,49720,49721,49722,49723,49724,49725,49726,49727,49728,49729,49730,49731,49732,49733,49734,49735,49736,49737,49738,49739,49740,49741,49742,49743,49744,49745,49746,49747,49748,49749,49750,49751,49752,49753,49754,49755,49756,49757,49758,49759,49760,49761,49762,49763,49764,49765,49766,49767,49768,49769,49770,49771,49772,49773,49774,49775,49776,49777,49778,49779,49780,49781,49782,49783,49784,49785,49786,49787,49788,49789,49790,49791,49792,49793,49794,49795,49796,49797,49798,49799,49800,49801,49802,49803,49804,49805,49806,49807,49808,49809,49810,49811,49812,49813,49814,49815,49816,49817,49818,49819,49820,49821,49822,49823,49824,49825,49826,49827,49828,49829,49830,49831,49832,49833,49834,49835,49836,49837,49838,49839,49840,49841,49842,49843,49844,49845,49846,49847,49848,49849,49850,49851,49852,49853,49854,49855,49856,49857,49858,49859,49860,49861,49862,49863,49864,49865,49866,49867,49868,49869,49870,49871,49872,49873,49874,49875,49876,49877,49878,49879,49880,49881,49882,49883,49884,49885,49886,49887,49888,49889,49890,49891,49892,49893,49894,49895,49896,49897,49898,49899,49900,49901,49902,49903,49904,49905,49906,49907,49908,49909,49910,49911,49912,49913,49914,49915,49916,49917,49918,49919,49920,49921,49922,49923,49924,49925,49926,49927,49928,49929,49930,49931,49932,49933,49934,49935,49936,49937,49938,49939,49940,49941,49942,49943,49944,49945,49946,49947,49948,49949,49950,49951,49952,49953,49954,49955,49956,49957,49958,49959,49960,49961,49962,49963,49964,49965,49966,49967,49968,49969,49970,49971,49972,49973,49974,49975,49976,49977,49978,49979,49980,49981,49982,49983,49984,49985,49986,49987,49988,49989,49990,49991,49992,49993,49994,49995,49996,49997,49998,49999,50000,50001,50002,50003,50004,50005,50006,50007,50008,50009,50010,50011,50012,50013,50014,50015,50016,50017,50018,50019,50020,50021,50022,50023,50024,50025,50026,50027,50028,50029,50030,50031,50032,50033,50034,50035,50036,50037,50038,50039,50040,50041,50042,50043,50044,50045,50046,50047,50048,50049,50050,50051,50052,50053,50054,50055,50056,50057,50058,50059,50060,50061,50062,50063,50064,50065,50066,50067,50068,50069,50070,50071,50072,50073,50074,50075,50076,50077,50078,50079,50080,50081,50082,50083,50084,50085,50086,50087,50088,50089,50090,50091,50092,50093,50094,50095,50096,50097,50098,50099,50100,50101,50102,50103,50104,50105,50106,50107,50108,50109,50110,50111,50112,50113,50114,50115,50116,50117,50118,50119,50120,50121,50122,50123,50124,50125,50126,50127,50128,50129,50130,50131,50132,50133,50134,50135,50136,50137,50138,50139,50140,50141,50142,50143,50144,50145,50146,50147,50148,50149,50150,50151,50152,50153,50154,50155,50156,50157,50158,50159,50160,50161,50162,50163,50164,50165,50166,50167,50168,50169,50170,50171,50172,50173,50174,50175,50176,50177,50178,50179,50180,50181,50182,50183,50184,50185,50186,50187,50188,50189,50190,50191,50192,50193,50194,50195,50196,50197,50198,50199,50200,50201,50202,50203,50204,50205,50206,50207,50208,50209,50210,50211,50212,50213,50214,50215,50216,50217,50218,50219,50220,50221,50222,50223,50224,50225,50226,50227,50228,50229,50230,50231,50232,50233,50234,50235,50236,50237,50238,50239,50240,50241,50242,50243,50244,50245,50246,50247,50248,50249,50250,50251,50252,50253,50254,50255,50256,50257,50258,50259,50260,50261,50262,50263,50264,50265,50266,50267,50268,50269,50270,50271,50272,50273,50274,50275,50276,50277,50278,50279,50280,50281,50282,50283,50284,50285,50286,50287,50288,50289,50290,50291,50292,50293,50294,50295,50296,50297,50298,50299,50300,50301,50302,50303,50304,50305,50306,50307,50308,50309,50310,50311,50312,50313,50314,50315,50316,50317,50318,50319,50320,50321,50322,50323,50324,50325,50326,50327,50328,50329,50330,50331,50332,50333,50334,50335,50336,50337,50338,50339,50340,50341,50342,50343,50344,50345,50346,50347,50348,50349,50350,50351,50352,50353,50354,50355,50356,50357,50358,50359,50360,50361,50362,50363,50364,50365,50366,50367,50368,50369,50370,50371,50372,50373,50374,50375,50376,50377,50378,50379,50380,50381,50382,50383,50384,50385,50386,50387,50388,50389,50390,50391,50392,50393,50394,50395,50396,50397,50398,50399,50400,50401,50402,50403,50404,50405,50406,50407,50408,50409,50410,50411,50412,50413,50414,50415,50416,50417,50418,50419,50420,50421,50422,50423,50424,50425,50426,50427,50428,50429,50430,50431,50432,50433,50434,50435,50436,50437,50438,50439,50440,50441,50442,50443,50444,50445,50446,50447,50448,50449,50450,50451,50452,50453,50454,50455,50456,50457,50458,50459,50460,50461,50462,50463,50464,50465,50466,50467,50468,50469,50470,50471,50472,50473,50474,50475,50476,50477,50478,50479,50480,50481,50482,50483,50484,50485,50486,50487,50488,50489,50490,50491,50492,50493,50494,50495,50496,50497,50498,50499,50500,50501,50502,50503,50504,50505,50506,50507,50508,50509,50510,50511,50512,50513,50514,50515,50516,50517,50518,50519,50520,50521,50522,50523,50524,50525,50526,50527,50528,50529,50530,50531,50532,50533,50534,50535,50536,50537,50538,50539,50540,50541,50542,50543,50544,50545,50546,50547,50548,50549,50550,50551,50552,50553,50554,50555,50556,50557,50558,50559,50560,50561,50562,50563,50564,50565,50566,50567,50568,50569,50570,50571,50572,50573,50574,50575,50576,50577,50578,50579,50580,50581,50582,50583,50584,50585,50586,50587,50588,50589,50590,50591,50592,50593,50594,50595,50596,50597,50598,50599,50600,50601,50602,50603,50604,50605,50606,50607,50608,50609,50610,50611,50612,50613,50614,50615,50616,50617,50618,50619,50620,50621,50622,50623,50624,50625,50626,50627,50628,50629,50630,50631,50632,50633,50634,50635,50636,50637,50638,50639,50640,50641,50642,50643,50644,50645,50646,50647,50648,50649,50650,50651,50652,50653,50654,50655,50656,50657,50658,50659,50660,50661,50662,50663,50664,50665,50666,50667,50668,50669,50670,50671,50672,50673,50674,50675,50676,50677,50678,50679,50680,50681,50682,50683,50684,50685,50686,50687,50688,50689,50690,50691,50692,50693,50694,50695,50696,50697,50698,50699,50700,50701,50702,50703,50704,50705,50706,50707,50708,50709,50710,50711,50712,50713,50714,50715,50716,50717,50718,50719,50720,50721,50722,50723,50724,50725,50726,50727,50728,50729,50730,50731,50732,50733,50734,50735,50736,50737,50738,50739,50740,50741,50742,50743,50744,50745,50746,50747,50748,50749,50750,50751,50752,50753,50754,50755,50756,50757,50758,50759,50760,50761,50762,50763,50764,50765,50766,50767,50768,50769,50770,50771,50772,50773,50774,50775,50776,50777,50778,50779,50780,50781,50782,50783,50784,50785,50786,50787,50788,50789,50790,50791,50792,50793,50794,50795,50796,50797,50798,50799,50800,50801,50802,50803,50804,50805,50806,50807,50808,50809,50810,50811,50812,50813,50814,50815,50816,50817,50818,50819,50820,50821,50822,50823,50824,50825,50826,50827,50828,50829,50830,50831,50832,50833,50834,50835,50836,50837,50838,50839,50840,50841,50842,50843,50844,50845,50846,50847,50848,50849,50850,50851,50852,50853,50854,50855,50856,50857,50858,50859,50860,50861,50862,50863,50864,50865,50866,50867,50868,50869,50870,50871,50872,50873,50874,50875,50876,50877,50878,50879,50880,50881,50882,50883,50884,50885,50886,50887,50888,50889,50890,50891,50892,50893,50894,50895,50896,50897,50898,50899,50900,50901,50902,50903,50904,50905,50906,50907,50908,50909,50910,50911,50912,50913,50914,50915,50916,50917,50918,50919,50920,50921,50922,50923,50924,50925,50926,50927,50928,50929,50930,50931,50932,50933,50934,50935,50936,50937,50938,50939,50940,50941,50942,50943,50944,50945,50946,50947,50948,50949,50950,50951,50952,50953,50954,50955,50956,50957,50958,50959,50960,50961,50962,50963,50964,50965,50966,50967,50968,50969,50970,50971,50972,50973,50974,50975,50976,50977,50978,50979,50980,50981,50982,50983,50984,50985,50986,50987,50988,50989,50990,50991,50992,50993,50994,50995,50996,50997,50998,50999,51000,51001,51002,51003,51004,51005,51006,51007,51008,51009,51010,51011,51012,51013,51014,51015,51016,51017,51018,51019,51020,51021,51022,51023,51024,51025,51026,51027,51028,51029,51030,51031,51032,51033,51034,51035,51036,51037,51038,51039,51040,51041,51042,51043,51044,51045,51046,51047,51048,51049,51050,51051,51052,51053,51054,51055,51056,51057,51058,51059,51060,51061,51062,51063,51064,51065,51066,51067,51068,51069,51070,51071,51072,51073,51074,51075,51076,51077,51078,51079,51080,51081,51082,51083,51084,51085,51086,51087,51088,51089,51090,51091,51092,51093,51094,51095,51096,51097,51098,51099,51100,51101,51102,51103,51104,51105,51106,51107,51108,51109,51110,51111,51112,51113,51114,51115,51116,51117,51118,51119,51120,51121,51122,51123,51124,51125,51126,51127,51128,51129,51130,51131,51132,51133,51134,51135,51136,51137,51138,51139,51140,51141,51142,51143,51144,51145,51146,51147,51148,51149,51150,51151,51152,51153,51154,51155,51156,51157,51158,51159,51160,51161,51162,51163,51164,51165,51166,51167,51168,51169,51170,51171,51172,51173,51174,51175,51176,51177,51178,51179,51180,51181,51182,51183,51184,51185,51186,51187,51188,51189,51190,51191,51192,51193,51194,51195,51196,51197,51198,51199,51200,51201,51202,51203,51204,51205,51206,51207,51208,51209,51210,51211,51212,51213,51214,51215,51216,51217,51218,51219,51220,51221,51222,51223,51224,51225,51226,51227,51228,51229,51230,51231,51232,51233,51234,51235,51236,51237,51238,51239,51240,51241,51242,51243,51244,51245,51246,51247,51248,51249,51250,51251,51252,51253,51254,51255,51256,51257,51258,51259,51260,51261,51262,51263,51264,51265,51266,51267,51268,51269,51270,51271,51272,51273,51274,51275,51276,51277,51278,51279,51280,51281,51282,51283,51284,51285,51286,51287,51288,51289,51290,51291,51292,51293,51294,51295,51296,51297,51298,51299,51300,51301,51302,51303,51304,51305,51306,51307,51308,51309,51310,51311,51312,51313,51314,51315,51316,51317,51318,51319,51320,51321,51322,51323,51324,51325,51326,51327,51328,51329,51330,51331,51332,51333,51334,51335,51336,51337,51338,51339,51340,51341,51342,51343,51344,51345,51346,51347,51348,51349,51350,51351,51352,51353,51354,51355,51356,51357,51358,51359,51360,51361,51362,51363,51364,51365,51366,51367,51368,51369,51370,51371,51372,51373,51374,51375,51376,51377,51378,51379,51380,51381,51382,51383,51384,51385,51386,51387,51388,51389,51390,51391,51392,51393,51394,51395,51396,51397,51398,51399,51400,51401,51402,51403,51404,51405,51406,51407,51408,51409,51410,51411,51412,51413,51414,51415,51416,51417,51418,51419,51420,51421,51422,51423,51424,51425,51426,51427,51428,51429,51430,51431,51432,51433,51434,51435,51436,51437,51438,51439,51440,51441,51442,51443,51444,51445,51446,51447,51448,51449,51450,51451,51452,51453,51454,51455,51456,51457,51458,51459,51460,51461,51462,51463,51464,51465,51466,51467,51468,51469,51470,51471,51472,51473,51474,51475,51476,51477,51478,51479,51480,51481,51482,51483,51484,51485,51486,51487,51488,51489,51490,51491,51492,51493,51494,51495,51496,51497,51498,51499,51500,51501,51502,51503,51504,51505,51506,51507,51508,51509,51510,51511,51512,51513,51514,51515,51516,51517,51518,51519,51520,51521,51522,51523,51524,51525,51526,51527,51528,51529,51530,51531,51532,51533,51534,51535,51536,51537,51538,51539,51540,51541,51542,51543,51544,51545,51546,51547,51548,51549,51550,51551,51552,51553,51554,51555,51556,51557,51558,51559,51560,51561,51562,51563,51564,51565,51566,51567,51568,51569,51570,51571,51572,51573,51574,51575,51576,51577,51578,51579,51580,51581,51582,51583,51584,51585,51586,51587,51588,51589,51590,51591,51592,51593,51594,51595,51596,51597,51598,51599,51600,51601,51602,51603,51604,51605,51606,51607,51608,51609,51610,51611,51612,51613,51614,51615,51616,51617,51618,51619,51620,51621,51622,51623,51624,51625,51626,51627,51628,51629,51630,51631,51632,51633,51634,51635,51636,51637,51638,51639,51640,51641,51642,51643,51644,51645,51646,51647,51648,51649,51650,51651,51652,51653,51654,51655,51656,51657,51658,51659,51660,51661,51662,51663,51664,51665,51666,51667,51668,51669,51670,51671,51672,51673,51674,51675,51676,51677,51678,51679,51680,51681,51682,51683,51684,51685,51686,51687,51688,51689,51690,51691,51692,51693,51694,51695,51696,51697,51698,51699,51700,51701,51702,51703,51704,51705,51706,51707,51708,51709,51710,51711,51712,51713,51714,51715,51716,51717,51718,51719,51720,51721,51722,51723,51724,51725,51726,51727,51728,51729,51730,51731,51732,51733,51734,51735,51736,51737,51738,51739,51740,51741,51742,51743,51744,51745,51746,51747,51748,51749,51750,51751,51752,51753,51754,51755,51756,51757,51758,51759,51760,51761,51762,51763,51764,51765,51766,51767,51768,51769,51770,51771,51772,51773,51774,51775,51776,51777,51778,51779,51780,51781,51782,51783,51784,51785,51786,51787,51788,51789,51790,51791,51792,51793,51794,51795,51796,51797,51798,51799,51800,51801,51802,51803,51804,51805,51806,51807,51808,51809,51810,51811,51812,51813,51814,51815,51816,51817,51818,51819,51820,51821,51822,51823,51824,51825,51826,51827,51828,51829,51830,51831,51832,51833,51834,51835,51836,51837,51838,51839,51840,51841,51842,51843,51844,51845,51846,51847,51848,51849,51850,51851,51852,51853,51854,51855,51856,51857,51858,51859,51860,51861,51862,51863,51864,51865,51866,51867,51868,51869,51870,51871,51872,51873,51874,51875,51876,51877,51878,51879,51880,51881,51882,51883,51884,51885,51886,51887,51888,51889,51890,51891,51892,51893,51894,51895,51896,51897,51898,51899,51900,51901,51902,51903,51904,51905,51906,51907,51908,51909,51910,51911,51912,51913,51914,51915,51916,51917,51918,51919,51920,51921,51922,51923,51924,51925,51926,51927,51928,51929,51930,51931,51932,51933,51934,51935,51936,51937,51938,51939,51940,51941,51942,51943,51944,51945,51946,51947,51948,51949,51950,51951,51952,51953,51954,51955,51956,51957,51958,51959,51960,51961,51962,51963,51964,51965,51966,51967,51968,51969,51970,51971,51972,51973,51974,51975,51976,51977,51978,51979,51980,51981,51982,51983,51984,51985,51986,51987,51988,51989,51990,51991,51992,51993,51994,51995,51996,51997,51998,51999,52000,52001,52002,52003,52004,52005,52006,52007,52008,52009,52010,52011,52012,52013,52014,52015,52016,52017,52018,52019,52020,52021,52022,52023,52024,52025,52026,52027,52028,52029,52030,52031,52032,52033,52034,52035,52036,52037,52038,52039,52040,52041,52042,52043,52044,52045,52046,52047,52048,52049,52050,52051,52052,52053,52054,52055,52056,52057,52058,52059,52060,52061,52062,52063,52064,52065,52066,52067,52068,52069,52070,52071,52072,52073,52074,52075,52076,52077,52078,52079,52080,52081,52082,52083,52084,52085,52086,52087,52088,52089,52090,52091,52092,52093,52094,52095,52096,52097,52098,52099,52100,52101,52102,52103,52104,52105,52106,52107,52108,52109,52110,52111,52112,52113,52114,52115,52116,52117,52118,52119,52120,52121,52122,52123,52124,52125,52126,52127,52128,52129,52130,52131,52132,52133,52134,52135,52136,52137,52138,52139,52140,52141,52142,52143,52144,52145,52146,52147,52148,52149,52150,52151,52152,52153,52154,52155,52156,52157,52158,52159,52160,52161,52162,52163,52164,52165,52166,52167,52168,52169,52170,52171,52172,52173,52174,52175,52176,52177,52178,52179,52180,52181,52182,52183,52184,52185,52186,52187,52188,52189,52190,52191,52192,52193,52194,52195,52196,52197,52198,52199,52200,52201,52202,52203,52204,52205,52206,52207,52208,52209,52210,52211,52212,52213,52214,52215,52216,52217,52218,52219,52220,52221,52222,52223,52224,52225,52226,52227,52228,52229,52230,52231,52232,52233,52234,52235,52236,52237,52238,52239,52240,52241,52242,52243,52244,52245,52246,52247,52248,52249,52250,52251,52252,52253,52254,52255,52256,52257,52258,52259,52260,52261,52262,52263,52264,52265,52266,52267,52268,52269,52270,52271,52272,52273,52274,52275,52276,52277,52278,52279,52280,52281,52282,52283,52284,52285,52286,52287,52288,52289,52290,52291,52292,52293,52294,52295,52296,52297,52298,52299,52300,52301,52302,52303,52304,52305,52306,52307,52308,52309,52310,52311,52312,52313,52314,52315,52316,52317,52318,52319,52320,52321,52322,52323,52324,52325,52326,52327,52328,52329,52330,52331,52332,52333,52334,52335,52336,52337,52338,52339,52340,52341,52342,52343,52344,52345,52346,52347,52348,52349,52350,52351,52352,52353,52354,52355,52356,52357,52358,52359,52360,52361,52362,52363,52364,52365,52366,52367,52368,52369,52370,52371,52372,52373,52374,52375,52376,52377,52378,52379,52380,52381,52382,52383,52384,52385,52386,52387,52388,52389,52390,52391,52392,52393,52394,52395,52396,52397,52398,52399,52400,52401,52402,52403,52404,52405,52406,52407,52408,52409,52410,52411,52412,52413,52414,52415,52416,52417,52418,52419,52420,52421,52422,52423,52424,52425,52426,52427,52428,52429,52430,52431,52432,52433,52434,52435,52436,52437,52438,52439,52440,52441,52442,52443,52444,52445,52446,52447,52448,52449,52450,52451,52452,52453,52454,52455,52456,52457,52458,52459,52460,52461,52462,52463,52464,52465,52466,52467,52468,52469,52470,52471,52472,52473,52474,52475,52476,52477,52478,52479,52480,52481,52482,52483,52484,52485,52486,52487,52488,52489,52490,52491,52492,52493,52494,52495,52496,52497,52498,52499,52500,52501,52502,52503,52504,52505,52506,52507,52508,52509,52510,52511,52512,52513,52514,52515,52516,52517,52518,52519,52520,52521,52522,52523,52524,52525,52526,52527,52528,52529,52530,52531,52532,52533,52534,52535,52536,52537,52538,52539,52540,52541,52542,52543,52544,52545,52546,52547,52548,52549,52550,52551,52552,52553,52554,52555,52556,52557,52558,52559,52560,52561,52562,52563,52564,52565,52566,52567,52568,52569,52570,52571,52572,52573,52574,52575,52576,52577,52578,52579,52580,52581,52582,52583,52584,52585,52586,52587,52588,52589,52590,52591,52592,52593,52594,52595,52596,52597,52598,52599,52600,52601,52602,52603,52604,52605,52606,52607,52608,52609,52610,52611,52612,52613,52614,52615,52616,52617,52618,52619,52620,52621,52622,52623,52624,52625,52626,52627,52628,52629,52630,52631,52632,52633,52634,52635,52636,52637,52638,52639,52640,52641,52642,52643,52644,52645,52646,52647,52648,52649,52650,52651,52652,52653,52654,52655,52656,52657,52658,52659,52660,52661,52662,52663,52664,52665,52666,52667,52668,52669,52670,52671,52672,52673,52674,52675,52676,52677,52678,52679,52680,52681,52682,52683,52684,52685,52686,52687,52688,52689,52690,52691,52692,52693,52694,52695,52696,52697,52698,52699,52700,52701,52702,52703,52704,52705,52706,52707,52708,52709,52710,52711,52712,52713,52714,52715,52716,52717,52718,52719,52720,52721,52722,52723,52724,52725,52726,52727,52728,52729,52730,52731,52732,52733,52734,52735,52736,52737,52738,52739,52740,52741,52742,52743,52744,52745,52746,52747,52748,52749,52750,52751,52752,52753,52754,52755,52756,52757,52758,52759,52760,52761,52762,52763,52764,52765,52766,52767,52768,52769,52770,52771,52772,52773,52774,52775,52776,52777,52778,52779,52780,52781,52782,52783,52784,52785,52786,52787,52788,52789,52790,52791,52792,52793,52794,52795,52796,52797,52798,52799,52800,52801,52802,52803,52804,52805,52806,52807,52808,52809,52810,52811,52812,52813,52814,52815,52816,52817,52818,52819,52820,52821,52822,52823,52824,52825,52826,52827,52828,52829,52830,52831,52832,52833,52834,52835,52836,52837,52838,52839,52840,52841,52842,52843,52844,52845,52846,52847,52848,52849,52850,52851,52852,52853,52854,52855,52856,52857,52858,52859,52860,52861,52862,52863,52864,52865,52866,52867,52868,52869,52870,52871,52872,52873,52874,52875,52876,52877,52878,52879,52880,52881,52882,52883,52884,52885,52886,52887,52888,52889,52890,52891,52892,52893,52894,52895,52896,52897,52898,52899,52900,52901,52902,52903,52904,52905,52906,52907,52908,52909,52910,52911,52912,52913,52914,52915,52916,52917,52918,52919,52920,52921,52922,52923,52924,52925,52926,52927,52928,52929,52930,52931,52932,52933,52934,52935,52936,52937,52938,52939,52940,52941,52942,52943,52944,52945,52946,52947,52948,52949,52950,52951,52952,52953,52954,52955,52956,52957,52958,52959,52960,52961,52962,52963,52964,52965,52966,52967,52968,52969,52970,52971,52972,52973,52974,52975,52976,52977,52978,52979,52980,52981,52982,52983,52984,52985,52986,52987,52988,52989,52990,52991,52992,52993,52994,52995,52996,52997,52998,52999,53000,53001,53002,53003,53004,53005,53006,53007,53008,53009,53010,53011,53012,53013,53014,53015,53016,53017,53018,53019,53020,53021,53022,53023,53024,53025,53026,53027,53028,53029,53030,53031,53032,53033,53034,53035,53036,53037,53038,53039,53040,53041,53042,53043,53044,53045,53046,53047,53048,53049,53050,53051,53052,53053,53054,53055,53056,53057,53058,53059,53060,53061,53062,53063,53064,53065,53066,53067,53068,53069,53070,53071,53072,53073,53074,53075,53076,53077,53078,53079,53080,53081,53082,53083,53084,53085,53086,53087,53088,53089,53090,53091,53092,53093,53094,53095,53096,53097,53098,53099,53100,53101,53102,53103,53104,53105,53106,53107,53108,53109,53110,53111,53112,53113,53114,53115,53116,53117,53118,53119,53120,53121,53122,53123,53124,53125,53126,53127,53128,53129,53130,53131,53132,53133,53134,53135,53136,53137,53138,53139,53140,53141,53142,53143,53144,53145,53146,53147,53148,53149,53150,53151,53152,53153,53154,53155,53156,53157,53158,53159,53160,53161,53162,53163,53164,53165,53166,53167,53168,53169,53170,53171,53172,53173,53174,53175,53176,53177,53178,53179,53180,53181,53182,53183,53184,53185,53186,53187,53188,53189,53190,53191,53192,53193,53194,53195,53196,53197,53198,53199,53200,53201,53202,53203,53204,53205,53206,53207,53208,53209,53210,53211,53212,53213,53214,53215,53216,53217,53218,53219,53220,53221,53222,53223,53224,53225,53226,53227,53228,53229,53230,53231,53232,53233,53234,53235,53236,53237,53238,53239,53240,53241,53242,53243,53244,53245,53246,53247,53248,53249,53250,53251,53252,53253,53254,53255,53256,53257,53258,53259,53260,53261,53262,53263,53264,53265,53266,53267,53268,53269,53270,53271,53272,53273,53274,53275,53276,53277,53278,53279,53280,53281,53282,53283,53284,53285,53286,53287,53288,53289,53290,53291,53292,53293,53294,53295,53296,53297,53298,53299,53300,53301,53302,53303,53304,53305,53306,53307,53308,53309,53310,53311,53312,53313,53314,53315,53316,53317,53318,53319,53320,53321,53322,53323,53324,53325,53326,53327,53328,53329,53330,53331,53332,53333,53334,53335,53336,53337,53338,53339,53340,53341,53342,53343,53344,53345,53346,53347,53348,53349,53350,53351,53352,53353,53354,53355,53356,53357,53358,53359,53360,53361,53362,53363,53364,53365,53366,53367,53368,53369,53370,53371,53372,53373,53374,53375,53376,53377,53378,53379,53380,53381,53382,53383,53384,53385,53386,53387,53388,53389,53390,53391,53392,53393,53394,53395,53396,53397,53398,53399,53400,53401,53402,53403,53404,53405,53406,53407,53408,53409,53410,53411,53412,53413,53414,53415,53416,53417,53418,53419,53420,53421,53422,53423,53424,53425,53426,53427,53428,53429,53430,53431,53432,53433,53434,53435,53436,53437,53438,53439,53440,53441,53442,53443,53444,53445,53446,53447,53448,53449,53450,53451,53452,53453,53454,53455,53456,53457,53458,53459,53460,53461,53462,53463,53464,53465,53466,53467,53468,53469,53470,53471,53472,53473,53474,53475,53476,53477,53478,53479,53480,53481,53482,53483,53484,53485,53486,53487,53488,53489,53490,53491,53492,53493,53494,53495,53496,53497,53498,53499,53500,53501,53502,53503,53504,53505,53506,53507,53508,53509,53510,53511,53512,53513,53514,53515,53516,53517,53518,53519,53520,53521,53522,53523,53524,53525,53526,53527,53528,53529,53530,53531,53532,53533,53534,53535,53536,53537,53538,53539,53540,53541,53542,53543,53544,53545,53546,53547,53548,53549,53550,53551,53552,53553,53554,53555,53556,53557,53558,53559,53560,53561,53562,53563,53564,53565,53566,53567,53568,53569,53570,53571,53572,53573,53574,53575,53576,53577,53578,53579,53580,53581,53582,53583,53584,53585,53586,53587,53588,53589,53590,53591,53592,53593,53594,53595,53596,53597,53598,53599,53600,53601,53602,53603,53604,53605,53606,53607,53608,53609,53610,53611,53612,53613,53614,53615,53616,53617,53618,53619,53620,53621,53622,53623,53624,53625,53626,53627,53628,53629,53630,53631,53632,53633,53634,53635,53636,53637,53638,53639,53640,53641,53642,53643,53644,53645,53646,53647,53648,53649,53650,53651,53652,53653,53654,53655,53656,53657,53658,53659,53660,53661,53662,53663,53664,53665,53666,53667,53668,53669,53670,53671,53672,53673,53674,53675,53676,53677,53678,53679,53680,53681,53682,53683,53684,53685,53686,53687,53688,53689,53690,53691,53692,53693,53694,53695,53696,53697,53698,53699,53700,53701,53702,53703,53704,53705,53706,53707,53708,53709,53710,53711,53712,53713,53714,53715,53716,53717,53718,53719,53720,53721,53722,53723,53724,53725,53726,53727,53728,53729,53730,53731,53732,53733,53734,53735,53736,53737,53738,53739,53740,53741,53742,53743,53744,53745,53746,53747,53748,53749,53750,53751,53752,53753,53754,53755,53756,53757,53758,53759,53760,53761,53762,53763,53764,53765,53766,53767,53768,53769,53770,53771,53772,53773,53774,53775,53776,53777,53778,53779,53780,53781,53782,53783,53784,53785,53786,53787,53788,53789,53790,53791,53792,53793,53794,53795,53796,53797,53798,53799,53800,53801,53802,53803,53804,53805,53806,53807,53808,53809,53810,53811,53812,53813,53814,53815,53816,53817,53818,53819,53820,53821,53822,53823,53824,53825,53826,53827,53828,53829,53830,53831,53832,53833,53834,53835,53836,53837,53838,53839,53840,53841,53842,53843,53844,53845,53846,53847,53848,53849,53850,53851,53852,53853,53854,53855,53856,53857,53858,53859,53860,53861,53862,53863,53864,53865,53866,53867,53868,53869,53870,53871,53872,53873,53874,53875,53876,53877,53878,53879,53880,53881,53882,53883,53884,53885,53886,53887,53888,53889,53890,53891,53892,53893,53894,53895,53896,53897,53898,53899,53900,53901,53902,53903,53904,53905,53906,53907,53908,53909,53910,53911,53912,53913,53914,53915,53916,53917,53918,53919,53920,53921,53922,53923,53924,53925,53926,53927,53928,53929,53930,53931,53932,53933,53934,53935,53936,53937,53938,53939,53940,53941,53942,53943,53944,53945,53946,53947,53948,53949,53950,53951,53952,53953,53954,53955,53956,53957,53958,53959,53960,53961,53962,53963,53964,53965,53966,53967,53968,53969,53970,53971,53972,53973,53974,53975,53976,53977,53978,53979,53980,53981,53982,53983,53984,53985,53986,53987,53988,53989,53990,53991,53992,53993,53994,53995,53996,53997,53998,53999,54000,54001,54002,54003,54004,54005,54006,54007,54008,54009,54010,54011,54012,54013,54014,54015,54016,54017,54018,54019,54020,54021,54022,54023,54024,54025,54026,54027,54028,54029,54030,54031,54032,54033,54034,54035,54036,54037,54038,54039,54040,54041,54042,54043,54044,54045,54046,54047,54048,54049,54050,54051,54052,54053,54054,54055,54056,54057,54058,54059,54060,54061,54062,54063,54064,54065,54066,54067,54068,54069,54070,54071,54072,54073,54074,54075,54076,54077,54078,54079,54080,54081,54082,54083,54084,54085,54086,54087,54088,54089,54090,54091,54092,54093,54094,54095,54096,54097,54098,54099,54100,54101,54102,54103,54104,54105,54106,54107,54108,54109,54110,54111,54112,54113,54114,54115,54116,54117,54118,54119,54120,54121,54122,54123,54124,54125,54126,54127,54128,54129,54130,54131,54132,54133,54134,54135,54136,54137,54138,54139,54140,54141,54142,54143,54144,54145,54146,54147,54148,54149,54150,54151,54152,54153,54154,54155,54156,54157,54158,54159,54160,54161,54162,54163,54164,54165,54166,54167,54168,54169,54170,54171,54172,54173,54174,54175,54176,54177,54178,54179,54180,54181,54182,54183,54184,54185,54186,54187,54188,54189,54190,54191,54192,54193,54194,54195,54196,54197,54198,54199,54200,54201,54202,54203,54204,54205,54206,54207,54208,54209,54210,54211,54212,54213,54214,54215,54216,54217,54218,54219,54220,54221,54222,54223,54224,54225,54226,54227,54228,54229,54230,54231,54232,54233,54234,54235,54236,54237,54238,54239,54240,54241,54242,54243,54244,54245,54246,54247,54248,54249,54250,54251,54252,54253,54254,54255,54256,54257,54258,54259,54260,54261,54262,54263,54264,54265,54266,54267,54268,54269,54270,54271,54272,54273,54274,54275,54276,54277,54278,54279,54280,54281,54282,54283,54284,54285,54286,54287,54288,54289,54290,54291,54292,54293,54294,54295,54296,54297,54298,54299,54300,54301,54302,54303,54304,54305,54306,54307,54308,54309,54310,54311,54312,54313,54314,54315,54316,54317,54318,54319,54320,54321,54322,54323,54324,54325,54326,54327,54328,54329,54330,54331,54332,54333,54334,54335,54336,54337,54338,54339,54340,54341,54342,54343,54344,54345,54346,54347,54348,54349,54350,54351,54352,54353,54354,54355,54356,54357,54358,54359,54360,54361,54362,54363,54364,54365,54366,54367,54368,54369,54370,54371,54372,54373,54374,54375,54376,54377,54378,54379,54380,54381,54382,54383,54384,54385,54386,54387,54388,54389,54390,54391,54392,54393,54394,54395,54396,54397,54398,54399,54400,54401,54402,54403,54404,54405,54406,54407,54408,54409,54410,54411,54412,54413,54414,54415,54416,54417,54418,54419,54420,54421,54422,54423,54424,54425,54426,54427,54428,54429,54430,54431,54432,54433,54434,54435,54436,54437,54438,54439,54440,54441,54442,54443,54444,54445,54446,54447,54448,54449,54450,54451,54452,54453,54454,54455,54456,54457,54458,54459,54460,54461,54462,54463,54464,54465,54466,54467,54468,54469,54470,54471,54472,54473,54474,54475,54476,54477,54478,54479,54480,54481,54482,54483,54484,54485,54486,54487,54488,54489,54490,54491,54492,54493,54494,54495,54496,54497,54498,54499,54500,54501,54502,54503,54504,54505,54506,54507,54508,54509,54510,54511,54512,54513,54514,54515,54516,54517,54518,54519,54520,54521,54522,54523,54524,54525,54526,54527,54528,54529,54530,54531,54532,54533,54534,54535,54536,54537,54538,54539,54540,54541,54542,54543,54544,54545,54546,54547,54548,54549,54550,54551,54552,54553,54554,54555,54556,54557,54558,54559,54560,54561,54562,54563,54564,54565,54566,54567,54568,54569,54570,54571,54572,54573,54574,54575,54576,54577,54578,54579,54580,54581,54582,54583,54584,54585,54586,54587,54588,54589,54590,54591,54592,54593,54594,54595,54596,54597,54598,54599,54600,54601,54602,54603,54604,54605,54606,54607,54608,54609,54610,54611,54612,54613,54614,54615,54616,54617,54618,54619,54620,54621,54622,54623,54624,54625,54626,54627,54628,54629,54630,54631,54632,54633,54634,54635,54636,54637,54638,54639,54640,54641,54642,54643,54644,54645,54646,54647,54648,54649,54650,54651,54652,54653,54654,54655,54656,54657,54658,54659,54660,54661,54662,54663,54664,54665,54666,54667,54668,54669,54670,54671,54672,54673,54674,54675,54676,54677,54678,54679,54680,54681,54682,54683,54684,54685,54686,54687,54688,54689,54690,54691,54692,54693,54694,54695,54696,54697,54698,54699,54700,54701,54702,54703,54704,54705,54706,54707,54708,54709,54710,54711,54712,54713,54714,54715,54716,54717,54718,54719,54720,54721,54722,54723,54724,54725,54726,54727,54728,54729,54730,54731,54732,54733,54734,54735,54736,54737,54738,54739,54740,54741,54742,54743,54744,54745,54746,54747,54748,54749,54750,54751,54752,54753,54754,54755,54756,54757,54758,54759,54760,54761,54762,54763,54764,54765,54766,54767,54768,54769,54770,54771,54772,54773,54774,54775,54776,54777,54778,54779,54780,54781,54782,54783,54784,54785,54786,54787,54788,54789,54790,54791,54792,54793,54794,54795,54796,54797,54798,54799,54800,54801,54802,54803,54804,54805,54806,54807,54808,54809,54810,54811,54812,54813,54814,54815,54816,54817,54818,54819,54820,54821,54822,54823,54824,54825,54826,54827,54828,54829,54830,54831,54832,54833,54834,54835,54836,54837,54838,54839,54840,54841,54842,54843,54844,54845,54846,54847,54848,54849,54850,54851,54852,54853,54854,54855,54856,54857,54858,54859,54860,54861,54862,54863,54864,54865,54866,54867,54868,54869,54870,54871,54872,54873,54874,54875,54876,54877,54878,54879,54880,54881,54882,54883,54884,54885,54886,54887,54888,54889,54890,54891,54892,54893,54894,54895,54896,54897,54898,54899,54900,54901,54902,54903,54904,54905,54906,54907,54908,54909,54910,54911,54912,54913,54914,54915,54916,54917,54918,54919,54920,54921,54922,54923,54924,54925,54926,54927,54928,54929,54930,54931,54932,54933,54934,54935,54936,54937,54938,54939,54940,54941,54942,54943,54944,54945,54946,54947,54948,54949,54950,54951,54952,54953,54954,54955,54956,54957,54958,54959,54960,54961,54962,54963,54964,54965,54966,54967,54968,54969,54970,54971,54972,54973,54974,54975,54976,54977,54978,54979,54980,54981,54982,54983,54984,54985,54986,54987,54988,54989,54990,54991,54992,54993,54994,54995,54996,54997,54998,54999,55000,55001,55002,55003,55004,55005,55006,55007,55008,55009,55010,55011,55012,55013,55014,55015,55016,55017,55018,55019,55020,55021,55022,55023,55024,55025,55026,55027,55028,55029,55030,55031,55032,55033,55034,55035,55036,55037,55038,55039,55040,55041,55042,55043,55044,55045,55046,55047,55048,55049,55050,55051,55052,55053,55054,55055,55056,55057,55058,55059,55060,55061,55062,55063,55064,55065,55066,55067,55068,55069,55070,55071,55072,55073,55074,55075,55076,55077,55078,55079,55080,55081,55082,55083,55084,55085,55086,55087,55088,55089,55090,55091,55092,55093,55094,55095,55096,55097,55098,55099,55100,55101,55102,55103,55104,55105,55106,55107,55108,55109,55110,55111,55112,55113,55114,55115,55116,55117,55118,55119,55120,55121,55122,55123,55124,55125,55126,55127,55128,55129,55130,55131,55132,55133,55134,55135,55136,55137,55138,55139,55140,55141,55142,55143,55144,55145,55146,55147,55148,55149,55150,55151,55152,55153,55154,55155,55156,55157,55158,55159,55160,55161,55162,55163,55164,55165,55166,55167,55168,55169,55170,55171,55172,55173,55174,55175,55176,55177,55178,55179,55180,55181,55182,55183,55184,55185,55186,55187,55188,55189,55190,55191,55192,55193,55194,55195,55196,55197,55198,55199,55200,55201,55202,55203,55216,55217,55218,55219,55220,55221,55222,55223,55224,55225,55226,55227,55228,55229,55230,55231,55232,55233,55234,55235,55236,55237,55238,55243,55244,55245,55246,55247,55248,55249,55250,55251,55252,55253,55254,55255,55256,55257,55258,55259,55260,55261,55262,55263,55264,55265,55266,55267,55268,55269,55270,55271,55272,55273,55274,55275,55276,55277,55278,55279,55280,55281,55282,55283,55284,55285,55286,55287,55288,55289,55290,55291,63744,63745,63746,63747,63748,63749,63750,63751,63752,63753,63754,63755,63756,63757,63758,63759,63760,63761,63762,63763,63764,63765,63766,63767,63768,63769,63770,63771,63772,63773,63774,63775,63776,63777,63778,63779,63780,63781,63782,63783,63784,63785,63786,63787,63788,63789,63790,63791,63792,63793,63794,63795,63796,63797,63798,63799,63800,63801,63802,63803,63804,63805,63806,63807,63808,63809,63810,63811,63812,63813,63814,63815,63816,63817,63818,63819,63820,63821,63822,63823,63824,63825,63826,63827,63828,63829,63830,63831,63832,63833,63834,63835,63836,63837,63838,63839,63840,63841,63842,63843,63844,63845,63846,63847,63848,63849,63850,63851,63852,63853,63854,63855,63856,63857,63858,63859,63860,63861,63862,63863,63864,63865,63866,63867,63868,63869,63870,63871,63872,63873,63874,63875,63876,63877,63878,63879,63880,63881,63882,63883,63884,63885,63886,63887,63888,63889,63890,63891,63892,63893,63894,63895,63896,63897,63898,63899,63900,63901,63902,63903,63904,63905,63906,63907,63908,63909,63910,63911,63912,63913,63914,63915,63916,63917,63918,63919,63920,63921,63922,63923,63924,63925,63926,63927,63928,63929,63930,63931,63932,63933,63934,63935,63936,63937,63938,63939,63940,63941,63942,63943,63944,63945,63946,63947,63948,63949,63950,63951,63952,63953,63954,63955,63956,63957,63958,63959,63960,63961,63962,63963,63964,63965,63966,63967,63968,63969,63970,63971,63972,63973,63974,63975,63976,63977,63978,63979,63980,63981,63982,63983,63984,63985,63986,63987,63988,63989,63990,63991,63992,63993,63994,63995,63996,63997,63998,63999,64000,64001,64002,64003,64004,64005,64006,64007,64008,64009,64010,64011,64012,64013,64014,64015,64016,64017,64018,64019,64020,64021,64022,64023,64024,64025,64026,64027,64028,64029,64030,64031,64032,64033,64034,64035,64036,64037,64038,64039,64040,64041,64042,64043,64044,64045,64046,64047,64048,64049,64050,64051,64052,64053,64054,64055,64056,64057,64058,64059,64060,64061,64062,64063,64064,64065,64066,64067,64068,64069,64070,64071,64072,64073,64074,64075,64076,64077,64078,64079,64080,64081,64082,64083,64084,64085,64086,64087,64088,64089,64090,64091,64092,64093,64094,64095,64096,64097,64098,64099,64100,64101,64102,64103,64104,64105,64106,64107,64108,64109,64112,64113,64114,64115,64116,64117,64118,64119,64120,64121,64122,64123,64124,64125,64126,64127,64128,64129,64130,64131,64132,64133,64134,64135,64136,64137,64138,64139,64140,64141,64142,64143,64144,64145,64146,64147,64148,64149,64150,64151,64152,64153,64154,64155,64156,64157,64158,64159,64160,64161,64162,64163,64164,64165,64166,64167,64168,64169,64170,64171,64172,64173,64174,64175,64176,64177,64178,64179,64180,64181,64182,64183,64184,64185,64186,64187,64188,64189,64190,64191,64192,64193,64194,64195,64196,64197,64198,64199,64200,64201,64202,64203,64204,64205,64206,64207,64208,64209,64210,64211,64212,64213,64214,64215,64216,64217,64256,64257,64258,64259,64260,64261,64262,64275,64276,64277,64278,64279,64285,64287,64288,64289,64290,64291,64292,64293,64294,64295,64296,64298,64299,64300,64301,64302,64303,64304,64305,64306,64307,64308,64309,64310,64312,64313,64314,64315,64316,64318,64320,64321,64323,64324,64326,64327,64328,64329,64330,64331,64332,64333,64334,64335,64336,64337,64338,64339,64340,64341,64342,64343,64344,64345,64346,64347,64348,64349,64350,64351,64352,64353,64354,64355,64356,64357,64358,64359,64360,64361,64362,64363,64364,64365,64366,64367,64368,64369,64370,64371,64372,64373,64374,64375,64376,64377,64378,64379,64380,64381,64382,64383,64384,64385,64386,64387,64388,64389,64390,64391,64392,64393,64394,64395,64396,64397,64398,64399,64400,64401,64402,64403,64404,64405,64406,64407,64408,64409,64410,64411,64412,64413,64414,64415,64416,64417,64418,64419,64420,64421,64422,64423,64424,64425,64426,64427,64428,64429,64430,64431,64432,64433,64467,64468,64469,64470,64471,64472,64473,64474,64475,64476,64477,64478,64479,64480,64481,64482,64483,64484,64485,64486,64487,64488,64489,64490,64491,64492,64493,64494,64495,64496,64497,64498,64499,64500,64501,64502,64503,64504,64505,64506,64507,64508,64509,64510,64511,64512,64513,64514,64515,64516,64517,64518,64519,64520,64521,64522,64523,64524,64525,64526,64527,64528,64529,64530,64531,64532,64533,64534,64535,64536,64537,64538,64539,64540,64541,64542,64543,64544,64545,64546,64547,64548,64549,64550,64551,64552,64553,64554,64555,64556,64557,64558,64559,64560,64561,64562,64563,64564,64565,64566,64567,64568,64569,64570,64571,64572,64573,64574,64575,64576,64577,64578,64579,64580,64581,64582,64583,64584,64585,64586,64587,64588,64589,64590,64591,64592,64593,64594,64595,64596,64597,64598,64599,64600,64601,64602,64603,64604,64605,64606,64607,64608,64609,64610,64611,64612,64613,64614,64615,64616,64617,64618,64619,64620,64621,64622,64623,64624,64625,64626,64627,64628,64629,64630,64631,64632,64633,64634,64635,64636,64637,64638,64639,64640,64641,64642,64643,64644,64645,64646,64647,64648,64649,64650,64651,64652,64653,64654,64655,64656,64657,64658,64659,64660,64661,64662,64663,64664,64665,64666,64667,64668,64669,64670,64671,64672,64673,64674,64675,64676,64677,64678,64679,64680,64681,64682,64683,64684,64685,64686,64687,64688,64689,64690,64691,64692,64693,64694,64695,64696,64697,64698,64699,64700,64701,64702,64703,64704,64705,64706,64707,64708,64709,64710,64711,64712,64713,64714,64715,64716,64717,64718,64719,64720,64721,64722,64723,64724,64725,64726,64727,64728,64729,64730,64731,64732,64733,64734,64735,64736,64737,64738,64739,64740,64741,64742,64743,64744,64745,64746,64747,64748,64749,64750,64751,64752,64753,64754,64755,64756,64757,64758,64759,64760,64761,64762,64763,64764,64765,64766,64767,64768,64769,64770,64771,64772,64773,64774,64775,64776,64777,64778,64779,64780,64781,64782,64783,64784,64785,64786,64787,64788,64789,64790,64791,64792,64793,64794,64795,64796,64797,64798,64799,64800,64801,64802,64803,64804,64805,64806,64807,64808,64809,64810,64811,64812,64813,64814,64815,64816,64817,64818,64819,64820,64821,64822,64823,64824,64825,64826,64827,64828,64829,64848,64849,64850,64851,64852,64853,64854,64855,64856,64857,64858,64859,64860,64861,64862,64863,64864,64865,64866,64867,64868,64869,64870,64871,64872,64873,64874,64875,64876,64877,64878,64879,64880,64881,64882,64883,64884,64885,64886,64887,64888,64889,64890,64891,64892,64893,64894,64895,64896,64897,64898,64899,64900,64901,64902,64903,64904,64905,64906,64907,64908,64909,64910,64911,64914,64915,64916,64917,64918,64919,64920,64921,64922,64923,64924,64925,64926,64927,64928,64929,64930,64931,64932,64933,64934,64935,64936,64937,64938,64939,64940,64941,64942,64943,64944,64945,64946,64947,64948,64949,64950,64951,64952,64953,64954,64955,64956,64957,64958,64959,64960,64961,64962,64963,64964,64965,64966,64967,65008,65009,65010,65011,65012,65013,65014,65015,65016,65017,65018,65019,65136,65137,65138,65139,65140,65142,65143,65144,65145,65146,65147,65148,65149,65150,65151,65152,65153,65154,65155,65156,65157,65158,65159,65160,65161,65162,65163,65164,65165,65166,65167,65168,65169,65170,65171,65172,65173,65174,65175,65176,65177,65178,65179,65180,65181,65182,65183,65184,65185,65186,65187,65188,65189,65190,65191,65192,65193,65194,65195,65196,65197,65198,65199,65200,65201,65202,65203,65204,65205,65206,65207,65208,65209,65210,65211,65212,65213,65214,65215,65216,65217,65218,65219,65220,65221,65222,65223,65224,65225,65226,65227,65228,65229,65230,65231,65232,65233,65234,65235,65236,65237,65238,65239,65240,65241,65242,65243,65244,65245,65246,65247,65248,65249,65250,65251,65252,65253,65254,65255,65256,65257,65258,65259,65260,65261,65262,65263,65264,65265,65266,65267,65268,65269,65270,65271,65272,65273,65274,65275,65276,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,65382,65383,65384,65385,65386,65387,65388,65389,65390,65391,65392,65393,65394,65395,65396,65397,65398,65399,65400,65401,65402,65403,65404,65405,65406,65407,65408,65409,65410,65411,65412,65413,65414,65415,65416,65417,65418,65419,65420,65421,65422,65423,65424,65425,65426,65427,65428,65429,65430,65431,65432,65433,65434,65435,65436,65437,65438,65439,65440,65441,65442,65443,65444,65445,65446,65447,65448,65449,65450,65451,65452,65453,65454,65455,65456,65457,65458,65459,65460,65461,65462,65463,65464,65465,65466,65467,65468,65469,65470,65474,65475,65476,65477,65478,65479,65482,65483,65484,65485,65486,65487,65490,65491,65492,65493,65494,65495,65498,65499,65500".split(",").map(function(e){return parseInt(e,10)});t.exports=r},{}],4:[function(e,t,n){function r(e,t){return h.isUndefined(t)?""+t:h.isNumber(t)&&!isFinite(t)?t.toString():h.isFunction(t)||h.isRegExp(t)?t.toString():t}function i(e,t){return h.isString(e)?e.length=0;o--)if(s[o]!=a[o])return!1;for(o=s.length-1;o>=0;o--)if(i=s[o],!u(e[i],t[i]))return!1;return!0}function f(e,t){return!(!e||!t)&&("[object RegExp]"==Object.prototype.toString.call(t)?t.test(e):e instanceof t||!0===t.call({},e))}function p(e,t,n,r){var i;h.isString(n)&&(r=n,n=null);try{t()}catch(e){i=e}if(r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),e&&!i&&s(i,n,"Missing expected exception"+r),!e&&f(i,n)&&s(i,n,"Got unwanted exception"+r),e&&i&&n&&!f(i,n)||!e&&i)throw i}var h=e("util/"),d=Array.prototype.slice,v=Object.prototype.hasOwnProperty,g=t.exports=a;g.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=o(this),this.generatedMessage=!0);var t=e.stackStartFunction||s;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var n=new Error;if(n.stack){var r=n.stack,i=t.name,a=r.indexOf("\n"+i);if(a>=0){var u=r.indexOf("\n",a+1);r=r.substring(u+1)}this.stack=r}}},h.inherits(g.AssertionError,Error),g.fail=s,g.ok=a,g.equal=function(e,t,n){e!=t&&s(e,t,n,"==",g.equal)},g.notEqual=function(e,t,n){e==t&&s(e,t,n,"!=",g.notEqual)},g.deepEqual=function(e,t,n){u(e,t)||s(e,t,n,"deepEqual",g.deepEqual)},g.notDeepEqual=function(e,t,n){u(e,t)&&s(e,t,n,"notDeepEqual",g.notDeepEqual)},g.strictEqual=function(e,t,n){e!==t&&s(e,t,n,"===",g.strictEqual)},g.notStrictEqual=function(e,t,n){e===t&&s(e,t,n,"!==",g.notStrictEqual)},g.throws=function(e,t,n){p.apply(this,[!0].concat(d.call(arguments)))},g.doesNotThrow=function(e,t){p.apply(this,[!1].concat(d.call(arguments)))},g.ifError=function(e){if(e)throw e};var m=Object.keys||function(e){var t=[];for(var n in e)v.call(e,n)&&t.push(n);return t}},{"util/":9}],5:[function(e,t,n){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function i(e){return"function"==typeof e}function o(e){return"number"==typeof e}function s(e){return"object"==typeof e&&null!==e}function a(e){return void 0===e}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(!o(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,n,r,o,u,c;if(this._events||(this._events={}),"error"===e&&(!this._events.error||s(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;throw TypeError('Uncaught, unspecified "error" event.')}if(n=this._events[e],a(n))return!1;if(i(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:for(r=arguments.length,o=new Array(r-1),u=1;u0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())}return this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function n(){this.removeListener(e,n),r||(r=!0,t.apply(this,arguments))}if(!i(t))throw TypeError("listener must be a function");var r=!1;return n.listener=t,this.on(e,n),this},r.prototype.removeListener=function(e,t){var n,r,o,a;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(n=this._events[e],o=n.length,r=-1,n===t||i(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(s(n)){for(a=o;a-- >0;)if(n[a]===t||n[a].listener&&n[a].listener===t){r=a;break}if(r<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[e],i(n))this.removeListener(e,n);else for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){return this._events&&this._events[e]?i(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.listenerCount=function(e,t){return e._events&&e._events[t]?i(e._events[t])?1:e._events[t].length:0}},{}],6:[function(e,t,n){function r(){if(!a){a=!0;for(var e,t=s.length;t;){e=s,s=[];for(var n=-1;++n=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),v(t)?r.showHidden=t:t&&n._extend(r,t),y(r.showHidden)&&(r.showHidden=!1),y(r.depth)&&(r.depth=2),y(r.colors)&&(r.colors=!1),y(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=o),u(r,e,r.depth)}function o(e,t){var n=i.styles[t];return n?"["+i.colors[n][0]+"m"+e+"["+i.colors[n][1]+"m":e}function s(e,t){return e}function a(e){var t={};return e.forEach(function(e,n){t[e]=!0}),t}function u(e,t,r){if(e.customInspect&&t&&w(t.inspect)&&t.inspect!==n.inspect&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(r,e);return k(i)||(i=u(e,i,r)),i}var o=c(e,t);if(o)return o;var s=Object.keys(t),v=a(s);if(e.showHidden&&(s=Object.getOwnPropertyNames(t)),_(t)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return l(t);if(0===s.length){if(w(t)){var g=t.name?": "+t.name:"";return e.stylize("[Function"+g+"]","special")}if(x(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(E(t))return e.stylize(Date.prototype.toString.call(t),"date");if(_(t))return l(t)}var m="",y=!1,b=["{","}"];if(d(t)&&(y=!0,b=["[","]"]),w(t)&&(m=" [Function"+(t.name?": "+t.name:"")+"]"),x(t)&&(m=" "+RegExp.prototype.toString.call(t)),E(t)&&(m=" "+Date.prototype.toUTCString.call(t)),_(t)&&(m=" "+l(t)),0===s.length&&(!y||0==t.length))return b[0]+m+b[1];if(r<0)return x(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var S;return S=y?f(e,t,r,v,s):s.map(function(n){return p(e,t,r,v,n,y)}),e.seen.pop(),h(S,m,b)}function c(e,t){if(y(t))return e.stylize("undefined","undefined");if(k(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}return m(t)?e.stylize(""+t,"number"):v(t)?e.stylize(""+t,"boolean"):g(t)?e.stylize("null","null"):void 0}function l(e){return"["+Error.prototype.toString.call(e)+"]"}function f(e,t,n,r,i){for(var o=[],s=0,a=t.length;s-1&&(a=o?a.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+a.split("\n").map(function(e){return" "+e}).join("\n")):a=e.stylize("[Circular]","special")),y(s)){if(o&&i.match(/^\d+$/))return a;(s=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=e.stylize(s,"string"))}return s+": "+a}function h(e,t,n){var r=0;return e.reduce(function(e,t){return r++,t.indexOf("\n")>=0&&r++,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60?n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1]:n[0]+t+" "+e.join(", ")+" "+n[1]}function d(e){return Array.isArray(e)}function v(e){return"boolean"==typeof e}function g(e){return null===e}function m(e){return"number"==typeof e}function k(e){return"string"==typeof e}function y(e){return void 0===e}function x(e){return b(e)&&"[object RegExp]"===S(e)}function b(e){return"object"==typeof e&&null!==e}function E(e){return b(e)&&"[object Date]"===S(e)}function _(e){return b(e)&&("[object Error]"===S(e)||e instanceof Error)}function w(e){return"function"==typeof e}function S(e){return Object.prototype.toString.call(e)}function W(e){return e<10?"0"+e.toString(10):e.toString(10)}function A(){var e=new Date,t=[W(e.getHours()),W(e.getMinutes()),W(e.getSeconds())].join(":");return[e.getDate(),G[e.getMonth()],t].join(" ")}function L(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var j=/%[sdj%]/g;n.format=function(e){if(!k(e)){for(var t=[],n=0;n=o)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}}),a=r[n];nt||!n||e===S&&r)return 1;if(e-1;);return n}function l(e,t){for(var n=e.length;n--&&t.indexOf(e.charAt(n))>-1;);return n}function f(e,t){return r(e.criteria,t.criteria)||e.index-t.index}function p(e,t,n){for(var i=-1,o=e.criteria,s=t.criteria,a=o.length,u=n.length;++i=u?c:c*(n[i]?1:-1)}return e.index-t.index}function h(e){return Ne[e]}function d(e){return De[e]}function v(e){return"\\"+He[e]}function g(e,t,n){for(var r=e.length,i=t+(n?0:-1);n?i--:++i=9&&e<=13||32==e||160==e||5760==e||6158==e||e>=8192&&(e<=8202||8232==e||8233==e||8239==e||8287==e||12288==e||65279==e)}function y(e,t){for(var n=-1,r=e.length,i=-1,o=[];++nr&&(r=i)}return r}function Ye(e,t){for(var n=-1,r=e.length;++n=200?Xi(t):null,c=t.length;u&&(s=ze,a=!1,t=u);e:for(;++ii?0:i+n),(r=r===S||r>i?i:+r||0)<0&&(r+=i),i=n>r?0:r>>>0,n>>>=0;ni?0:i+t),(n=n===S||n>i?i:+n||0)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var o=Ur(i);++r=200,u=a?Xi():null,c=[];u?(r=ze,s=!1):(a=!1,u=t?[]:c);e:for(;++n>>1,s=e[o];(n?s<=t:s2&&n[i-2],s=i>2&&n[2],a=i>1&&n[i-1];for("function"==typeof o?(o=zt(o,a,5),i-=2):i-=(o="function"==typeof a?a:null)?1:0,s&&Gn(n[0],n[1],s)&&(o=i<3?null:o,i=1);++r-1?n[s]:S}return dt(n,r,e)}}function sn(e){return function(t,n,r){return t&&t.length?(n=wn(n,r,3),i(t,n,e)):-1}}function an(e){return function(t,n,r){return n=wn(n,r,3),dt(t,n,e,!0)}}function un(e){return function(){var t=arguments.length;if(!t)return function(){return arguments[0]};for(var n,r=e?t:-1,i=0,o=Ur(t);e?r--:++r=t||!Si(t))return"";var i=t-r;return n=null==n?" ":n+"",Or(n,ui(i/n.length)).slice(0,i)}function mn(e,t,n,r){function i(){for(var t=-1,a=arguments.length,u=-1,c=r.length,l=Ur(a+c);++uu))return!1;for(;l&&++ai)||u===r&&u===o)&&(i=u,o=e)}),o}function wn(e,n,r){var i=t.callback||Mr;return i=i===Mr?at:i,r?i(e,n,r):i}function Sn(e,n,r){var i=t.indexOf||Xn;return i=i===Xn?o:i,e?i(e,n,r):i}function Wn(e,t,n){for(var r=-1,i=n?n.length:0;++r-1&&e%1==0&&e-1&&e%1==0&&e<=Ri}function In(e){return e===e&&(0===e?1/e>0:!kr(e))}function Fn(e,t){var n=e[1],r=t[1],i=n|r,o=i>>0,r=Ur(n);++t-1:Sn(e,t,n)>-1)}function ar(e,t,n){var r=Po(e)?Xe:wt;return t=wn(t,n,3),r(e,t)}function ur(e,t,n){if(n?Gn(e,t,n):null==t){var r=(e=Dn(e)).length;return r>0?e[Gt(0,r-1)]:S}var i=cr(e);return i.length=Li(t<0?0:+t||0,i.length),i}function cr(e){for(var t=-1,n=(e=Dn(e)).length,r=Ur(n);++t0&&(n=t.apply(this,arguments)),e<=1&&(t=null),n}}function pr(e,t,n){function r(){var n=t-(So()-c);if(n<=0||n>t){a&&ci(a);var i=p;a=f=p=S,i&&(h=So(),u=e.apply(l,s),f||a||(s=l=null))}else f=mi(r,n)}function i(){f&&ci(f),a=f=p=S,(v||d!==t)&&(h=So(),u=e.apply(l,s),f||a||(s=l=null))}function o(){if(s=arguments,c=So(),l=this,p=v&&(f||!g),!1===d)var n=g&&!f;else{a||g||(h=c);var o=d-(c-h),m=o<=0||o>d;m?(a&&(a=ci(a)),h=c,u=e.apply(l,s)):a||(a=mi(i,o))}return m&&f?f=ci(f):f||t===d||(f=mi(r,t)),n&&(m=!0,u=e.apply(l,s)),!m||f||a||(s=l=null),u}var s,a,u,c,l,f,p,h=0,d=!1,v=!0;if("function"!=typeof e)throw new Zr(D);if(t=t<0?0:+t||0,!0===n){var g=!0;v=!1}else kr(n)&&(g=n.leading,d="maxWait"in n&&Ai(+n.maxWait||0,t),v="trailing"in n?n.trailing:v);return o.cancel=function(){f&&ci(f),a&&ci(a),a=f=p=S},o}function hr(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new Zr(D);var n=function(){var r=arguments,i=n.cache,o=t?t.apply(this,r):r[0];if(i.has(o))return i.get(o);var s=e.apply(this,r);return i.set(o,s),s};return n.cache=new hr.Cache,n}function dr(e,t){if("function"!=typeof e)throw new Zr(D);return t=Ai(t===S?e.length-1:+t||0,0),function(){for(var n=arguments,r=-1,i=Ai(n.length-t,0),o=Ur(i);++r-1}function mr(e){return m(e)&&"string"==typeof e.message&&ri.call(e)==Z}function kr(e){var t=typeof e;return"function"==t||!!e&&"object"==t}function yr(e){return null!=e&&(ri.call(e)==X?oi.test(ei.call(e)):m(e)&&Oe.test(e))}function xr(e){return"number"==typeof e||m(e)&&ri.call(e)==K}function br(e){return m(e)&&ri.call(e)==Q||!1}function Er(e){return"string"==typeof e||m(e)&&ri.call(e)==ee}function _r(e){return m(e)&&Vn(e.length)&&!!Re[ri.call(e)]}function wr(e){return st(e,Wr(e))}function Sr(e){return yt(e,Wr(e))}function Wr(e){if(null==e)return[];kr(e)||(e=Hr(e));var t=e.length;t=t&&Vn(t)&&(Po(e)||Ni.nonEnumArgs&&vr(e))&&t||0;for(var n=e.constructor,r=-1,i="function"==typeof n&&n.prototype===e,o=Ur(t),s=t>0;++r>>1,Pi=bi?bi.BYTES_PER_ELEMENT:0,Ri=qr.pow(2,53)-1,Ui=xi&&new xi,Bi={},Ni=t.support={};!function(e){var t=function(){this.x=e},n=[];t.prototype={valueOf:e,y:e};for(var r in new t)n.push(r);Ni.funcDecomp=/\bthis\b/.test(function(){return this}),Ni.funcNames="string"==typeof Dr.name;try{Ni.dom=11===Qr.createDocumentFragment().nodeType}catch(e){Ni.dom=!1}try{Ni.nonEnumArgs=!vi.call(arguments,1)}catch(e){Ni.nonEnumArgs=!0}}(1,0),t.templateSettings={escape:ke,evaluate:ye,interpolate:xe,variable:"",imports:{_:t}};var Di=Ei||function(e,t){return null==t?e:st(t,eo(t),st(t,Xo(t),e))},qi=function(){function t(){}return function(n){if(kr(n)){t.prototype=n;var r=new t;t.prototype=null}return r||e.Object()}}(),zi=Kt(mt),Hi=Kt(kt,!0),$i=Yt(),Ji=Yt(!0),Zi=Ui?function(e,t){return Ui.set(e,t),e}:Ir;ai||(Ht=si&&yi?function(e){var t=e.byteLength,n=bi?li(t/Pi):0,r=n*Pi,i=new si(t);if(n){var o=new bi(i,0,n);o.set(new bi(e,0,n))}return t!=r&&(o=new yi(i,r)).set(new yi(e,r)),i}:Vr(null));var Xi=wi&&gi?function(e){return new qe(e)}:Vr(null),Ki=Ui?function(e){return Ui.get(e)}:Pr,Yi=Ni.funcNames?"constant"==Vr.name?jt("name"):function(e){for(var t=e.name,n=Bi[t],r=n?n.length:0;r--;){var i=n[r],o=i.func;if(null==o||o==e)return i.name}return t}:Vr(""),Qi=jt("length"),eo=fi?function(e){return fi(qn(e))}:Vr([]),to=function(){var e=0,t=0;return function(n,r){var i=So(),o=R-(i-t);if(t=i,o>0){if(++e>=P)return n}else e=0;return Zi(n,r)}}(),no=dr(function(e,t){return Po(e)||vr(e)?lt(e,vt(t,!1,!0)):[]}),ro=sn(),io=sn(!0),oo=dr(function(e,t){e||(e=[]);var n=ot(e,t=vt(t));return Ot(e,t.sort(r)),n}),so=kn(),ao=kn(!0),uo=dr(function(e){return Rt(vt(e,!1,!0))}),co=dr(function(e,t){return Po(e)||vr(e)?lt(e,t):[]}),lo=dr(er),fo=dr(function(e,t){return Vn(e?Qi(e):0)&&(e=Dn(e)),ot(e,vt(t))}),po=Zt(function(e,t,n){ti.call(e,n)?++e[n]:e[n]=1}),ho=on(zi),vo=on(Hi,!0),go=cn($e,zi),mo=cn(function(e,t){for(var n=e.length;n--&&!1!==t(e[n],n,e););return e},Hi),ko=Zt(function(e,t,n){ti.call(e,n)?e[n].push(t):e[n]=[t]}),yo=Zt(function(e,t,n){e[n]=t}),xo=dr(function(e,t,n){var r=-1,i="function"==typeof t,o=Cn(t),s=Qi(e),a=Vn(s)?Ur(s):[];return zi(e,function(e){var s=i?t:o&&null!=e&&e[t];a[++r]=s?s.apply(e,n):Tn(e,t,n)}),a}),bo=Zt(function(e,t,n){e[n?0:1].push(t)},function(){return[[],[]]}),Eo=dn(function(e,t,n,r){var i=-1,o=e.length;for(r&&o&&(n=e[++i]);++i=120?Xi(t&&u):null))}if((n=e.length)<2)return a;var c=e[0],l=-1,f=c?c.length:0,p=r[0];e:for(;++l-1;)ki.call(t,o,1);return t},t.pullAt=oo,t.range=function(e,t,n){n&&Gn(e,t,n)&&(t=n=null),e=+e||0,n=null==n?1:+n||0,null==t?(t=e,e=0):t=+t||0;for(var r=-1,i=Ai(ui((t-e)/(n||1)),0),o=Ur(i);++r=0&&e.indexOf(t,n)==n},t.escape=function(e){return e=a(e),e&&me.test(e)?e.replace(ve,d):e},t.escapeRegExp=jr,t.every=ir,t.find=ho,t.findIndex=ro,t.findKey=qo,t.findLast=vo,t.findLastIndex=io,t.findLastKey=zo,t.findWhere=function(e,t){return ho(e,St(t))},t.first=Zn,t.get=function(e,t,n){var r=null==e?S:xt(e,zn(t),t+"");return r===S?n:r},t.has=function(e,t){if(null==e)return!1;var n=ti.call(e,t);return n||Cn(t)||(e=1==(t=zn(t)).length?e:xt(e,Mt(t,0,-1)),t=Kn(t),n=null!=e&&ti.call(e,t)),n},t.identity=Ir,t.includes=sr,t.indexOf=Xn,t.inRange=function(e,t,n){return t=+t||0,void 0===n?(n=t,t=0):n=+n||0,e>=Li(t,n)&&e=t||!Si(t))return e;var i=(t-r)/2,o=li(i);return(n=gn("",ui(i),n)).slice(0,o)+e+n},t.padLeft=ns,t.padRight=rs,t.parseInt=Tr,t.random=function(e,t,n){n&&Gn(e,t,n)&&(t=n=null);var r=null==e,i=null==t;if(null==n&&(i&&"boolean"==typeof e?(n=e,e=1):"boolean"==typeof t&&(n=t,i=!0)),r&&i&&(t=1,i=!1),e=+e||0,i?(t=e,e=0):t=+t||0,n||e%1||t%1){var o=Gi();return Li(e+o*(t-e+parseFloat("1e-"+((o+"").length-1))),t)}return Gt(e,t)},t.reduce=Eo,t.reduceRight=_o,t.repeat=Or,t.result=function(e,t,n){var r=null==e?S:e[t];return r===S&&(null==e||Cn(t,e)||(r=null==(e=1==(t=zn(t)).length?e:xt(e,Mt(t,0,-1)))?S:e[Kn(t)]),r=r===S?n:r),Uo(r)?r.call(e):r},t.runInContext=w,t.size=function(e){var t=e?Qi(e):0;return Vn(t)?t:Xo(e).length},t.snakeCase=is,t.some=lr,t.sortedIndex=so,t.sortedLastIndex=ao,t.startCase=os,t.startsWith=function(e,t,n){return e=a(e),n=null==n?0:Li(n<0?0:+n||0,e.length),e.lastIndexOf(t,n)==n},t.sum=function(e,t,n){n&&Gn(e,t,n)&&(t=null);var r=wn(),i=null==t;return r===at&&i||(i=!1,t=r(t,n,3)),i?tt(Po(e)?e:Dn(e)):Pt(e,t)},t.template=function(e,n,r){var i=t.templateSettings;r&&Gn(e,n,r)&&(n=r=null),e=a(e),n=it(Di({},r||n),i,rt);var o,s,u=it(Di({},n.imports),i.imports,rt),c=Xo(u),l=Ut(u,c),f=0,p=n.interpolate||Ce,h="__p += '",d=$r((n.escape||Ce).source+"|"+p.source+"|"+(p===xe?Le:Ce).source+"|"+(n.evaluate||Ce).source+"|$","g"),g="//# sourceURL="+("sourceURL"in n?n.sourceURL:"lodash.templateSources["+ ++Pe+"]")+"\n";e.replace(d,function(t,n,r,i,a,u){return r||(r=i),h+=e.slice(f,u).replace(Me,v),n&&(o=!0,h+="' +\n__e("+n+") +\n'"),a&&(s=!0,h+="';\n"+a+";\n__p += '"),r&&(h+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),f=u+t.length,t}),h+="';\n";var m=n.variable;m||(h="with (obj) {\n"+h+"\n}\n"),h=(s?h.replace(fe,""):h).replace(pe,"$1").replace(he,"$1;"),h="function("+(m||"obj")+") {\n"+(m?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(s?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+h+"return __p\n}";var k=ss(function(){return Dr(c,g+"return "+h).apply(S,l)});if(k.source=h,mr(k))throw k;return k},t.trim=Gr,t.trimLeft=function(e,t,n){var r=e;return e=a(e),e?(n?Gn(r,t,n):null==t)?e.slice(b(e)):e.slice(c(e,t+"")):e},t.trimRight=function(e,t,n){var r=e;return e=a(e),e?(n?Gn(r,t,n):null==t)?e.slice(0,E(e)+1):e.slice(0,l(e,t+"")+1):e},t.trunc=function(e,t,n){n&&Gn(e,t,n)&&(t=null);var r=I,i=F;if(null!=t)if(kr(t)){var o="separator"in t?t.separator:o;r="length"in t?+t.length||0:r,i="omission"in t?a(t.omission):i}else r=+t||0;if(e=a(e),r>=e.length)return e;var s=r-i.length;if(s<1)return i;var u=e.slice(0,s);if(null==o)return u+i;if(br(o)){if(e.slice(s).search(o)){var c,l,f=e.slice(0,s);for(o.global||(o=$r(o.source,(je.exec(o)||"")+"g")),o.lastIndex=0;c=o.exec(f);)l=c.index;u=u.slice(0,null==l?s:l)}}else if(e.indexOf(o,s)!=s){var p=u.lastIndexOf(o);p>-1&&(u=u.slice(0,p))}return u+i},t.unescape=function(e){return e=a(e),e&&ge.test(e)?e.replace(de,_):e},t.uniqueId=function(e){var t=++ni;return a(e)+t},t.words=Cr,t.all=ir,t.any=lr,t.contains=sr,t.detect=ho,t.foldl=Eo,t.foldr=_o,t.head=Zn,t.include=sr,t.inject=Eo,Fr(t,function(){var e={};return mt(t,function(n,r){t.prototype[r]||(e[r]=n)}),e}(),!1),t.sample=ur,t.prototype.sample=function(e){return this.__chain__||null!=e?this.thru(function(t){return ur(t,e)}):ur(this.value())},t.VERSION=W,$e(["bind","bindKey","curry","curryRight","partial","partialRight"],function(e){t[e].placeholder=t}),$e(["dropWhile","filter","map","takeWhile"],function(e,t){var n=t!=N,r=t==U;Ne.prototype[e]=function(e,i){var o=this.__filtered__,s=o&&r?new Ne(this):this.clone();return(s.__iteratees__||(s.__iteratees__=[])).push({done:!1,count:0,index:0,iteratee:wn(e,i,1),limit:-1,type:t}),s.__filtered__=o||n,s}}),$e(["drop","take"],function(e,t){var n=e+"While";Ne.prototype[e]=function(n){var r=this.__filtered__,i=r&&!t?this.dropWhile():this.clone();return n=null==n?1:Ai(li(n)||0,0),r?t?i.__takeCount__=Li(i.__takeCount__,n):Kn(i.__iteratees__).limit=n:(i.__views__||(i.__views__=[])).push({size:n,type:e+(i.__dir__<0?"Right":"")}),i},Ne.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()},Ne.prototype[e+"RightWhile"]=function(e,t){return this.reverse()[n](e,t).reverse()}}),$e(["first","last"],function(e,t){var n="take"+(t?"Right":"");Ne.prototype[e]=function(){return this[n](1).value()[0]}}),$e(["initial","rest"],function(e,t){var n="drop"+(t?"":"Right");Ne.prototype[e]=function(){return this[n](1)}}),$e(["pluck","where"],function(e,t){var n=t?"filter":"map",r=t?St:Rr;Ne.prototype[e]=function(e){return this[n](r(e))}}),Ne.prototype.compact=function(){return this.filter(Ir)},Ne.prototype.reject=function(e,t){return e=wn(e,t,1),this.filter(function(t){return!e(t)})},Ne.prototype.slice=function(e,t){var n=(e=null==e?0:+e||0)<0?this.takeRight(-e):this.drop(e);return t!==S&&(n=(t=+t||0)<0?n.dropRight(-t):n.take(t-e)),n},Ne.prototype.toArray=function(){return this.drop(0)},mt(Ne.prototype,function(e,n){var r=t[n];if(r){var i=/^(?:filter|map|reject)|While$/.test(n),o=/^(?:first|last)$/.test(n);t.prototype[n]=function(){var n=arguments,s=(n.length,this.__chain__),a=this.__wrapped__,u=!!this.__actions__.length,c=a instanceof Ne,l=n[0],f=c||Po(a);f&&i&&"function"==typeof l&&1!=l.length&&(c=f=!1);var p=c&&!u;if(o&&!s)return p?e.call(a):r.call(t,this.value());var h=function(e){var i=[e];return hi.apply(i,n),r.apply(t,i)};if(f){var d=p?a:new Ne(this),v=e.apply(d,n);return o||!u&&!v.__actions__||(v.__actions__||(v.__actions__=[])).push({func:rr,args:[h],thisArg:t}),new k(v,s)}return this.thru(h)}}}),$e(["concat","join","pop","push","replace","shift","sort","splice","split","unshift"],function(e){var n=(/^(?:replace|split)$/.test(e)?Yr:Xr)[e],r=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",i=/^(?:join|pop|replace|shift)$/.test(e);t.prototype[e]=function(){var e=arguments;return i&&!this.__chain__?n.apply(this.value(),e):this[r](function(t){return n.apply(t,e)})}}),mt(Ne.prototype,function(e,n){var r=t[n];if(r){var i=r.name;(Bi[i]||(Bi[i]=[])).push({name:n,func:r})}}),Bi[vn(null,L).name]=[{name:"wrapper",func:null}],Ne.prototype.clone=function(){var e=this.__actions__,t=this.__iteratees__,n=this.__views__,r=new Ne(this.__wrapped__);return r.__actions__=e?He(e):null,r.__dir__=this.__dir__,r.__filtered__=this.__filtered__,r.__iteratees__=t?He(t):null,r.__takeCount__=this.__takeCount__,r.__views__=n?He(n):null,r},Ne.prototype.reverse=function(){if(this.__filtered__){var e=new Ne(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},Ne.prototype.value=function(){var e=this.__wrapped__.value();if(!Po(e))return Nt(e,this.__actions__);var t=this.__dir__,n=t<0,r=Wn(0,e.length,this.__views__),i=r.start,o=r.end,s=o-i,a=n?o:i-1,u=Li(s,this.__takeCount__),c=this.__iteratees__,l=c?c.length:0,f=0,p=[];e:for(;s--&&fv.index:a-1?v.count++>=k:!g(d)))continue e}}else{var y=g(d);if(m==N)d=y;else if(!y){if(m==B)continue e;break e}}}p[f++]=d}return p},t.prototype.chain=function(){return nr(this)},t.prototype.commit=function(){return new k(this.value(),this.__chain__)},t.prototype.plant=function(e){for(var t,r=this;r instanceof n;){var i=Hn(r);t?o.__wrapped__=i:t=i;var o=i;r=r.__wrapped__}return o.__wrapped__=e,t},t.prototype.reverse=function(){var e=this.__wrapped__;return e instanceof Ne?(this.__actions__.length&&(e=new Ne(this)),new k(e.reverse(),this.__chain__)):this.thru(function(e){return e.reverse()})},t.prototype.toString=function(){return this.value()+""},t.prototype.run=t.prototype.toJSON=t.prototype.valueOf=t.prototype.value=function(){return Nt(this.__wrapped__,this.__actions__)},t.prototype.collect=t.prototype.map,t.prototype.head=t.prototype.first,t.prototype.select=t.prototype.filter,t.prototype.tail=t.prototype.rest,t}var S,W="3.7.0",A=1,L=2,j=4,T=8,O=16,G=32,C=64,M=128,V=256,I=30,F="...",P=150,R=16,U=0,B=1,N=2,D="Expected a function",q="__lodash_placeholder__",z="[object Arguments]",H="[object Array]",$="[object Boolean]",J="[object Date]",Z="[object Error]",X="[object Function]",K="[object Number]",Y="[object Object]",Q="[object RegExp]",ee="[object String]",te="[object ArrayBuffer]",ne="[object Float32Array]",re="[object Float64Array]",ie="[object Int8Array]",oe="[object Int16Array]",se="[object Int32Array]",ae="[object Uint8Array]",ue="[object Uint8ClampedArray]",ce="[object Uint16Array]",le="[object Uint32Array]",fe=/\b__p \+= '';/g,pe=/\b(__p \+=) '' \+/g,he=/(__e\(.*?\)|\b__t\)) \+\n'';/g,de=/&(?:amp|lt|gt|quot|#39|#96);/g,ve=/[&<>"'`]/g,ge=RegExp(de.source),me=RegExp(ve.source),ke=/<%-([\s\S]+?)%>/g,ye=/<%([\s\S]+?)%>/g,xe=/<%=([\s\S]+?)%>/g,be=/\.|\[(?:[^[\]]+|(["'])(?:(?!\1)[^\n\\]|\\.)*?)\1\]/,Ee=/^\w*$/,_e=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,we=/[.*+?^${}()|[\]\/\\]/g,Se=RegExp(we.source),We=/[\u0300-\u036f\ufe20-\ufe23]/g,Ae=/\\(\\)?/g,Le=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,je=/\w*$/,Te=/^0[xX]/,Oe=/^\[object .+?Constructor\]$/,Ge=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Ce=/($^)/,Me=/['\n\r\u2028\u2029\\]/g,Ve=function(){var e="[A-Z\\xc0-\\xd6\\xd8-\\xde]",t="[a-z\\xdf-\\xf6\\xf8-\\xff]+";return RegExp(e+"+(?="+e+t+")|"+e+"?"+t+"|"+e+"+|[0-9]+","g")}(),Ie=" \t\v\f \ufeff\n\r\u2028\u2029 ᠎              ",Fe=["Array","ArrayBuffer","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Math","Number","Object","RegExp","Set","String","_","clearTimeout","document","isFinite","parseInt","setTimeout","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","window"],Pe=-1,Re={};Re[ne]=Re[re]=Re[ie]=Re[oe]=Re[se]=Re[ae]=Re[ue]=Re[ce]=Re[le]=!0,Re[z]=Re[H]=Re[te]=Re[$]=Re[J]=Re[Z]=Re[X]=Re["[object Map]"]=Re[K]=Re[Y]=Re[Q]=Re["[object Set]"]=Re[ee]=Re["[object WeakMap]"]=!1;var Ue={};Ue[z]=Ue[H]=Ue[te]=Ue[$]=Ue[J]=Ue[ne]=Ue[re]=Ue[ie]=Ue[oe]=Ue[se]=Ue[K]=Ue[Y]=Ue[Q]=Ue[ee]=Ue[ae]=Ue[ue]=Ue[ce]=Ue[le]=!0,Ue[Z]=Ue[X]=Ue["[object Map]"]=Ue["[object Set]"]=Ue["[object WeakMap]"]=!1;var Be={leading:!1,maxWait:0,trailing:!1},Ne={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss"},De={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},qe={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"},ze={function:!0,object:!0},He={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},$e=ze[typeof n]&&n&&!n.nodeType&&n,Je=ze[typeof t]&&t&&!t.nodeType&&t,Ze=$e&&Je&&"object"==typeof e&&e&&e.Object&&e,Xe=ze[typeof self]&&self&&self.Object&&self,Ke=ze[typeof window]&&window&&window.Object&&window,Ye=Je&&Je.exports===$e&&$e,Qe=Ze||Ke!==(this&&this.window)&&Ke||Xe||this,et=w();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(Qe._=et,define(function(){return et})):$e&&Je?Ye?(Je.exports=et)._=et:$e._=et:Qe._=et}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],13:[function(e,t,n){"use strict";function r(e){return/^[0-9a-fA-F]+$/.test(e)}function i(e){return 1===e.length&&r(e)}function o(){var e=[];return{push:function(t){e.push(t)},check:function(){for(var t=0;t0&&this.context[this.context.length-1].type===e},pushContext:function(e){this.context.push({type:e})},popContext:function(){return this.context.pop()},isContext:function(e){return this.context.length>0&&this.context[this.context.length-1]===e},currentContext:function(){return this.context.length>0&&this.context[this.context.length-1]},getLines:function(){return this._lines=l.lines,this._lines},setLines:function(e){this._lines=e,l.lines=this._lines},peek:function(e){return this.input.charAt(e||0)},skip:function(e){e=e||1,this.char+=e,this.input=this.input.slice(e)},on:function(e,t){e.split(" ").forEach(function(e){this.emitter.on(e,t)}.bind(this))},trigger:function(){this.emitter.emit.apply(this.emitter,Array.prototype.slice.call(arguments))},triggerAsync:function(e,t,n,r){n.push(function(){r()&&this.trigger(e,t)}.bind(this))},scanPunctuator:function(){var e,t,n,r=this.peek();switch(r){case".":if(/^[0-9]$/.test(this.peek(1)))return null;if("."===this.peek(1)&&"."===this.peek(2))return{type:g.Punctuator,value:"..."};case"(":case")":case";":case",":case"[":case"]":case":":case"~":case"?":return{type:g.Punctuator,value:r};case"{":return this.pushContext(m.Block),{type:g.Punctuator,value:r};case"}":return this.inContext(m.Block)&&this.popContext(),{type:g.Punctuator,value:r};case"#":return{type:g.Punctuator,value:r};case"":return null}return e=this.peek(1),t=this.peek(2),n=this.peek(3),">"===r&&">"===e&&">"===t&&"="===n?{type:g.Punctuator,value:">>>="}:"="===r&&"="===e&&"="===t?{type:g.Punctuator,value:"==="}:"!"===r&&"="===e&&"="===t?{type:g.Punctuator,value:"!=="}:">"===r&&">"===e&&">"===t?{type:g.Punctuator,value:">>>"}:"<"===r&&"<"===e&&"="===t?{type:g.Punctuator,value:"<<="}:">"===r&&">"===e&&"="===t?{type:g.Punctuator,value:">>="}:"="===r&&">"===e?{type:g.Punctuator,value:r+e}:r===e&&"+-<>&|".indexOf(r)>=0?{type:g.Punctuator,value:r+e}:"<>=!+-*%&|^/".indexOf(r)>=0?"="===e?{type:g.Punctuator,value:r+e}:{type:g.Punctuator,value:r}:null},scanComments:function(e){function t(e,t,n){var r=["jshint","jslint","members","member","globals","global","exported"],i=!1,o=e+t,s="plain";return(n=n||{}).isMultiline&&(o+="*/"),t=t.replace(/\n/g," "),"/*"===e&&c.fallsThrough.test(t)&&(i=!0,s="falls through"),r.forEach(function(n){if(!i&&("//"!==e||"jshint"===n)&&(" "===t.charAt(n.length)&&t.substr(0,n.length)===n&&(i=!0,e+=n,t=t.substr(n.length)),i||" "!==t.charAt(0)||" "!==t.charAt(n.length+1)||t.substr(1,n.length)!==n||(i=!0,e=e+" "+n,t=t.substr(n.length+1)),i))switch(n){case"member":s="members";break;case"global":s="globals";break;default:var r=t.split(":").map(function(e){return e.replace(/^\s+/,"").replace(/\s+$/,"")});if(2===r.length)switch(r[0]){case"ignore":switch(r[1]){case"start":a.ignoringLinterErrors=!0,i=!1;break;case"end":a.ignoringLinterErrors=!1,i=!1}}s=n}}),{type:g.Comment,commentType:s,value:o,body:t,isSpecial:i,isMultiline:n.isMultiline||!1,isMalformed:n.isMalformed||!1}}var n=this.peek(),r=this.peek(1),i=this.input.substr(2),o=this.line,s=this.char,a=this;if("*"===n&&"/"===r)return this.trigger("error",{code:"E018",line:o,character:s}),this.skip(2),null;if("/"!==n||"*"!==r&&"/"!==r)return null;if("/"===r)return this.skip(this.input.length),t("//",i);var u="";if("*"===r){for(this.inComment=!0,this.skip(2);"*"!==this.peek()||"/"!==this.peek(1);)if(""===this.peek()){if(u+="\n",!this.nextLine(e))return this.trigger("error",{code:"E017",line:o,character:s}),this.inComment=!1,t("/*",u,{isMultiline:!0,isMalformed:!0})}else u+=this.peek(),this.skip();return this.skip(2),this.inComment=!1,t("/*",u,{isMultiline:!0})}},scanKeyword:function(){var e=/^[a-zA-Z_$][a-zA-Z0-9_$]*/.exec(this.input),t=["if","in","do","var","for","new","try","let","this","else","case","void","with","enum","while","break","catch","throw","const","yield","class","super","return","typeof","delete","switch","export","import","default","finally","extends","function","continue","debugger","instanceof"];return e&&t.indexOf(e[0])>=0?{type:g.Keyword,value:e[0]}:null},scanIdentifier:function(){function e(e){return d.indexOf(e)>-1}function t(t){return e(t)||v.indexOf(t)>-1}var n,i,o="",s=0,a=function(){if(s+=1,"u"!==this.peek(s))return null;var e,n=this.peek(s+1)+this.peek(s+2)+this.peek(s+3)+this.peek(s+4);return r(n)?(e=parseInt(n,16),h[e]||t(e)?(s+=5,"\\u"+n):null):null}.bind(this),u=function(){var t=this.peek(s),n=t.charCodeAt(0);return 92===n?a():n<128?p[n]?(s+=1,t):null:e(n)?(s+=1,t):null}.bind(this),c=function(){var e=this.peek(s),n=e.charCodeAt(0);return 92===n?a():n<128?h[n]?(s+=1,e):null:t(n)?(s+=1,e):null}.bind(this);if(null===(i=u()))return null;for(o=i;null!==(i=c());)o+=i;switch(o){case"true":case"false":n=g.BooleanLiteral;break;case"null":n=g.NullLiteral;break;default:n=g.Identifier}return{type:n,value:function(e){return e.replace(/\\u([0-9a-fA-F]{4})/g,function(e,t){return String.fromCharCode(parseInt(t,16))})}(o),text:o,tokenLength:o.length}},scanNumericLiteral:function(e){function t(e){return/^[0-9]$/.test(e)}function n(e){return/^[0-7]$/.test(e)}function r(e){return"$"===e||"_"===e||"\\"===e||e>="a"&&e<="z"||e>="A"&&e<="Z"}var o=0,s="",a=this.input.length,u=this.peek(o),c=t,f=10,p=!1;if("."!==u&&!t(u))return null;if("."!==u){for(s=this.peek(o),o+=1,u=this.peek(o),"0"===s&&("x"!==u&&"X"!==u||(c=i,f=16,o+=1,s+=u),"o"!==u&&"O"!==u||(c=n,f=8,l.inES6(!0)||this.triggerAsync("warning",{code:"W119",line:this.line,character:this.char,data:["Octal integer literal","6"]},e,function(){return!0}),o+=1,s+=u),"b"!==u&&"B"!==u||(c=function(e){return/^[01]$/.test(e)},f=2,l.inES6(!0)||this.triggerAsync("warning",{code:"W119",line:this.line,character:this.char,data:["Binary integer literal","6"]},e,function(){return!0}),o+=1,s+=u),n(u)&&(c=n,f=8,p=!0,!1,o+=1,s+=u),!n(u)&&t(u)&&(o+=1,s+=u));o=0&&o<=7&&l.isStrict()});break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":i="\\"+i,this.triggerAsync("warning",{code:"W115",line:this.line,character:this.char},e,function(){return l.isStrict()});break;case"u":var s=this.input.substr(1,4),a=parseInt(s,16);r(s)||this.trigger("warning",{code:"W052",line:this.line,character:this.char,data:["u"+s]}),i=String.fromCharCode(a),n=5;break;case"v":this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\v"]},e,function(){return l.jsonMode}),i="\v";break;case"x":var u=parseInt(this.input.substr(1,2),16);this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\x-"]},e,function(){return l.jsonMode}),i=String.fromCharCode(u),n=3;break;case"\\":i="\\\\";break;case'"':i='\\"';break;case"/":break;case"":t=!0,i=""}return{char:i,jump:n,allowNewLine:t}},scanTemplateLiteral:function(e){var t,n,r="",i=this.line,o=this.char,s=this.templateStarts.length;if("`"===this.peek())l.inES6(!0)||this.triggerAsync("warning",{code:"W119",line:this.line,character:this.char,data:["template literal syntax","6"]},e,function(){return!0}),t=g.TemplateHead,this.templateStarts.push({line:this.line,char:this.char}),s=this.templateStarts.length,this.skip(1),this.pushContext(m.Template);else{if(!this.inContext(m.Template)||"}"!==this.peek())return null;t=g.TemplateMiddle}for(;"`"!==this.peek();){for(;""===(n=this.peek());)if(r+="\n",!this.nextLine(e)){var a=this.templateStarts.pop();return this.trigger("error",{code:"E052",line:a.line,character:a.char}),{type:t,value:r,startLine:i,startChar:o,isUnclosed:!0,depth:s,context:this.popContext()}}if("$"===n&&"{"===this.peek(1))return r+="${",this.skip(2),{type:t,value:r,startLine:i,startChar:o,isUnclosed:!1,depth:s,context:this.currentContext()};if("\\"===n){var u=this.scanEscapeSequence(e);r+=u.char,this.skip(u.jump)}else"`"!==n&&(r+=n,this.skip(1))}return t=t===g.TemplateHead?g.NoSubstTemplate:g.TemplateTail,this.skip(1),this.templateStarts.pop(),{type:t,value:r,startLine:i,startChar:o,isUnclosed:!1,depth:s,context:this.popContext()}},scanStringLiteral:function(e){var t=this.peek();if('"'!==t&&"'"!==t)return null;this.triggerAsync("warning",{code:"W108",line:this.line,character:this.char},e,function(){return l.jsonMode&&'"'!==t});var n="",r=this.line,i=this.char,o=!1;for(this.skip();this.peek()!==t;)if(""===this.peek()){if(o?(o=!1,this.triggerAsync("warning",{code:"W043",line:this.line,character:this.char},e,function(){return!l.option.multistr}),this.triggerAsync("warning",{code:"W042",line:this.line,character:this.char},e,function(){return l.jsonMode&&l.option.multistr})):this.trigger("warning",{code:"W112",line:this.line,character:this.char}),!this.nextLine(e))return this.trigger("error",{code:"E029",line:r,character:i}),{type:g.StringLiteral,value:n,startLine:r,startChar:i,isUnclosed:!0,quote:t}}else{o=!1;var s=this.peek(),a=1;if(s<" "&&this.triggerAsync("warning",{code:"W113",line:this.line,character:this.char,data:[""]},e,function(){return!0}),"\\"===s){var u=this.scanEscapeSequence(e);s=u.char,a=u.jump,o=u.allowNewLine}n+=s,this.skip(a)}return this.skip(),{type:g.StringLiteral,value:n,startLine:r,startChar:i,isUnclosed:!1,quote:t}},scanRegExp:function(e){var t,n,r=0,i=this.input.length,o=this.peek(),s=o,a="",u=[],c=!1,f=!1,p=function(){o<" "&&(c=!0,this.triggerAsync("warning",{code:"W048",line:this.line,character:this.char},e,function(){return!0})),"<"===o&&(c=!0,this.triggerAsync("warning",{code:"W049",line:this.line,character:this.char,data:[o]},e,function(){return!0}))}.bind(this);if(!this.prereg||"/"!==o)return null;for(r+=1,t=!1;r-1&&(n="Duplicate RegExp flag")):u.push(o),s+=o,r+=1;try{new RegExp(a,u.join(""))}catch(e){n=e.message}return n&&(c=!0,this.trigger("error",{code:"E016",line:this.line,character:this.char,data:[n]})),{type:g.RegExp,value:s,flags:u,isMalformed:c}},scanNonBreakingSpaces:function(){return l.option.nonbsp?this.input.search(/(\u00A0)/):-1},scanUnsafeChars:function(){return this.input.search(c.unsafeChars)},next:function(e){for(this.from=this.char;/\s/.test(this.peek());)this.from+=1,this.skip();var t=this.scanComments(e)||this.scanStringLiteral(e)||this.scanTemplateLiteral(e);return t||(t=this.scanRegExp(e)||this.scanPunctuator()||this.scanKeyword()||this.scanIdentifier()||this.scanNumericLiteral(e),t?(this.skip(t.tokenLength||t.value.length),t):null)},nextLine:function(e){var t;if(this.line>=this.getLines().length)return!1;this.input=this.getLines()[this.line],this.line+=1,this.char=1,this.from=1;var n=this.input.trim(),r=function(){return a.some(arguments,function(e){return 0===n.indexOf(e)})};return!0===this.ignoringLinterErrors&&(r("/*","//")||this.inComment&&function(){return a.some(arguments,function(e){return-1!==n.indexOf(e,n.length-e.length)})}("*/")||(this.input="")),(t=this.scanNonBreakingSpaces())>=0&&this.triggerAsync("warning",{code:"W125",line:this.line,character:t+1},e,function(){return!0}),this.input=this.input.replace(/\t/g,l.tab),(t=this.scanUnsafeChars())>=0&&this.triggerAsync("warning",{code:"W100",line:this.line,character:t},e,function(){return!0}),!this.ignoringLinterErrors&&l.option.maxlen&&l.option.maxlen=0;--t){var n=k[t]["(labels)"];if(n[e])return n}}function d(e){for(var t=k.length-1;t>=0;t--){var n=k[t];if(n["(usages)"][e])return n["(usages)"][e];if(n===y)break}return!1}function v(t,n){if("outer"===e.option.shadow)for(var r="global"===y["(type)"],i="functionparams"===m["(type)"],o=!r,s=0;s1?k[k.length-2]:null,a=m===y,l="functionparams"===m["(type)"],p="functionouter"===m["(type)"],h=m["(usages)"],d=m["(labels)"],v=Object.keys(h);for(h.__proto__&&-1===v.indexOf("__proto__")&&v.push("__proto__"),t=0;t=0;i--){var o=k[i];if(o["(labels)"][e]&&(!n||o["(labels)"][e]["(blockscoped)"]))return o["(labels)"][e]["(type)"];var s=r?k[i-1]:o;if(s&&"functionparams"===s["(type)"])return null}return null},hasBreakLabel:function(e){for(var t=k.length-1;t>=0;t--){var n=k[t];if(n["(breakLabels)"][e])return!0;if("functionparams"===n["(type)"])return!1}return!1},has:function(e,t){return Boolean(this.labeltype(e,t))},add:function(e,t,n,r){m["(labels)"][e]={"(type)":t,"(token)":n,"(blockscoped)":!1,"(function)":y,"(unused)":r}}},block:{isGlobal:function(){return"global"===m["(type)"]},use:function(t,n){var r=y["(parent)"];r&&r["(labels)"][t]&&"param"===r["(labels)"][t]["(type)"]&&(W.funct.has(t,{excludeParams:!0,onlyBlockscoped:!0})||(r["(labels)"][t]["(unused)"]=!1)),n&&(e.ignored.W117||!1===e.option.undef)&&(n.ignoreUndef=!0),l(t),m["(usages)"][t]["(onlyUsedSubFunction)"]=!1,n&&(n["(function)"]=y,m["(usages)"][t]["(tokens)"].push(n));var i=m["(labels)"][t];i&&i["(blockscoped)"]&&!i["(initialized)"]&&c("E056",n,t,i["(type)"])},reassign:function(t,n){n.ignoreW020=e.ignored.W020,n.ignoreW021=e.ignored.W021,this.modify(t,n),m["(usages)"][t]["(reassigned)"].push(n)},modify:function(e,t){l(e),m["(usages)"][e]["(onlyUsedSubFunction)"]=!1,m["(usages)"][e]["(modified)"].push(t)},add:function(e,t,n,r,i){m["(labels)"][e]={"(type)":t,"(token)":n,"(initialized)":!!i,"(blockscoped)":!0,"(unused)":r}},addBreakLabel:function(t,n){var r=n.token;W.funct.hasBreakLabel(t)?u("E011",r,t):"outer"===e.option.shadow&&(W.funct.has(t)?u("W004",r,t):v(t,r)),m["(breakLabels)"][t]=r}}};return W}},{events:5,lodash:12}],19:[function(e,t,n){"use strict";var r=e("./name-stack.js"),i={syntax:{},isStrict:function(){return this.directive["use strict"]||this.inClassBody||this.option.module||"implied"===this.option.strict},stmtMissingStrict:function(){return"global"===this.option.strict||!1!==this.option.strict&&!!this.option.globalstrict},allowsGlobalUsd:function(){return"global"===this.option.strict||this.option.globalstrict||this.option.module||this.impliedClosure()},impliedClosure:function(){return this.option.node||this.option.phantom||this.option.browserify},inMoz:function(){return this.option.moz},inES6:function(e){return e?6===this.esVersion:this.option.moz||this.esVersion>=6},inES5:function(e){return e?!(this.esVersion&&5!==this.esVersion||this.option.moz):!this.esVersion||this.esVersion>=5||this.option.moz},inferEsVersion:function(){var e=null;if(this.option.esversion){if(this.option.es3?e="es3":this.option.es5?e="es5":this.option.esnext&&(e="esnext"),e)return e;2015===this.option.esversion?this.esVersion=6:this.esVersion=this.option.esversion}else this.option.es3?this.esVersion=3:this.option.esnext&&(this.esVersion=6);return null},reset:function(){this.tokens={prev:null,next:null,curr:null},this.option={},this.esVersion=5,this.funct=null,this.ignored={},this.directive={},this.jsonMode=!1,this.jsonWarnings=[],this.lines=[],this.tab="",this.cache={},this.ignoredLines={},this.forinifcheckneeded=!1,this.nameStack=new r,this.inClassBody=!1}};n.state=i},{"./name-stack.js":15}],20:[function(e,t,n){"use strict";n.register=function(e){e.on("Identifier",function(t){e.getOption("proto")||"__proto__"===t.name&&e.warn("W103",{line:t.line,char:t.char,data:[t.name,"6"]})}),e.on("Identifier",function(t){e.getOption("iterator")||"__iterator__"===t.name&&e.warn("W103",{line:t.line,char:t.char,data:[t.name]})}),e.on("Identifier",function(t){e.getOption("camelcase")&&t.name.replace(/^_+|_+$/g,"").indexOf("_")>-1&&!t.name.match(/^[A-Z0-9_]*$/)&&e.warn("W106",{line:t.line,char:t.char,data:[t.name]})}),e.on("String",function(t){var n,r=e.getOption("quotmark");r&&("single"===r&&"'"!==t.quote&&(n="W109"),"double"===r&&'"'!==t.quote&&(n="W108"),!0===r&&(e.getCache("quotmark")||e.setCache("quotmark",t.quote),e.getCache("quotmark")!==t.quote&&(n="W110")),n&&e.warn(n,{line:t.line,char:t.char}))}),e.on("Number",function(t){"."===t.value.charAt(0)&&e.warn("W008",{line:t.line,char:t.char,data:[t.value]}),"."===t.value.substr(t.value.length-1)&&e.warn("W047",{line:t.line,char:t.char,data:[t.value]}),/^00+/.test(t.value)&&e.warn("W046",{line:t.line,char:t.char,data:[t.value]})}),e.on("String",function(t){var n=/^(?:javascript|jscript|ecmascript|vbscript|livescript)\s*:/i;e.getOption("scripturl")||n.test(t.value)&&e.warn("W107",{line:t.line,char:t.char})})}},{}],21:[function(e,t,n){"use strict";n.reservedVars={arguments:!1,NaN:!1},n.ecmaIdentifiers={3:{Array:!1,Boolean:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,eval:!1,EvalError:!1,Function:!1,hasOwnProperty:!1,isFinite:!1,isNaN:!1,Math:!1,Number:!1,Object:!1,parseInt:!1,parseFloat:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,String:!1,SyntaxError:!1,TypeError:!1,URIError:!1},5:{JSON:!1},6:{ArrayBuffer:!1,DataView:!1,Float32Array:!1,Float64Array:!1,Int8Array:!1,Int16Array:!1,Int32Array:!1,Map:!1,Promise:!1,Proxy:!1,Reflect:!1,Set:!1,Symbol:!1,Uint8Array:!1,Uint16Array:!1,Uint32Array:!1,Uint8ClampledArray:!1,WeakMap:!1,WeakSet:!1}},n.browser={Audio:!1,Blob:!1,addEventListener:!1,applicationCache:!1,atob:!1,blur:!1,btoa:!1,cancelAnimationFrame:!1,CanvasGradient:!1,CanvasPattern:!1,CanvasRenderingContext2D:!1,CSS:!1,clearInterval:!1,clearTimeout:!1,close:!1,closed:!1,Comment:!1,CompositionEvent:!1,CustomEvent:!1,DOMParser:!1,defaultStatus:!1,Document:!1,document:!1,DocumentFragment:!1,Element:!1,ElementTimeControl:!1,Event:!1,event:!1,fetch:!1,File:!1,FileList:!1,FileReader:!1,FormData:!1,focus:!1,frames:!1,getComputedStyle:!1,HTMLElement:!1,HTMLAnchorElement:!1,HTMLBaseElement:!1,HTMLBlockquoteElement:!1,HTMLBodyElement:!1,HTMLBRElement:!1,HTMLButtonElement:!1,HTMLCanvasElement:!1,HTMLCollection:!1,HTMLDirectoryElement:!1,HTMLDivElement:!1,HTMLDListElement:!1,HTMLFieldSetElement:!1,HTMLFontElement:!1,HTMLFormElement:!1,HTMLFrameElement:!1,HTMLFrameSetElement:!1,HTMLHeadElement:!1,HTMLHeadingElement:!1,HTMLHRElement:!1,HTMLHtmlElement:!1,HTMLIFrameElement:!1,HTMLImageElement:!1,HTMLInputElement:!1,HTMLIsIndexElement:!1,HTMLLabelElement:!1,HTMLLayerElement:!1,HTMLLegendElement:!1,HTMLLIElement:!1,HTMLLinkElement:!1,HTMLMapElement:!1,HTMLMenuElement:!1,HTMLMetaElement:!1,HTMLModElement:!1,HTMLObjectElement:!1,HTMLOListElement:!1,HTMLOptGroupElement:!1,HTMLOptionElement:!1,HTMLParagraphElement:!1,HTMLParamElement:!1,HTMLPreElement:!1,HTMLQuoteElement:!1,HTMLScriptElement:!1,HTMLSelectElement:!1,HTMLStyleElement:!1,HTMLTableCaptionElement:!1,HTMLTableCellElement:!1,HTMLTableColElement:!1,HTMLTableElement:!1,HTMLTableRowElement:!1,HTMLTableSectionElement:!1,HTMLTemplateElement:!1,HTMLTextAreaElement:!1,HTMLTitleElement:!1,HTMLUListElement:!1,HTMLVideoElement:!1,history:!1,Image:!1,Intl:!1,length:!1,localStorage:!1,location:!1,matchMedia:!1,MediaRecorder:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,MouseEvent:!1,moveBy:!1,moveTo:!1,MutationObserver:!1,name:!1,Node:!1,NodeFilter:!1,NodeList:!1,Notification:!1,navigator:!1,onbeforeunload:!0,onblur:!0,onerror:!0,onfocus:!0,onload:!0,onresize:!0,onunload:!0,open:!1,openDatabase:!1,opener:!1,Option:!1,parent:!1,performance:!1,print:!1,Range:!1,requestAnimationFrame:!1,removeEventListener:!1,resizeBy:!1,resizeTo:!1,screen:!1,scroll:!1,scrollBy:!1,scrollTo:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,SharedWorker:!1,status:!1,Storage:!1,SVGAElement:!1,SVGAltGlyphDefElement:!1,SVGAltGlyphElement:!1,SVGAltGlyphItemElement:!1,SVGAngle:!1,SVGAnimateColorElement:!1,SVGAnimateElement:!1,SVGAnimateMotionElement:!1,SVGAnimateTransformElement:!1,SVGAnimatedAngle:!1,SVGAnimatedBoolean:!1,SVGAnimatedEnumeration:!1,SVGAnimatedInteger:!1,SVGAnimatedLength:!1,SVGAnimatedLengthList:!1,SVGAnimatedNumber:!1,SVGAnimatedNumberList:!1,SVGAnimatedPathData:!1,SVGAnimatedPoints:!1,SVGAnimatedPreserveAspectRatio:!1,SVGAnimatedRect:!1,SVGAnimatedString:!1,SVGAnimatedTransformList:!1,SVGAnimationElement:!1,SVGCSSRule:!1,SVGCircleElement:!1,SVGClipPathElement:!1,SVGColor:!1,SVGColorProfileElement:!1,SVGColorProfileRule:!1,SVGComponentTransferFunctionElement:!1,SVGCursorElement:!1,SVGDefsElement:!1,SVGDescElement:!1,SVGDocument:!1,SVGElement:!1,SVGElementInstance:!1,SVGElementInstanceList:!1,SVGEllipseElement:!1,SVGExternalResourcesRequired:!1,SVGFEBlendElement:!1,SVGFEColorMatrixElement:!1,SVGFEComponentTransferElement:!1,SVGFECompositeElement:!1,SVGFEConvolveMatrixElement:!1,SVGFEDiffuseLightingElement:!1,SVGFEDisplacementMapElement:!1,SVGFEDistantLightElement:!1,SVGFEFloodElement:!1,SVGFEFuncAElement:!1,SVGFEFuncBElement:!1,SVGFEFuncGElement:!1,SVGFEFuncRElement:!1,SVGFEGaussianBlurElement:!1,SVGFEImageElement:!1,SVGFEMergeElement:!1,SVGFEMergeNodeElement:!1,SVGFEMorphologyElement:!1,SVGFEOffsetElement:!1,SVGFEPointLightElement:!1,SVGFESpecularLightingElement:!1,SVGFESpotLightElement:!1,SVGFETileElement:!1,SVGFETurbulenceElement:!1,SVGFilterElement:!1,SVGFilterPrimitiveStandardAttributes:!1,SVGFitToViewBox:!1,SVGFontElement:!1,SVGFontFaceElement:!1,SVGFontFaceFormatElement:!1,SVGFontFaceNameElement:!1,SVGFontFaceSrcElement:!1,SVGFontFaceUriElement:!1,SVGForeignObjectElement:!1,SVGGElement:!1,SVGGlyphElement:!1,SVGGlyphRefElement:!1,SVGGradientElement:!1,SVGHKernElement:!1,SVGICCColor:!1,SVGImageElement:!1,SVGLangSpace:!1,SVGLength:!1,SVGLengthList:!1,SVGLineElement:!1,SVGLinearGradientElement:!1,SVGLocatable:!1,SVGMPathElement:!1,SVGMarkerElement:!1,SVGMaskElement:!1,SVGMatrix:!1,SVGMetadataElement:!1,SVGMissingGlyphElement:!1,SVGNumber:!1,SVGNumberList:!1,SVGPaint:!1,SVGPathElement:!1,SVGPathSeg:!1,SVGPathSegArcAbs:!1,SVGPathSegArcRel:!1,SVGPathSegClosePath:!1,SVGPathSegCurvetoCubicAbs:!1,SVGPathSegCurvetoCubicRel:!1,SVGPathSegCurvetoCubicSmoothAbs:!1,SVGPathSegCurvetoCubicSmoothRel:!1,SVGPathSegCurvetoQuadraticAbs:!1,SVGPathSegCurvetoQuadraticRel:!1,SVGPathSegCurvetoQuadraticSmoothAbs:!1,SVGPathSegCurvetoQuadraticSmoothRel:!1,SVGPathSegLinetoAbs:!1,SVGPathSegLinetoHorizontalAbs:!1,SVGPathSegLinetoHorizontalRel:!1,SVGPathSegLinetoRel:!1,SVGPathSegLinetoVerticalAbs:!1,SVGPathSegLinetoVerticalRel:!1,SVGPathSegList:!1,SVGPathSegMovetoAbs:!1,SVGPathSegMovetoRel:!1,SVGPatternElement:!1,SVGPoint:!1,SVGPointList:!1,SVGPolygonElement:!1,SVGPolylineElement:!1,SVGPreserveAspectRatio:!1,SVGRadialGradientElement:!1,SVGRect:!1,SVGRectElement:!1,SVGRenderingIntent:!1,SVGSVGElement:!1,SVGScriptElement:!1,SVGSetElement:!1,SVGStopElement:!1,SVGStringList:!1,SVGStylable:!1,SVGStyleElement:!1,SVGSwitchElement:!1,SVGSymbolElement:!1,SVGTRefElement:!1,SVGTSpanElement:!1,SVGTests:!1,SVGTextContentElement:!1,SVGTextElement:!1,SVGTextPathElement:!1,SVGTextPositioningElement:!1,SVGTitleElement:!1,SVGTransform:!1,SVGTransformList:!1,SVGTransformable:!1,SVGURIReference:!1,SVGUnitTypes:!1,SVGUseElement:!1,SVGVKernElement:!1,SVGViewElement:!1,SVGViewSpec:!1,SVGZoomAndPan:!1,Text:!1,TextDecoder:!1,TextEncoder:!1,TimeEvent:!1,top:!1,URL:!1,WebGLActiveInfo:!1,WebGLBuffer:!1,WebGLContextEvent:!1,WebGLFramebuffer:!1,WebGLProgram:!1,WebGLRenderbuffer:!1,WebGLRenderingContext:!1,WebGLShader:!1,WebGLShaderPrecisionFormat:!1,WebGLTexture:!1,WebGLUniformLocation:!1,WebSocket:!1,window:!1,Window:!1,Worker:!1,XDomainRequest:!1,XMLHttpRequest:!1,XMLSerializer:!1,XPathEvaluator:!1,XPathException:!1,XPathExpression:!1,XPathNamespace:!1,XPathNSResolver:!1,XPathResult:!1},n.devel={alert:!1,confirm:!1,console:!1,Debug:!1,opera:!1,prompt:!1},n.worker={importScripts:!0,onmessage:!0,postMessage:!0,self:!0,FileReaderSync:!0},n.nonstandard={escape:!1,unescape:!1},n.couch={require:!1,respond:!1,getRow:!1,emit:!1,send:!1,start:!1,sum:!1,log:!1,exports:!1,module:!1,provides:!1},n.node={__filename:!1,__dirname:!1,GLOBAL:!1,global:!1,module:!1,require:!1,Buffer:!0,console:!0,exports:!0,process:!0,setTimeout:!0,clearTimeout:!0,setInterval:!0,clearInterval:!0,setImmediate:!0,clearImmediate:!0},n.browserify={__filename:!1,__dirname:!1,global:!1,module:!1,require:!1,Buffer:!0,exports:!0,process:!0},n.phantom={phantom:!0,require:!0,WebPage:!0,console:!0,exports:!0},n.qunit={asyncTest:!1,deepEqual:!1,equal:!1,expect:!1,module:!1,notDeepEqual:!1,notEqual:!1,notOk:!1,notPropEqual:!1,notStrictEqual:!1,ok:!1,propEqual:!1,QUnit:!1,raises:!1,start:!1,stop:!1,strictEqual:!1,test:!1,throws:!1},n.rhino={defineClass:!1,deserialize:!1,gc:!1,help:!1,importClass:!1,importPackage:!1,java:!1,load:!1,loadClass:!1,Packages:!1,print:!1,quit:!1,readFile:!1,readUrl:!1,runCommand:!1,seal:!1,serialize:!1,spawn:!1,sync:!1,toint32:!1,version:!1},n.shelljs={target:!1,echo:!1,exit:!1,cd:!1,pwd:!1,ls:!1,find:!1,cp:!1,rm:!1,mv:!1,mkdir:!1,test:!1,cat:!1,sed:!1,grep:!1,which:!1,dirs:!1,pushd:!1,popd:!1,env:!1,exec:!1,chmod:!1,config:!1,error:!1,tempdir:!1},n.typed={ArrayBuffer:!1,ArrayBufferView:!1,DataView:!1,Float32Array:!1,Float64Array:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1},n.wsh={ActiveXObject:!0,Enumerator:!0,GetObject:!0,ScriptEngine:!0,ScriptEngineBuildVersion:!0,ScriptEngineMajorVersion:!0,ScriptEngineMinorVersion:!0,VBArray:!0,WSH:!0,WScript:!0,XDomainRequest:!0},n.dojo={dojo:!1,dijit:!1,dojox:!1,define:!1,require:!1},n.jquery={$:!1,jQuery:!1},n.mootools={$:!1,$$:!1,Asset:!1,Browser:!1,Chain:!1,Class:!1,Color:!1,Cookie:!1,Core:!1,Document:!1,DomReady:!1,DOMEvent:!1,DOMReady:!1,Drag:!1,Element:!1,Elements:!1,Event:!1,Events:!1,Fx:!1,Group:!1,Hash:!1,HtmlTable:!1,IFrame:!1,IframeShim:!1,InputValidator:!1,instanceOf:!1,Keyboard:!1,Locale:!1,Mask:!1,MooTools:!1,Native:!1,Options:!1,OverText:!1,Request:!1,Scroller:!1,Slick:!1,Slider:!1,Sortables:!1,Spinner:!1,Swiff:!1,Tips:!1,Type:!1,typeOf:!1,URI:!1,Window:!1},n.prototypejs={$:!1,$$:!1,$A:!1,$F:!1,$H:!1,$R:!1,$break:!1,$continue:!1,$w:!1,Abstract:!1,Ajax:!1,Class:!1,Enumerable:!1,Element:!1,Event:!1,Field:!1,Form:!1,Hash:!1,Insertion:!1,ObjectRange:!1,PeriodicalExecuter:!1,Position:!1,Prototype:!1,Selector:!1,Template:!1,Toggle:!1,Try:!1,Autocompleter:!1,Builder:!1,Control:!1,Draggable:!1,Draggables:!1,Droppables:!1,Effect:!1,Sortable:!1,SortableObserver:!1,Sound:!1,Scriptaculous:!1},n.yui={YUI:!1,Y:!1,YUI_config:!1},n.mocha={mocha:!1,describe:!1,xdescribe:!1,it:!1,xit:!1,context:!1,xcontext:!1,before:!1,after:!1,beforeEach:!1,afterEach:!1,suite:!1,test:!1,setup:!1,teardown:!1,suiteSetup:!1,suiteTeardown:!1},n.jasmine={jasmine:!1,describe:!1,xdescribe:!1,it:!1,xit:!1,beforeEach:!1,afterEach:!1,setFixtures:!1,loadFixtures:!1,spyOn:!1,expect:!1,runs:!1,waitsFor:!1,waits:!1,beforeAll:!1,afterAll:!1,fail:!1,fdescribe:!1,fit:!1,pending:!1}},{}],jshint:[function(e,t,n){var r=e("lodash"),i=e("events"),o=e("./vars.js"),s=e("./messages.js"),a=e("./lex.js").Lexer,u=e("./reg.js"),c=e("./state.js").state,l=e("./style.js"),f=e("./options.js"),p=e("./scope-manager.js"),h=(e("console-browserify"),function(){"use strict";function e(e,t){return e=e.trim(),!!/^[+-]W\d{3}$/g.test(e)||(!(-1===f.validNames.indexOf(e)&&"jslint"!==t.type&&!r.has(f.removed,e))||(_("E001",t,e),!1))}function t(e){return"[object String]"===Object.prototype.toString.call(e)}function n(e,t){return!!e&&!(!e.identifier||e.value!==t)}function d(e){if(!e.reserved)return!1;var t=e.meta;if(t&&t.isFutureReservedWord){if(t.moduleOnly&&!c.option.module)return!1;if(c.inES5()){if(!t.es5)return!1;if(t.strictOnly&&!c.option.strict&&!c.isStrict())return!1;if(e.isProperty)return!1}}return!0}function v(e,t){return e.replace(/\{([^{}]*)\}/g,function(e,n){var r=t[n];return"string"==typeof r||"number"==typeof r?r:e})}function g(e,t){Object.keys(t).forEach(function(n){r.has(h.blacklist,n)||(e[n]=t[n])})}function m(){if(c.option.enforceall){for(var e in f.bool.enforcing)void 0!==c.option[e]||f.noenforceall[e]||(c.option[e]=!0);for(var t in f.bool.relaxing)void 0===c.option[t]&&(c.option[t]=!1)}}function k(){var e=null;m(),(e=c.inferEsVersion())&&y("E059",c.tokens.next,"esversion",e),c.inES5()&&g(Ye,o.ecmaIdentifiers[5]),c.inES6()&&g(Ye,o.ecmaIdentifiers[6]),"global"===c.option.strict&&"globalstrict"in c.option&&y("E059",c.tokens.next,"strict","globalstrict"),c.option.module&&(c.inES6()||b("W134",c.tokens.next,"module",6)),c.option.couch&&g(Ye,o.couch),c.option.qunit&&g(Ye,o.qunit),c.option.rhino&&g(Ye,o.rhino),c.option.shelljs&&(g(Ye,o.shelljs),g(Ye,o.node)),c.option.typed&&g(Ye,o.typed),c.option.phantom&&g(Ye,o.phantom),c.option.prototypejs&&g(Ye,o.prototypejs),c.option.node&&(g(Ye,o.node),g(Ye,o.typed)),c.option.devel&&g(Ye,o.devel),c.option.dojo&&g(Ye,o.dojo),c.option.browser&&(g(Ye,o.browser),g(Ye,o.typed)),c.option.browserify&&(g(Ye,o.browser),g(Ye,o.typed),g(Ye,o.browserify)),c.option.nonstandard&&g(Ye,o.nonstandard),c.option.jasmine&&g(Ye,o.jasmine),c.option.jquery&&g(Ye,o.jquery),c.option.mootools&&g(Ye,o.mootools),c.option.worker&&g(Ye,o.worker),c.option.wsh&&g(Ye,o.wsh),c.option.yui&&g(Ye,o.yui),c.option.mocha&&g(Ye,o.mocha)}function y(e,t,n,r){var i=Math.floor(t.line/c.lines.length*100),o=s.errors[e].desc,a={name:"JSHintError",line:t.line,character:t.from,message:o+" ("+i+"% scanned).",raw:o,code:e,a:n,b:r};throw a.reason=v(o,a)+" ("+i+"% scanned).",a}function x(){var e=c.ignoredLines;r.isEmpty(e)||(h.errors=r.reject(h.errors,function(t){return e[t.line]}))}function b(e,t,n,r,i,o){var a,u,l,f;if(/^W\d{3}$/.test(e)){if(c.ignored[e])return;f=s.warnings[e]}else/E\d{3}/.test(e)?f=s.errors[e]:/I\d{3}/.test(e)&&(f=s.info[e]);return"(end)"===(t=t||c.tokens.next||{}).id&&(t=c.tokens.curr),u=t.line,a=t.from,l={id:"(error)",raw:f.desc,code:f.code,evidence:c.lines[u-1]||"",line:u,character:a,scope:h.scope,a:n,b:r,c:i,d:o},l.reason=v(f.desc,l),h.errors.push(l),x(),h.errors.length>=c.option.maxerr&&y("E043",t),l}function E(e,t,n,r,i,o,s){return b(e,{line:t,from:n},r,i,o,s)}function _(e,t,n,r,i,o){b(e,t,n,r,i,o)}function w(e,t,n,r,i,o,s){return _(e,{line:t,from:n},r,i,o,s)}function S(e,t){h.internals.push({id:"(internal)",elem:e,token:t,code:t.value.replace(/([^\\])(\\*)\2\\n/g,"$1\n")})}function W(t,n){var i=t.body.split(",").map(function(e){return e.trim()}),o={};if("falls through"!==t.type){if("globals"===t.type){i.forEach(function(e,n){var r=((e=e.split(":"))[0]||"").trim(),s=(e[1]||"").trim();if("-"!==r&&r.length)"-"===r.charAt(0)?(r=r.slice(1),s=!1,h.blacklist[r]=r,delete Ye[r]):o[r]="true"===s;else{if(n>0&&n===i.length-1)return;_("E002",t)}}),g(Ye,o);for(var s in o)r.has(o,s)&&(qe[s]=t)}"exported"===t.type&&i.forEach(function(e,n){if(e.length)c.funct["(scope)"].addExported(e);else{if(n>0&&n===i.length-1)return;_("E002",t)}}),"members"===t.type&&(Ke=Ke||{},i.forEach(function(e){var t=e.charAt(0);t!==e.charAt(e.length-1)||'"'!==t&&"'"!==t||(e=e.substr(1,e.length-2).replace('\\"','"')),Ke[e]=!1}));var a=["maxstatements","maxparams","maxdepth","maxcomplexity","maxerr","maxlen","indent"];"jshint"!==t.type&&"jslint"!==t.type||(i.forEach(function(n){var r=((n=n.split(":"))[0]||"").trim(),i=(n[1]||"").trim();if(e(r,t))if(a.indexOf(r)>=0)if("false"!==i){if("number"!=typeof(i=+i)||!isFinite(i)||i<=0||Math.floor(i)!==i)return void _("E032",t,n[1].trim());c.option[r]=i}else c.option[r]="indent"===r&&4;else{if("validthis"===r)return c.funct["(global)"]?void _("E009"):"true"!==i&&"false"!==i?void _("E002",t):void(c.option.validthis="true"===i);if("quotmark"!==r)if("shadow"!==r)if("unused"!==r)if("latedef"!==r)if("ignore"!==r)if("strict"!==r)if("module"===r&&(xe(c.funct)||_("E055",t,"module")),"esversion"!==r){var o=/^([+-])(W\d{3})$/g.exec(r);if(o)c.ignored[o[2]]="-"===o[1];else{var s;"true"!==i&&"false"!==i?_("E002",t):"jslint"===t.type?(s=f.renamed[r]||r,c.option[s]="true"===i,void 0!==f.inverted[s]&&(c.option[s]=!c.option[s])):c.option[r]="true"===i}}else{switch(i){case"3":case"5":case"6":case"2015":c.option.moz=!1,c.option.esversion=+i;break;default:_("E002",t)}xe(c.funct)||_("E055",t,"esversion")}else switch(i){case"true":c.option.strict=!0;break;case"false":c.option.strict=!1;break;case"global":case"implied":c.option.strict=i;break;default:_("E002",t)}else switch(i){case"line":c.ignoredLines[t.line]=!0,x();break;default:_("E002",t)}else switch(i){case"true":c.option.latedef=!0;break;case"false":c.option.latedef=!1;break;case"nofunc":c.option.latedef="nofunc";break;default:_("E002",t)}else switch(i){case"true":c.option.unused=!0;break;case"false":c.option.unused=!1;break;case"vars":case"strict":c.option.unused=i;break;default:_("E002",t)}else switch(i){case"true":c.option.shadow=!0;break;case"outer":c.option.shadow="outer";break;case"false":case"inner":c.option.shadow="inner";break;default:_("E002",t)}else switch(i){case"true":case"false":c.option.quotmark="true"===i;break;case"double":case"single":c.option.quotmark=i;break;default:_("E002",t)}}}),k())}else n.caseFallsThrough=!0}function A(e){var t,n=e||0,r=Je.length;if(n="a"&&t<="z"||t>="A"&&t<="Z")&&(e.identifier=e.reserved=!0),e}function D(e,t){var n=P(e,150);return N(n),n.nud="function"==typeof t?t:function(){return this.arity="unary",this.right=G(150),"++"!==this.id&&"--"!==this.id||(c.option.plusplus?b("W016",this,this.id):!this.right||this.right.identifier&&!d(this.right)||"."===this.right.id||"["===this.right.id||b("W017",this),this.right&&this.right.isMetaProperty?_("E031",this):this.right&&this.right.identifier&&c.funct["(scope)"].block.modify(this.right.value,this)),this},n}function q(e,t){var n=R(e);return n.type=e,n.nud=t,n}function z(e,t){var n=q(e,t);return n.identifier=!0,n.reserved=!0,n}function H(e,t){var n=q(e,t&&t.nud||function(){return this});return t=t||{},t.isFutureReservedWord=!0,n.value=e,n.identifier=!0,n.reserved=!0,n.meta=t,n}function $(e,t){return z(e,function(){return"function"==typeof t&&t(this),this})}function J(e,t,n,r){var i=P(e,n);return N(i),i.infix=!0,i.led=function(i){return r||M(c.tokens.prev,c.tokens.curr),"in"!==e&&"instanceof"!==e||"!"!==i.id||b("W018",i,"!"),"function"==typeof t?t(i,this):(this.left=i,this.right=G(n),this)},i}function Z(e,t){var r=P(e,100);return r.infix=!0,r.led=function(e){M(c.tokens.prev,c.tokens.curr),this.left=e;var r=this.right=G(100);return n(e,"NaN")||n(r,"NaN")?b("W019",this):t&&t.apply(this,[e,r]),e&&r||y("E041",c.tokens.curr),"!"===e.id&&b("W018",e,"!"),"!"===r.id&&b("W018",r,"!"),this},r}function X(e,t,n){var i;return!n.option.notypeof&&(!(!e||!t)&&(i=n.inES6()?ot.es6:ot.es3,"(identifier)"===t.type&&"typeof"===t.value&&"(string)"===e.type&&!r.contains(i,e.value)))}function K(e,t){var n=!1;return"this"===e.type&&null===t.funct["(context)"]?n=!0:"(identifier)"===e.type&&(t.option.node&&"global"===e.value?n=!0:!t.option.browser||"window"!==e.value&&"document"!==e.value||(n=!0)),n}function Y(e){function t(e){if("object"==typeof e)return"prototype"===e.right?e:t(e.left)}var n=["Array","ArrayBuffer","Boolean","Collator","DataView","Date","DateTimeFormat","Error","EvalError","Float32Array","Float64Array","Function","Infinity","Intl","Int16Array","Int32Array","Int8Array","Iterator","Number","NumberFormat","Object","RangeError","ReferenceError","RegExp","StopIteration","String","SyntaxError","TypeError","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray","URIError"],r=t(e);if(r)return function(e){for(;!e.identifier&&"object"==typeof e.left;)e=e.left;if(e.identifier&&n.indexOf(e.value)>=0&&c.funct["(scope)"].isPredefined(e.value))return e.value}(r)}function Q(e,t,n){var r=n&&n.allowDestructuring;if(t=t||e,c.option.freeze){var i=Y(e);i&&b("W121",e,i)}return Re(e,"...")&&(e=e.right),e.identifier&&!e.isMetaProperty&&c.funct["(scope)"].block.reassign(e.value,e),"."===e.id?(e.left&&("arguments"!==e.left.value||c.isStrict())||b("E031",t),c.nameStack.set(c.tokens.prev),!0):"{"===e.id||"["===e.id?(r&&e.destructAssign||("{"!==e.id&&e.left?"arguments"!==e.left.value||c.isStrict()||b("E031",t):b("E031",t)),"["===e.id&&c.nameStack.set(e.right),!0):!e.identifier||d(e)||e.isMetaProperty?(e===c.syntax.function?b("W023",c.tokens.curr):_("E031",t),!1):("exception"===c.funct["(scope)"].labeltype(e.value)&&b("W022",e),c.nameStack.set(e),!0)}function ee(e,t,n){var r=J(e,"function"==typeof t?t:function(e,t){return t.left=e,Q(e,t,{allowDestructuring:!0}),t.right=G(10),t},n);return r.exps=!0,r.assign=!0,r}function te(e,t,n){var r=P(e,n);return N(r),r.infix=!0,r.led="function"==typeof t?t:function(e){return c.option.bitwise&&b("W016",this,this.id),this.left=e,this.right=G(n),this},r}function ne(e){return ee(e,function(e,t){return c.option.bitwise&&b("W016",t,t.id),Q(e,t),t.right=G(10),t},20)}function re(e){var t=P(e,150);return t.led=function(e){return c.option.plusplus?b("W016",this,this.id):e.identifier&&!d(e)||"."===e.id||"["===e.id||b("W017",this),e.isMetaProperty?_("E031",this):e&&e.identifier&&c.funct["(scope)"].block.modify(e.value,e),this.left=e,this},t}function ie(e,t,n){if(c.tokens.next.identifier){n||j();var r=c.tokens.curr,i=c.tokens.curr.value;return d(r)?t&&c.inES5()?i:e&&"undefined"===i?i:(b("W024",c.tokens.curr,c.tokens.curr.id),i):i}}function oe(e,t){var n=ie(e,t,!1);if(n)return n;if("..."===c.tokens.next.value){if(c.inES6(!0)||b("W119",c.tokens.next,"spread/rest operator","6"),j(),Re(c.tokens.next,"..."))for(b("E024",c.tokens.next,"...");Re(c.tokens.next,"...");)j();return c.tokens.next.identifier?oe(e,t):void b("E024",c.tokens.curr,c.tokens.next.id)}_("E030",c.tokens.next,c.tokens.next.value),";"!==c.tokens.next.id&&j()}function se(e){var t,n=0;if(";"===c.tokens.next.id&&!e.inBracelessBlock)for(;;){do{t=A(n),n+=1}while("(end)"!==t.id&&"(comment)"===t.id);if(t.reach)return;if("(endline)"!==t.id){if("function"===t.id){!0===c.option.latedef&&b("W026",t);break}b("W027",t,t.value,e.value);break}}}function ae(e){if(";"!==c.tokens.next.id){if(c.tokens.next.isUnclosed)return j();var t=C(c.tokens.next)===c.tokens.curr.line&&"(end)"!==c.tokens.next.id,n=Re(c.tokens.next,"}");!t||n||"do"===e.id&&c.inES6(!0)?c.option.asi||n&&t&&c.option.lastsemic||E("W033",c.tokens.curr.line,c.tokens.curr.character):w("E058",c.tokens.curr.line,c.tokens.curr.character)}else j(";")}function ue(){var e,t=$e,n=c.tokens.next,r=!1;{if(";"!==n.id){var i=d(n);return i&&n.meta&&n.meta.isFutureReservedWord&&":"===A().id&&(b("W024",n,n.id),i=!1),n.identifier&&!i&&":"===A().id&&(j(),j(":"),r=!0,c.funct["(scope)"].stack(),c.funct["(scope)"].block.addBreakLabel(n.value,{token:c.tokens.curr}),c.tokens.next.labelled||"{"===c.tokens.next.value||b("W028",c.tokens.next,n.value,c.tokens.next.value),c.tokens.next.label=n.value,n=c.tokens.next),"{"===n.id?(fe(!0,!0,!1,!1,"case"===c.funct["(verb)"]&&":"===c.tokens.curr.value),void(r&&c.funct["(scope)"].unstack())):(!(e=G(0,!0))||e.identifier&&"function"===e.value||"(punctuator)"===e.type&&e.left&&e.left.identifier&&"function"===e.left.value||!c.isStrict()&&c.stmtMissingStrict()&&b("E007"),n.block||(c.option.expr||e&&e.exps?c.option.nonew&&e&&e.left&&"("===e.id&&"new"===e.left.id&&b("W031",n):b("W030",c.tokens.curr),ae(n)),$e=t,r&&c.funct["(scope)"].unstack(),e)}j(";")}}function ce(){for(var e,t=[];!c.tokens.next.reach&&"(end)"!==c.tokens.next.id;)";"===c.tokens.next.id?((!(e=A())||"("!==e.id&&"["!==e.id)&&b("W032"),j(";")):t.push(ue());return t}function le(){for(var e=c.tokens.next;"(string)"===c.tokens.next.id;){var t=L();if(!O(e,t))break;e=t,j();var n=c.tokens.curr.value;(c.directive[n]||"use strict"===n&&"implied"===c.option.strict)&&b("W034",c.tokens.curr,n),c.directive[n]=!0,ae(e)}c.isStrict()&&(c.option.undef=!0)}function fe(e,t,n,i,o){var s,a,u,l,f=He,p=$e;He=e,u=c.tokens.next;var h=c.funct["(metrics)"];if(h.nestedBlockDepth+=1,h.verifyMaxNestedBlockDepthPerFunction(),"{"===c.tokens.next.id){if(j("{"),c.funct["(scope)"].stack(),c.funct["(noblockscopedvar)"]=!1,c.tokens.curr.line,"}"!==c.tokens.next.id){for($e+=c.option.indent;!e&&c.tokens.next.from>$e;)$e+=c.option.indent;if(n){a={};for(l in c.directive)r.has(c.directive,l)&&(a[l]=c.directive[l]);le(),c.option.strict&&c.funct["(context)"]["(global)"]&&(a["use strict"]||c.isStrict()||b("E007"))}s=ce(),h.statementCount+=s.length,$e-=c.option.indent}j("}",u),n&&(c.funct["(scope)"].validateParams(),a&&(c.directive=a)),c.funct["(scope)"].unstack(),$e=p}else if(e)c.funct["(noblockscopedvar)"]="for"!==c.tokens.next.id,c.funct["(scope)"].stack(),t&&!c.option.curly||b("W116",c.tokens.next,"{",c.tokens.next.value),c.tokens.next.inBracelessBlock=!0,$e+=c.option.indent,s=[ue()],$e-=c.option.indent,c.funct["(scope)"].unstack(),delete c.funct["(noblockscopedvar)"];else if(n){if(c.funct["(scope)"].stack(),a={},!t||i||c.inMoz()||_("W118",c.tokens.curr,"function closure expressions"),!t)for(l in c.directive)r.has(c.directive,l)&&(a[l]=c.directive[l]);G(10),c.option.strict&&c.funct["(context)"]["(global)"]&&(a["use strict"]||c.isStrict()||b("E007")),c.funct["(scope)"].unstack()}else _("E021",c.tokens.next,"{",c.tokens.next.value);switch(c.funct["(verb)"]){case"break":case"continue":case"return":case"throw":if(o)break;default:c.funct["(verb)"]=null}return He=f,!e||!c.option.noempty||s&&0!==s.length||b("W035",c.tokens.prev),h.nestedBlockDepth-=1,s}function pe(e){Ke&&"boolean"!=typeof Ke[e]&&b("W036",c.tokens.curr,e),"number"==typeof Xe[e]?Xe[e]+=1:Xe[e]=1}function he(){var e={};e.exps=!0,c.funct["(comparray)"].stack();var t=!1;return"for"!==c.tokens.next.value&&(t=!0,c.inMoz()||b("W116",c.tokens.next,"for",c.tokens.next.value),c.funct["(comparray)"].setState("use"),e.right=G(10)),j("for"),"each"===c.tokens.next.value&&(j("each"),c.inMoz()||b("W118",c.tokens.curr,"for each")),j("("),c.funct["(comparray)"].setState("define"),e.left=G(130),r.contains(["in","of"],c.tokens.next.value)?j():_("E045",c.tokens.curr),c.funct["(comparray)"].setState("generate"),G(10),j(")"),"if"===c.tokens.next.value&&(j("if"),j("("),c.funct["(comparray)"].setState("filter"),e.filter=G(10),j(")")),t||(c.funct["(comparray)"].setState("use"),e.right=G(10)),j("]"),c.funct["(comparray)"].unstack(),e}function de(){return c.funct["(statement)"]&&"class"===c.funct["(statement)"].type||c.funct["(context)"]&&"class"===c.funct["(context)"]["(verb)"]}function ve(e){return e.identifier||"(string)"===e.id||"(number)"===e.id}function ge(e){var t,n=!0;return t="object"==typeof e?e:ie(!1,!0,n=e),t?"object"==typeof t&&("(string)"===t.id||"(identifier)"===t.id?t=t.value:"(number)"===t.id&&(t=t.value.toString())):"(string)"===c.tokens.next.id?(t=c.tokens.next.value,n||j()):"(number)"===c.tokens.next.id&&(t=c.tokens.next.value.toString(),n||j()),"hasOwnProperty"===t&&b("W001"),t}function me(e){var t,n,i,o=[],s=[],a=!1,u=!1,l=0,f=e&&e.loneArg;if(f&&!0===f.identifier)return c.funct["(scope)"].addParam(f.value,f),{arity:1,params:[f.value]};if(t=c.tokens.next,e&&e.parsedOpening||j("("),")"!==c.tokens.next.id)for(;;){l++;var p=[];if(r.contains(["{","["],c.tokens.next.id)){s=Le();for(i in s)(i=s[i]).id&&(o.push(i.id),p.push([i.id,i.token]))}else if(Re(c.tokens.next,"...")&&(u=!0),n=oe(!0))o.push(n),p.push([n,c.tokens.curr]);else for(;!Pe(c.tokens.next,[",",")"]);)j();if(a&&"="!==c.tokens.next.id&&_("W138",c.tokens.current),"="===c.tokens.next.id&&(c.inES6()||b("W119",c.tokens.next,"default parameters","6"),j("="),a=!0,G(10)),p.forEach(function(e){c.funct["(scope)"].addParam.apply(c.funct["(scope)"],e)}),","!==c.tokens.next.id)return j(")",t),{arity:l,params:o};u&&b("W131",c.tokens.next),F()}else j(")")}function ke(e,t,n){var i={"(name)":e,"(breakage)":0,"(loopage)":0,"(tokens)":{},"(properties)":{},"(catch)":!1,"(global)":!1,"(line)":null,"(character)":null,"(metrics)":null,"(statement)":null,"(context)":null,"(scope)":null,"(comparray)":null,"(generator)":null,"(arrow)":null,"(params)":null};return t&&r.extend(i,{"(line)":t.line,"(character)":t.character,"(metrics)":_e(t)}),r.extend(i,n),i["(context)"]&&(i["(scope)"]=i["(context)"]["(scope)"],i["(comparray)"]=i["(context)"]["(comparray)"]),i}function ye(e){return"(scope)"in e}function xe(e){return e["(global)"]&&!e["(verb)"]}function be(e){var t=this.context,n=this.noSubst,r=this.depth,i="number"==typeof e?null:e;if(!n)for(;!function(){if(c.tokens.curr.template&&c.tokens.curr.tail&&c.tokens.curr.context===t)return!0;var e=c.tokens.next.template&&c.tokens.next.tail&&c.tokens.next.context===t;return e&&j(),e||c.tokens.next.isUnclosed}();)!c.tokens.next.template||c.tokens.next.depth>r?G(0):j();return{id:"(template)",type:"(template)",tag:i}}function Ee(e){var t,n,r,i,o,s,a,u,l=c.option,f=c.ignored;e&&(r=e.name,i=e.statement,o=e.classExprBinding,s="generator"===e.type,a="arrow"===e.type,u=e.ignoreLoopFunc),c.option=Object.create(c.option),c.ignored=Object.create(c.ignored),c.funct=ke(r||c.nameStack.infer(),c.tokens.next,{"(statement)":i,"(context)":c.funct,"(arrow)":a,"(generator)":s}),t=c.funct,(n=c.tokens.curr).funct=c.funct,ze.push(c.funct),c.funct["(scope)"].stack("functionouter");var p=r||o;p&&c.funct["(scope)"].block.add(p,o?"class":"function",c.tokens.curr,!1),c.funct["(scope)"].stack("functionparams");var h=me(e);return h?(c.funct["(params)"]=h.params,c.funct["(metrics)"].arity=h.arity,c.funct["(metrics)"].verifyMaxParametersPerFunction()):c.funct["(metrics)"].arity=0,a&&(c.inES6(!0)||b("W119",c.tokens.curr,"arrow function syntax (=>)","6"),e.loneArg||j("=>")),fe(!1,!0,!0,a),!c.option.noyield&&s&&"yielded"!==c.funct["(generator)"]&&b("W124",c.tokens.curr),c.funct["(metrics)"].verifyMaxStatementsPerFunction(),c.funct["(metrics)"].verifyMaxComplexityPerFunction(),c.funct["(unusedOption)"]=c.option.unused,c.option=l,c.ignored=f,c.funct["(last)"]=c.tokens.curr.line,c.funct["(lastcharacter)"]=c.tokens.curr.character,c.funct["(scope)"].unstack(),c.funct["(scope)"].unstack(),c.funct=c.funct["(context)"],u||c.option.loopfunc||!c.funct["(loopage)"]||t["(isCapturing)"]&&b("W083",n),t}function _e(e){return{statementCount:0,nestedBlockDepth:-1,ComplexityCount:1,arity:0,verifyMaxStatementsPerFunction:function(){c.option.maxstatements&&this.statementCount>c.option.maxstatements&&b("W071",e,this.statementCount)},verifyMaxParametersPerFunction:function(){r.isNumber(c.option.maxparams)&&this.arity>c.option.maxparams&&b("W072",e,this.arity)},verifyMaxNestedBlockDepthPerFunction:function(){c.option.maxdepth&&this.nestedBlockDepth>0&&this.nestedBlockDepth===c.option.maxdepth+1&&b("W073",null,this.nestedBlockDepth)},verifyMaxComplexityPerFunction:function(){var t=c.option.maxcomplexity,n=this.ComplexityCount;t&&n>t&&b("W074",e,n)}}}function we(){c.funct["(metrics)"].ComplexityCount+=1}function Se(e){var t,n;switch(e&&(t=e.id,n=e.paren,","===t&&(e=e.exprs[e.exprs.length-1])&&(t=e.id,n=n||e.paren)),t){case"=":case"+=":case"-=":case"*=":case"%=":case"&=":case"|=":case"^=":case"/=":n||c.option.boss||b("W084")}}function We(e){if(c.inES5())for(var t in e)e[t]&&e[t].setterToken&&!e[t].getterToken&&b("W078",e[t].setterToken)}function Ae(e,t){if(Re(c.tokens.next,".")){var n=c.tokens.curr.id;j(".");var r=oe();return c.tokens.curr.isMetaProperty=!0,e!==r?_("E057",c.tokens.prev,n,r):t(),c.tokens.curr}}function Le(e){var t=e&&e.assignment;return c.inES6()||b("W104",c.tokens.curr,t?"destructuring assignment":"destructuring binding","6"),je(e)}function je(e){var t,n,r,i=[],o=e&&e.openingParsed,s=e&&e.assignment,a=s?{assignment:s}:null,u=o?c.tokens.curr:c.tokens.next,l=function(){var e;if(Pe(c.tokens.next,["[","{"])){t=je(a);for(var n in t)n=t[n],i.push({id:n.id,token:n.token})}else if(Re(c.tokens.next,","))i.push({id:null,token:c.tokens.curr});else{if(!Re(c.tokens.next,"(")){var r=Re(c.tokens.next,"...");if(s){var o=G(20);o&&(Q(o),o.identifier&&(e=o.value))}else e=oe();return e&&i.push({id:e,token:c.tokens.curr}),r}j("("),l(),j(")")}return!1};if(Re(u,"[")){o||j("["),Re(c.tokens.next,"]")&&b("W137",c.tokens.curr);for(var f=!1;!Re(c.tokens.next,"]");)l()&&!f&&Re(c.tokens.next,",")&&(b("W130",c.tokens.next),f=!0),Re(c.tokens.next,"=")&&(j(Re(c.tokens.prev,"...")?"]":"="),n=c.tokens.prev,(r=G(10))&&"undefined"===r.type&&b("W080",n,n.value)),Re(c.tokens.next,"]")||j(",");j("]")}else if(Re(u,"{")){for(o||j("{"),Re(c.tokens.next,"}")&&b("W137",c.tokens.curr);!Re(c.tokens.next,"}")&&(function(){var e;Re(c.tokens.next,"[")?(j("["),G(10),j("]"),j(":"),l()):"(string)"===c.tokens.next.id||"(number)"===c.tokens.next.id?(j(),j(":"),l()):(e=oe(),Re(c.tokens.next,":")?(j(":"),l()):e&&(s&&Q(c.tokens.curr),i.push({id:e,token:c.tokens.curr})))}(),Re(c.tokens.next,"=")&&(j("="),n=c.tokens.prev,(r=G(10))&&"undefined"===r.type&&b("W080",n,n.value)),Re(c.tokens.next,"}")||(j(","),!Re(c.tokens.next,"}"))););j("}")}return i}function Te(e,t){var n=t.first;n&&r.zip(e,Array.isArray(n)?n:[n]).forEach(function(e){var t=e[0],n=e[1];t&&n?t.first=n:t&&t.first&&!n&&b("W080",t.first,t.first.value)})}function Oe(e,t,n){var i,o,s,a,u=n&&n.prefix,l=n&&n.inexport,f="let"===e,p="const"===e;for(c.inES6()||b("W104",c.tokens.curr,e,"6"),f&&"("===c.tokens.next.value?(c.inMoz()||b("W118",c.tokens.next,"let block"),j("("),c.funct["(scope)"].stack(),a=!0):c.funct["(noblockscopedvar)"]&&_("E048",c.tokens.curr,p?"Const":"Let"),t.first=[];;){var h=[];r.contains(["{","["],c.tokens.next.value)?(i=Le(),o=!1):(i=[{id:oe(),token:c.tokens.curr}],o=!0),!u&&p&&"="!==c.tokens.next.id&&b("E012",c.tokens.curr,c.tokens.curr.value);for(var d in i)i.hasOwnProperty(d)&&(d=i[d],c.funct["(scope)"].block.isGlobal()&&!1===Ye[d.id]&&b("W079",d.token,d.id),d.id&&!c.funct["(noblockscopedvar)"]&&(c.funct["(scope)"].addlabel(d.id,{type:e,token:d.token}),h.push(d.token)));if("="===c.tokens.next.id){j("="),!u&&"="===A(0).id&&c.tokens.next.identifier&&b("W120",c.tokens.next,c.tokens.next.value);var v=c.tokens.prev;s=G(u?120:10),!u&&s&&"undefined"===s.type&&b("W080",v,v.value),o?i[0].first=s:Te(h,s)}if(!u)for(d in i)i.hasOwnProperty(d)&&(d=i[d],c.funct["(scope)"].initialize(d.id),o&&l&&c.funct["(scope)"].setExported(d.token.value,d.token));if(t.first=t.first.concat(h),","!==c.tokens.next.id)break;F()}return a&&(j(")"),fe(!0,!0),t.block=!0,c.funct["(scope)"].unstack()),t}function Ge(e,t){return c.inES6()||b("W104",c.tokens.curr,"class","6"),t?(this.name=oe(),c.funct["(scope)"].addlabel(this.name,{type:"class",token:c.tokens.curr})):c.tokens.next.identifier&&"extends"!==c.tokens.next.value?(this.name=oe(),this.namedExpr=!0):this.name=c.nameStack.infer(),Ce(this),t&&c.funct["(scope)"].initialize(this.name),this}function Ce(e){var t=c.inClassBody;"extends"===c.tokens.next.value&&(j("extends"),e.heritage=G(10)),c.inClassBody=!0,j("{"),e.body=Me(e),j("}"),c.inClassBody=t}function Me(e){for(var t,n,r,i,o,s=Object.create(null),a=Object.create(null),u=0;"}"!==c.tokens.next.id;++u)if(t=c.tokens.next,n=!1,r=!1,i=null,";"!==t.id){if("*"===t.id&&(r=!0,j("*"),t=c.tokens.next),"["===t.id)t=Fe(),o=!0;else{if(!ve(t)){b("W052",c.tokens.next,c.tokens.next.value||c.tokens.next.type),j();continue}j(),o=!1,t.identifier&&"static"===t.value&&(Re(c.tokens.next,"*")&&(r=!0,j("*")),(ve(c.tokens.next)||"["===c.tokens.next.id)&&(o="["===c.tokens.next.id,n=!0,t=c.tokens.next,"["===c.tokens.next.id?t=Fe():j())),!t.identifier||"get"!==t.value&&"set"!==t.value||(ve(c.tokens.next)||"["===c.tokens.next.id)&&(o="["===c.tokens.next.id,i=t,t=c.tokens.next,"["===c.tokens.next.id?t=Fe():j())}if(!Re(c.tokens.next,"(")){for(_("E054",c.tokens.next,c.tokens.next.value);"}"!==c.tokens.next.id&&!Re(c.tokens.next,"(");)j();"("!==c.tokens.next.value&&Ee({statement:e})}o||(i?Ie(i.value,n?a:s,t.value,t,!0,n):("constructor"===t.value?c.nameStack.set(e):c.nameStack.set(t),Ve(n?a:s,t.value,t,!0,n))),i&&"constructor"===t.value?_("E049",t,"get"===i.value?"class getter method":"class setter method","constructor"):"prototype"===t.value&&_("E049",t,"class method","prototype"),ge(t),Ee({statement:e,type:r?"generator":null,classExprBinding:e.namedExpr?e.name:null})}else b("W032"),j(";");We(s)}function Ve(e,t,n,r,i){var o=["key","class method","static class method"];o=o[(r||!1)+(i||!1)],n.identifier&&(t=n.value),e[t]&&"__proto__"!==t?b("W075",c.tokens.next,o,t):e[t]=Object.create(null),e[t].basic=!0,e[t].basictkn=n}function Ie(e,t,n,r,i,o){var s="get"===e?"getterToken":"setterToken",a="";i?(o&&(a+="static "),a+=e+"ter method"):a="key",c.tokens.curr.accessorType=e,c.nameStack.set(r),t[n]?(t[n].basic||t[n][s])&&"__proto__"!==n&&b("W075",c.tokens.next,a,n):t[n]=Object.create(null),t[n][s]=r}function Fe(){j("["),c.inES6()||b("W119",c.tokens.curr,"computed property names","6");var e=G(10);return j("]"),e}function Pe(e,t){return"(punctuator)"===e.type&&r.contains(t,e.value)}function Re(e,t){return"(punctuator)"===e.type&&e.value===t}function Ue(){var e=ut();e.notJson?(!c.inES6()&&e.isDestAssign&&b("W104",c.tokens.curr,"destructuring assignment","6"),ce()):(c.option.laxbreak=!0,c.jsonMode=!0,Be())}function Be(){switch(c.tokens.next.id){case"{":!function(){var e={},t=c.tokens.next;if(j("{"),"}"!==c.tokens.next.id)for(;;){if("(end)"===c.tokens.next.id)_("E026",c.tokens.next,t.line);else{if("}"===c.tokens.next.id){b("W094",c.tokens.curr);break}","===c.tokens.next.id?_("E028",c.tokens.next):"(string)"!==c.tokens.next.id&&b("W095",c.tokens.next,c.tokens.next.value)}if(!0===e[c.tokens.next.value]?b("W075",c.tokens.next,"key",c.tokens.next.value):"__proto__"===c.tokens.next.value&&!c.option.proto||"__iterator__"===c.tokens.next.value&&!c.option.iterator?b("W096",c.tokens.next,c.tokens.next.value):e[c.tokens.next.value]=!0,j(),j(":"),Be(),","!==c.tokens.next.id)break;j(",")}j("}")}();break;case"[":!function(){var e=c.tokens.next;if(j("["),"]"!==c.tokens.next.id)for(;;){if("(end)"===c.tokens.next.id)_("E027",c.tokens.next,e.line);else{if("]"===c.tokens.next.id){b("W094",c.tokens.curr);break}","===c.tokens.next.id&&_("E028",c.tokens.next)}if(Be(),","!==c.tokens.next.id)break;j(",")}j("]")}();break;case"true":case"false":case"null":case"(number)":case"(string)":j();break;case"-":j("-"),j("(number)");break;default:_("E003",c.tokens.next)}}function Ne(e,t,n){var r,i,o,s;for(i=0;i":!0,">=":!0,"+":!0,"-":!0,"*":!0,"/":!0,"%":!0},nt=["closure","exception","global","label","outer","unused","var"],rt=[],it=new i.EventEmitter,ot={};ot.legacy=["xml","unknown"],ot.es3=["undefined","boolean","number","string","function","object"],ot.es3=ot.es3.concat(ot.legacy),ot.es6=ot.es3.concat("symbol"),q("(number)",function(){return this}),q("(string)",function(){return this}),c.syntax["(identifier)"]={type:"(identifier)",lbp:0,identifier:!0,nud:function(){var e=this.value;return"=>"===c.tokens.next.id?this:(c.funct["(comparray)"].check(e)||c.funct["(scope)"].block.use(e,c.tokens.curr),this)},led:function(){_("E033",c.tokens.next,c.tokens.next.value)}};var st={identifier:!1,template:!0};c.syntax["(template)"]=r.extend({lbp:155,type:"(template)",nud:be,led:be,noSubst:!1},st),c.syntax["(template middle)"]=r.extend({lbp:0,type:"(template middle)",middle:!0,noSubst:!1},st),c.syntax["(template tail)"]=r.extend({lbp:0,type:"(template tail)",tail:!0,noSubst:!1},st),c.syntax["(no subst template)"]=r.extend({lbp:155,type:"(template)",nud:be,led:be,noSubst:!0,tail:!0},st),q("(regexp)",function(){return this}),R("(endline)"),function(e){e.line=e.from=0}(R("(begin)")),R("(end)").reach=!0,R("(error)").reach=!0,R("}").reach=!0,R(")"),R("]"),R('"').reach=!0,R("'").reach=!0,R(";"),R(":").reach=!0,R("#"),z("else"),z("case").reach=!0,z("catch"),z("default").reach=!0,z("finally"),$("arguments",function(e){c.isStrict()&&c.funct["(global)"]&&b("E008",e)}),$("eval"),$("false"),$("Infinity"),$("null"),$("this",function(e){c.isStrict()&&!de()&&!c.option.validthis&&(c.funct["(statement)"]&&c.funct["(name)"].charAt(0)>"Z"||c.funct["(global)"])&&b("W040",e)}),$("true"),$("undefined"),ee("=","assign",20),ee("+=","assignadd",20),ee("-=","assignsub",20),ee("*=","assignmult",20),ee("/=","assigndiv",20).nud=function(){_("E014")},ee("%=","assignmod",20),ne("&="),ne("|="),ne("^="),ne("<<="),ne(">>="),ne(">>>="),J(",",function(e,t){var n;if(t.exprs=[e],c.option.nocomma&&b("W127"),!F({peek:!0}))return t;for(;;){if(!(n=G(10)))break;if(t.exprs.push(n),","!==c.tokens.next.value||!F())break}return t},10,!0),J("?",function(e,t){return we(),t.left=e,t.right=G(10),j(":"),t.else=G(10),t},30);J("||",function(e,t){return we(),t.left=e,t.right=G(40),t},40),J("&&","and",50),te("|","bitor",70),te("^","bitxor",80),te("&","bitand",90),Z("==",function(e,t){switch(!0){case!(c.option.eqnull&&("null"===(e&&e.value)||"null"===(t&&t.value)))&&c.option.eqeqeq:this.from=this.character,b("W116",this,"===","==");break;case X(t,e,c):b("W122",this,t.value);break;case X(e,t,c):b("W122",this,e.value)}return this}),Z("===",function(e,t){return X(t,e,c)?b("W122",this,t.value):X(e,t,c)&&b("W122",this,e.value),this}),Z("!=",function(e,t){return!(c.option.eqnull&&("null"===(e&&e.value)||"null"===(t&&t.value)))&&c.option.eqeqeq?(this.from=this.character,b("W116",this,"!==","!=")):X(t,e,c)?b("W122",this,t.value):X(e,t,c)&&b("W122",this,e.value),this}),Z("!==",function(e,t){return X(t,e,c)?b("W122",this,t.value):X(e,t,c)&&b("W122",this,e.value),this}),Z("<"),Z(">"),Z("<="),Z(">="),te("<<","shiftleft",120),te(">>","shiftright",120),te(">>>","shiftrightunsigned",120),J("in","in",120),J("instanceof",function(e,t){var n,r=c.funct["(scope)"];return t.left=e,t.right=n=G(120),n?(("(number)"===n.id||"(string)"===n.id||"null"===n.value||"undefined"===n.value&&!r.has("undefined")||"unary"===n.arity||"{"===n.id||"["===n.id&&!n.right||"(regexp)"===n.id||"(template)"===n.id&&!n.tag)&&_("E060"),"function"===n.id&&b("W139"),t):t},120),J("+",function(e,t){var n;return t.left=e,t.right=n=G(130),e&&n&&"(string)"===e.id&&"(string)"===n.id?(e.value+=n.value,e.character=n.character,!c.option.scripturl&&u.javascriptURL.test(e.value)&&b("W050",e),e):t},130),D("+","num"),D("+++",function(){return b("W007"),this.arity="unary",this.right=G(150),this}),J("+++",function(e){return b("W007"),this.left=e,this.right=G(130),this},130),J("-","sub",130),D("-","neg"),D("---",function(){return b("W006"),this.arity="unary",this.right=G(150),this}),J("---",function(e){return b("W006"),this.left=e,this.right=G(130),this},130),J("*","mult",140),J("/","div",140),J("%","mod",140),re("++"),D("++","preinc"),c.syntax["++"].exps=!0,c.syntax["++"].ltBoundary="before",re("--"),D("--","predec"),c.syntax["--"].exps=!0,c.syntax["--"].ltBoundary="before",D("delete",function(){var e=G(10);return e?("."!==e.id&&"["!==e.id&&b("W051"),this.first=e,e.identifier&&!c.isStrict()&&(e.forgiveUndef=!0),this):this}).exps=!0,D("~",function(){return c.option.bitwise&&b("W016",this,"~"),this.arity="unary",this.right=G(150),this}),D("...",function(){return c.inES6(!0)||b("W119",this,"spread/rest operator","6"),c.tokens.next.identifier||"(string)"===c.tokens.next.type||Pe(c.tokens.next,["[","("])||_("E030",c.tokens.next,c.tokens.next.value),this.right=G(150),this}),D("!",function(){return this.arity="unary",this.right=G(150),this.right||y("E041",this),!0===tt[this.right.id]&&b("W018",this,"!"),this}),D("typeof",function(){var e=G(150);return this.first=this.right=e,e||y("E041",this),e.identifier&&(e.forgiveUndef=!0),this}),D("new",function(){var e=Ae("target",function(){c.inES6(!0)||b("W119",c.tokens.prev,"new.target","6");for(var e,t=c.funct;t&&(e=!t["(global)"],t["(arrow)"]);)t=t["(context)"];e||b("W136",c.tokens.prev,"new.target")});if(e)return e;var t,n=G(155);if(n&&"function"!==n.id)if(n.identifier)switch(n.new=!0,n.value){case"Number":case"String":case"Boolean":case"Math":case"JSON":b("W053",c.tokens.prev,n.value);break;case"Symbol":c.inES6()&&b("W053",c.tokens.prev,n.value);break;case"Function":c.option.evil||b("W054");break;case"Date":case"RegExp":case"this":break;default:"function"!==n.id&&(t=n.value.substr(0,1),c.option.newcap&&(t<"A"||t>"Z")&&!c.funct["(scope)"].isPredefined(n.value)&&b("W055",c.tokens.curr))}else"."!==n.id&&"["!==n.id&&"("!==n.id&&b("W056",c.tokens.curr);else c.option.supernew||b("W057",this);return"("===c.tokens.next.id||c.option.supernew||b("W058",c.tokens.curr,c.tokens.curr.value),this.first=this.right=n,this}),c.syntax.new.exps=!0,D("void").exps=!0,J(".",function(e,t){var n=oe(!1,!0);return"string"==typeof n&&pe(n),t.left=e,t.right=n,n&&"hasOwnProperty"===n&&"="===c.tokens.next.value&&b("W001"),!e||"arguments"!==e.value||"callee"!==n&&"caller"!==n?c.option.evil||!e||"document"!==e.value||"write"!==n&&"writeln"!==n||b("W060",e):c.option.noarg?b("W059",e,n):c.isStrict()&&_("E008"),c.option.evil||"eval"!==n&&"execScript"!==n||K(e,c)&&b("W061"),t},160,!0),J("(",function(e,t){c.option.immed&&e&&!e.immed&&"function"===e.id&&b("W062");var n=0,r=[];if(e&&"(identifier)"===e.type&&e.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)&&-1==="Array Number String Boolean Date Object Error Symbol".indexOf(e.value)&&("Math"===e.value?b("W063",e):c.option.newcap&&b("W064",e)),")"!==c.tokens.next.id)for(;r[r.length]=G(10),n+=1,","===c.tokens.next.id;)F();return j(")"),"object"==typeof e&&(c.inES5()||"parseInt"!==e.value||1!==n||b("W065",c.tokens.curr),c.option.evil||("eval"===e.value||"Function"===e.value||"execScript"===e.value?b("W061",e):!r[0]||"(string)"!==r[0].id||"setTimeout"!==e.value&&"setInterval"!==e.value?!r[0]||"(string)"!==r[0].id||"."!==e.value||"window"!==e.left.value||"setTimeout"!==e.right&&"setInterval"!==e.right||(b("W066",e),S(e,r[0])):(b("W066",e),S(e,r[0]))),e.identifier||"."===e.id||"["===e.id||"=>"===e.id||"("===e.id||"&&"===e.id||"||"===e.id||"?"===e.id||c.inES6()&&e["(name)"]||b("W067",t)),t.left=e,t},155,!0).exps=!0,D("(",function(e){var t,n,r,i,o,s=c.tokens.next,a=-1,u=1,l=c.tokens.curr,f=c.tokens.prev,p=!c.option.singleGroups;do{"("===s.value?u+=1:")"===s.value&&(u-=1),t=s,s=A(a+=1)}while((0!==u||")"!==t.value)&&"(end)"!==s.type);if("function"===c.tokens.next.id&&(r=c.tokens.next.immed=!0),"=>"===s.value)return Ee({type:"arrow",parsedOpening:!0});var h=[];if(")"!==c.tokens.next.id)for(;h.push(G(10)),","===c.tokens.next.id;)c.option.nocomma&&b("W127"),F();return j(")",this),c.option.immed&&h[0]&&"function"===h[0].id&&"("!==c.tokens.next.id&&"."!==c.tokens.next.id&&"["!==c.tokens.next.id&&b("W068",this),h.length?(h.length>1?((n=Object.create(c.syntax[","])).exprs=h,i=h[0],o=h[h.length-1]):(n=i=o=h[0],p||(p=l.beginsStmt&&("{"===n.id||r||ye(n))||r&&(!O()||"}"!==c.tokens.prev.id)||ye(n)&&!O()||"{"===n.id&&"=>"===f.id||"(number)"===n.type&&Re(s,".")&&/^\d+$/.test(n.value)||l.beginsStmt&&"="===n.id&&"{"===n.left.id)),n&&(p||!T(i)&&!n.exprs||(p=e>i.lbp||e>0&&e===i.lbp||!O()&&o.lbp"),J("[",function(e,t){var n,r=G(10);return r&&"(string)"===r.type&&(c.option.evil||"eval"!==r.value&&"execScript"!==r.value||K(e,c)&&b("W061"),pe(r.value),!c.option.sub&&u.identifier.test(r.value)&&((n=c.syntax[r.value])&&d(n)||b("W069",c.tokens.prev,r.value))),j("]",t),r&&"hasOwnProperty"===r.value&&"="===c.tokens.next.value&&b("W001"),t.left=e,t.right=r,t},160,!0),D("[",function(){var e=ut();if(e.isCompArray)return c.option.esnext||c.inMoz()||b("W118",c.tokens.curr,"array comprehension"),he();if(e.isDestAssign)return this.destructAssign=Le({openingParsed:!0,assignment:!0}),this;var t=c.tokens.curr.line!==C(c.tokens.next);for(this.first=[],t&&($e+=c.option.indent,c.tokens.next.from===$e+c.option.indent&&($e+=c.option.indent));"(end)"!==c.tokens.next.id;){for(;","===c.tokens.next.id;){if(!c.option.elision){if(c.inES5()){b("W128");do{j(",")}while(","===c.tokens.next.id);continue}b("W070")}j(",")}if("]"===c.tokens.next.id)break;if(this.first.push(G(10)),","!==c.tokens.next.id){c.option.trailingcomma&&c.inES5()&&E("W140",c.tokens.curr.line,c.tokens.curr.character);break}if(F({allowTrailing:!0}),"]"===c.tokens.next.id&&!c.inES5()){b("W070",c.tokens.curr);break}}return t&&($e-=c.option.indent),j("]",this),this}),function(e){e.nud=function(){var e,t,n,r,i,o,s=!1,a=Object.create(null);if((e=c.tokens.curr.line!==C(c.tokens.next))&&($e+=c.option.indent,c.tokens.next.from===$e+c.option.indent&&($e+=c.option.indent)),ut().isDestAssign)return this.destructAssign=Le({openingParsed:!0,assignment:!0}),this;for(;"}"!==c.tokens.next.id;){if(o=c.tokens.next.value,!c.tokens.next.identifier||","!==L().id&&"}"!==L().id)if(":"===A().id||"get"!==o&&"set"!==o){if("*"===c.tokens.next.value&&"(punctuator)"===c.tokens.next.type?(c.inES6()||b("W104",c.tokens.next,"generator functions","6"),j("*"),s=!0):s=!1,"["===c.tokens.next.id)n=Fe(),c.nameStack.set(n);else if(c.nameStack.set(c.tokens.next),n=ge(),Ve(a,n,c.tokens.next),"string"!=typeof n)break;"("===c.tokens.next.value?(c.inES6()||b("W104",c.tokens.curr,"concise methods","6"),Ee({type:s?"generator":null})):(j(":"),G(10))}else j(o),c.inES5()||_("E034"),(n=ge())||c.inES6()||_("E035"),n&&Ie(o,a,n,c.tokens.curr),i=c.tokens.next,r=(t=Ee())["(params)"],"get"===o&&n&&r?b("W076",i,r[0],n):"set"===o&&n&&1!==t["(metrics)"].arity&&b("W077",i,n);else c.inES6()||b("W104",c.tokens.next,"object short notation","6"),Ve(a,n=ge(!0),c.tokens.next),G(10);if(pe(n),","!==c.tokens.next.id){c.option.trailingcomma&&c.inES5()&&E("W140",c.tokens.curr.line,c.tokens.curr.character);break}F({allowTrailing:!0,property:!0}),","===c.tokens.next.id?b("W070",c.tokens.curr):"}"!==c.tokens.next.id||c.inES5()||b("W070",c.tokens.curr)}return e&&($e-=c.option.indent),j("}",this),We(a),this},e.fud=function(){_("E036",c.tokens.curr)}}(R("{")),U("const",function(e){return Oe("const",this,e)}).exps=!0,U("let",function(e){return Oe("let",this,e)}).exps=!0,U("var",function(e){var t,n,i,s=e&&e.prefix,a=e&&e.inexport;for(this.first=[];;){var u=[];r.contains(["{","["],c.tokens.next.value)?(t=Le(),n=!1):(t=[{id:oe(),token:c.tokens.curr}],n=!0),c.option.varstmt&&b("W132",this),this.first=this.first.concat(u);for(var l in t)t.hasOwnProperty(l)&&(l=t[l],c.funct["(global)"]&&!c.impliedClosure()&&(!1===Ye[l.id]?b("W079",l.token,l.id):!1===c.option.futurehostile&&(!c.inES5()&&!1===o.ecmaIdentifiers[5][l.id]||!c.inES6()&&!1===o.ecmaIdentifiers[6][l.id])&&b("W129",l.token,l.id)),l.id&&(c.funct["(scope)"].addlabel(l.id,{type:"var",token:l.token}),n&&a&&c.funct["(scope)"].setExported(l.id,l.token),u.push(l.token)));if("="===c.tokens.next.id){c.nameStack.set(c.tokens.curr),j("="),"="===A(0).id&&c.tokens.next.identifier&&((s||c.funct["(params)"])&&-1!==c.funct["(params)"].indexOf(c.tokens.next.value)||b("W120",c.tokens.next,c.tokens.next.value));var f=c.tokens.prev;!(i=G(s?120:10))||s||c.funct["(loopage)"]||"undefined"!==i.type||b("W080",f,f.value),n?t[0].first=i:Te(u,i)}if(","!==c.tokens.next.id)break;F()}return this}).exps=!0,B("class",function(e){return Ge.call(this,e,!0)}),B("function",function(e){var t=e&&e.inexport,n=!1;"*"===c.tokens.next.value&&(j("*"),c.inES6(!0)?n=!0:b("W119",c.tokens.curr,"function*","6")),He&&b("W082",c.tokens.curr);var r=ie();return c.funct["(scope)"].addlabel(r,{type:"function",token:c.tokens.curr}),void 0===r?b("W025"):t&&c.funct["(scope)"].setExported(r,c.tokens.prev),Ee({name:r,statement:this,type:n?"generator":null,ignoreLoopFunc:He}),"("===c.tokens.next.id&&c.tokens.next.line===c.tokens.curr.line&&_("E039"),this}),D("function",function(){var e=!1;return"*"===c.tokens.next.value&&(c.inES6()||b("W119",c.tokens.curr,"function*","6"),j("*"),e=!0),Ee({name:ie(),type:e?"generator":null}),this}),B("if",function(){var e=c.tokens.next;we(),c.condition=!0,j("(");var t=G(0);t||y("E041",this),Se(t);var n=null;c.option.forin&&c.forinifcheckneeded&&(c.forinifcheckneeded=!1,n=c.forinifchecks[c.forinifchecks.length-1],"(punctuator)"===t.type&&"!"===t.value?n.type="(negative)":n.type="(positive)"),j(")",e),c.condition=!1;var r=fe(!0,!0);return n&&"(negative)"===n.type&&r&&r[0]&&"(identifier)"===r[0].type&&"continue"===r[0].value&&(n.type="(negative-with-continue)"),"else"===c.tokens.next.id&&(j("else"),"if"===c.tokens.next.id||"switch"===c.tokens.next.id?ue():fe(!0,!0)),this}),B("try",function(){var e;for(fe(!0);"catch"===c.tokens.next.id;)we(),e&&!c.inMoz()&&b("W118",c.tokens.next,"multiple catch blocks"),function(){if(j("catch"),j("("),c.funct["(scope)"].stack("catchparams"),Pe(c.tokens.next,["[","{"])){var e=Le();r.each(e,function(e){e.id&&c.funct["(scope)"].addParam(e.id,e,"exception")})}else"(identifier)"!==c.tokens.next.type?b("E030",c.tokens.next,c.tokens.next.value):c.funct["(scope)"].addParam(oe(),c.tokens.curr,"exception");"if"===c.tokens.next.value&&(c.inMoz()||b("W118",c.tokens.curr,"catch filter"),j("if"),G(0)),j(")"),fe(!1),c.funct["(scope)"].unstack()}(),e=!0;return"finally"===c.tokens.next.id?(j("finally"),void fe(!0)):(e||_("E021",c.tokens.next,"catch",c.tokens.next.value),this)}),B("while",function(){var e=c.tokens.next;return c.funct["(breakage)"]+=1,c.funct["(loopage)"]+=1,we(),j("("),Se(G(0)),j(")",e),fe(!0,!0),c.funct["(breakage)"]-=1,c.funct["(loopage)"]-=1,this}).labelled=!0,B("with",function(){var e=c.tokens.next;return c.isStrict()?_("E010",c.tokens.curr):c.option.withstmt||b("W085",c.tokens.curr),j("("),G(0),j(")",e),fe(!0,!0),this}),B("switch",function(){var e=c.tokens.next,t=!1,n=!1;for(c.funct["(breakage)"]+=1,j("("),Se(G(0)),j(")",e),e=c.tokens.next,j("{"),c.tokens.next.from===$e&&(n=!0),n||($e+=c.option.indent),this.cases=[];;)switch(c.tokens.next.id){case"case":switch(c.funct["(verb)"]){case"yield":case"break":case"case":case"continue":case"return":case"switch":case"throw":break;default:c.tokens.curr.caseFallsThrough||b("W086",c.tokens.curr,"case")}j("case"),this.cases.push(G(0)),we(),t=!0,j(":"),c.funct["(verb)"]="case";break;case"default":switch(c.funct["(verb)"]){case"yield":case"break":case"continue":case"return":case"throw":break;default:this.cases.length&&(c.tokens.curr.caseFallsThrough||b("W086",c.tokens.curr,"default"))}j("default"),t=!0,j(":");break;case"}":return n||($e-=c.option.indent),j("}",e),c.funct["(breakage)"]-=1,void(c.funct["(verb)"]=void 0);case"(end)":return void _("E023",c.tokens.next,"}");default:if($e+=c.option.indent,t)switch(c.tokens.curr.id){case",":return void _("E040");case":":t=!1,ce();break;default:return void _("E025",c.tokens.curr)}else{if(":"!==c.tokens.curr.id)return void _("E021",c.tokens.next,"case",c.tokens.next.value);j(":"),_("E024",c.tokens.curr,":"),ce()}$e-=c.option.indent}return this}).labelled=!0,U("debugger",function(){return c.option.debug||b("W087",this),this}).exps=!0,function(){var e=U("do",function(){c.funct["(breakage)"]+=1,c.funct["(loopage)"]+=1,we(),this.first=fe(!0,!0),j("while");var e=c.tokens.next;return j("("),Se(G(0)),j(")",e),c.funct["(breakage)"]-=1,c.funct["(loopage)"]-=1,this});e.labelled=!0,e.exps=!0}(),B("for",function(){var e,t=c.tokens.next,n=!1,i=null;"each"===t.value&&(i=t,j("each"),c.inMoz()||b("W118",c.tokens.curr,"for each")),we(),j("(");var o,s,a,u,l,f,p=0,h=["in","of"],d=0;Pe(c.tokens.next,["{","["])&&++d;do{if(o=A(p),++p,Pe(o,["{","["])?++d:Pe(o,["}","]"])&&--d,d<0)break;0===d&&(!s&&Re(o,",")?s=o:!a&&Re(o,"=")&&(a=o))}while(d>0||!r.contains(h,o.value)&&";"!==o.value&&"(end)"!==o.type);if(r.contains(h,o.value)){if("of"===o.value?(u=20,c.inES6()||b("W104",o,"for of","6")):u=0,a&&_("W133",s,o.value,"initializer is forbidden"),s&&_("W133",s,o.value,"more than one ForBinding"),"var"===c.tokens.next.id)j("var"),c.tokens.curr.fud({prefix:!0});else if("let"===c.tokens.next.id||"const"===c.tokens.next.id)j(c.tokens.next.id),n=!0,c.funct["(scope)"].stack(),c.tokens.curr.fud({prefix:!0});else{l=[];do{Pe(c.tokens.next,["{","["])?Le({assignment:!0}).forEach(function(e){this.push(e.token)},l):("(identifier)"===(f=G(120)).type&&l.push(f),Q(f,o)),Re(c.tokens.next,"=")&&(j("="),G(120)),Re(c.tokens.next,",")&&j(",")}while(c.tokens.next!==o);a||s||l.forEach(function(e){c.funct["(scope)"].has(e.value)||b("W088",e,e.value)})}if(j(o.value),G(u),j(")",t),"in"===o.value&&c.option.forin&&(c.forinifcheckneeded=!0,void 0===c.forinifchecks&&(c.forinifchecks=[]),c.forinifchecks.push({type:"(none)"})),c.funct["(breakage)"]+=1,c.funct["(loopage)"]+=1,e=fe(!0,!0),"in"===o.value&&c.option.forin){if(c.forinifchecks&&c.forinifchecks.length>0){var v=c.forinifchecks.pop();(e&&e.length>0&&("object"!=typeof e[0]||"if"!==e[0].value)||"(positive)"===v.type&&e.length>1||"(negative)"===v.type)&&b("W089",this)}c.forinifcheckneeded=!1}c.funct["(breakage)"]-=1,c.funct["(loopage)"]-=1}else{if(i&&_("E045",i),";"!==c.tokens.next.id)if("var"===c.tokens.next.id)j("var"),c.tokens.curr.fud();else if("let"===c.tokens.next.id)j("let"),n=!0,c.funct["(scope)"].stack(),c.tokens.curr.fud();else for(;G(0,"for"),","===c.tokens.next.id;)F();if(V(c.tokens.curr),j(";"),c.funct["(loopage)"]+=1,";"!==c.tokens.next.id&&Se(G(0)),V(c.tokens.curr),j(";"),";"===c.tokens.next.id&&_("E021",c.tokens.next,")",";"),")"!==c.tokens.next.id)for(;G(0,"for"),","===c.tokens.next.id;)F();j(")",t),c.funct["(breakage)"]+=1,fe(!0,!0),c.funct["(breakage)"]-=1,c.funct["(loopage)"]-=1}return n&&c.funct["(scope)"].unstack(),this}).labelled=!0,U("break",function(){var e=c.tokens.next.value;return c.option.asi||V(this),";"===c.tokens.next.id||c.tokens.next.reach||c.tokens.curr.line!==C(c.tokens.next)?0===c.funct["(breakage)"]&&b("W052",c.tokens.next,this.value):(c.funct["(scope)"].funct.hasBreakLabel(e)||b("W090",c.tokens.next,e),this.first=c.tokens.next,j()),se(this),this}).exps=!0,U("continue",function(){var e=c.tokens.next.value;return 0!==c.funct["(breakage)"]&&c.funct["(loopage)"]||b("W052",c.tokens.next,this.value),c.option.asi||V(this),";"===c.tokens.next.id||c.tokens.next.reach||c.tokens.curr.line===C(c.tokens.next)&&(c.funct["(scope)"].funct.hasBreakLabel(e)||b("W090",c.tokens.next,e),this.first=c.tokens.next,j()),se(this),this}).exps=!0,U("return",function(){return this.line===C(c.tokens.next)?";"===c.tokens.next.id||c.tokens.next.reach||(this.first=G(0),!this.first||"(punctuator)"!==this.first.type||"="!==this.first.value||this.first.paren||c.option.boss||E("W093",this.first.line,this.first.character)):"(punctuator)"===c.tokens.next.type&&["[","{","+","-"].indexOf(c.tokens.next.value)>-1&&V(this),se(this),this}).exps=!0,function(e){e.exps=!0,e.lbp=25,e.ltBoundary="after"}(D("yield",function(){if(c.inMoz())return at.call(this);var e=c.tokens.prev;!this.beginsStmt&&e.lbp>30&&!Pe(e,["("])&&_("E061",this),c.inES6(!0)&&!c.funct["(generator)"]?"(catch)"===c.funct["(name)"]&&c.funct["(context)"]["(generator)"]||_("E046",c.tokens.curr,"yield"):c.inES6()||b("W104",c.tokens.curr,"yield","6"),c.funct["(generator)"]="yielded";return"*"===c.tokens.next.value&&(!0,j("*")),O()||","===c.tokens.next.id||(c.tokens.next.nud?(M(c.tokens.curr,c.tokens.next),this.first=G(10),"(punctuator)"!==this.first.type||"="!==this.first.value||this.first.paren||c.option.boss||E("W093",this.first.line,this.first.character)):c.tokens.next.led&&","!==c.tokens.next.id&&_("W017",c.tokens.next)),this}));var at=function(){var e=c.tokens.prev;c.inES6(!0)&&!c.funct["(generator)"]&&("(catch)"===c.funct["(name)"]&&c.funct["(context)"]["(generator)"]||_("E046",c.tokens.curr,"yield")),c.funct["(generator)"]="yielded";var t=!1;return"*"===c.tokens.next.value&&(t=!0,j("*")),this.line===C(c.tokens.next)?((t||";"!==c.tokens.next.id&&!c.option.asi&&!c.tokens.next.reach&&c.tokens.next.nud)&&(M(c.tokens.curr,c.tokens.next),this.first=G(10),"(punctuator)"!==this.first.type||"="!==this.first.value||this.first.paren||c.option.boss||E("W093",this.first.line,this.first.character)),")"!==c.tokens.next.id&&(e.lbp>30||!e.assign&&!O()||"yield"===e.id)&&_("E050",this)):c.option.asi||V(this),this};U("throw",function(){return V(this),this.first=G(20),se(this),this}).exps=!0,U("import",function(){if(c.funct["(scope)"].block.isGlobal()||_("E053",c.tokens.curr,"Import"),c.inES6()||b("W119",c.tokens.curr,"import","6"),"(string)"===c.tokens.next.type)return j("(string)"),this;if(c.tokens.next.identifier){if(this.name=oe(),c.funct["(scope)"].addlabel(this.name,{type:"import",initialized:!0,token:c.tokens.curr}),","!==c.tokens.next.value)return j("from"),j("(string)"),this;j(",")}if("*"===c.tokens.next.id)j("*"),j("as"),c.tokens.next.identifier&&(this.name=oe(),c.funct["(scope)"].addlabel(this.name,{type:"import",initialized:!0,token:c.tokens.curr}));else for(j("{");;){if("}"===c.tokens.next.value){j("}");break}var e;if("default"===c.tokens.next.type?(e="default",j("default")):e=oe(),"as"===c.tokens.next.value&&(j("as"),e=oe()),c.funct["(scope)"].addlabel(e,{type:"import",initialized:!0,token:c.tokens.curr}),","!==c.tokens.next.value){if("}"===c.tokens.next.value){j("}");break}_("E024",c.tokens.next,c.tokens.next.value);break}j(",")}return j("from"),j("(string)"),this}).exps=!0,U("export",function(){var e,t,n=!0;if(c.inES6()||(b("W119",c.tokens.curr,"export","6"),n=!1),c.funct["(scope)"].block.isGlobal()||(_("E053",c.tokens.curr,"Export"),n=!1),"*"===c.tokens.next.value)return j("*"),j("from"),j("(string)"),this;if("default"===c.tokens.next.type){c.nameStack.set(c.tokens.next),j("default");var r=c.tokens.next.id;return"function"!==r&&"class"!==r||(this.block=!0),e=A(),G(10),t=e.value,this.block&&(c.funct["(scope)"].addlabel(t,{type:r,initialized:!0,token:e}),c.funct["(scope)"].setExported(t,e)),this}if("{"===c.tokens.next.value){j("{");for(var i=[];;){if(c.tokens.next.identifier||_("E030",c.tokens.next,c.tokens.next.value),j(),i.push(c.tokens.curr),"as"===c.tokens.next.value&&(j("as"),c.tokens.next.identifier||_("E030",c.tokens.next,c.tokens.next.value),j()),","!==c.tokens.next.value){if("}"===c.tokens.next.value){j("}");break}_("E024",c.tokens.next,c.tokens.next.value);break}j(",")}return"from"===c.tokens.next.value?(j("from"),j("(string)")):n&&i.forEach(function(e){c.funct["(scope)"].setExported(e.value,e)}),this}if("var"===c.tokens.next.id)j("var"),c.tokens.curr.fud({inexport:!0});else if("let"===c.tokens.next.id)j("let"),c.tokens.curr.fud({inexport:!0});else if("const"===c.tokens.next.id)j("const"),c.tokens.curr.fud({inexport:!0});else if("function"===c.tokens.next.id)this.block=!0,j("function"),c.syntax.function.fud({inexport:!0});else if("class"===c.tokens.next.id){this.block=!0,j("class");var o=c.tokens.next;c.syntax.class.fud(),c.funct["(scope)"].setExported(o.value,o)}else _("E024",c.tokens.next,c.tokens.next.value);return this}).exps=!0,H("abstract"),H("await",{es5:!0,moduleOnly:!0}),H("boolean"),H("byte"),H("char"),H("class",{es5:!0,nud:Ge}),H("double"),H("enum",{es5:!0}),H("export",{es5:!0}),H("extends",{es5:!0}),H("final"),H("float"),H("goto"),H("implements",{es5:!0,strictOnly:!0}),H("import",{es5:!0}),H("int"),H("interface",{es5:!0,strictOnly:!0}),H("long"),H("native"),H("package",{es5:!0,strictOnly:!0}),H("private",{es5:!0,strictOnly:!0}),H("protected",{es5:!0,strictOnly:!0}),H("public",{es5:!0,strictOnly:!0}),H("short"),H("static",{es5:!0,strictOnly:!0}),H("super",{es5:!0}),H("synchronized"),H("transient"),H("volatile");var ut=function(){var e,t,n,r=-1,i=0,o={};Pe(c.tokens.curr,["[","{"])&&(i+=1);do{if(n=-1===r?c.tokens.curr:e,e=-1===r?c.tokens.next:A(r),t=A(r+1),r+=1,Pe(e,["[","{"])?i+=1:Pe(e,["]","}"])&&(i-=1),1===i&&e.identifier&&"for"===e.value&&!Re(n,".")){o.isCompArray=!0,o.notJson=!0;break}if(0===i&&Pe(e,["}","]"])){if("="===t.value){o.isDestAssign=!0,o.notJson=!0;break}if("."===t.value){o.notJson=!0;break}}Re(e,";")&&(o.isBlock=!0,o.notJson=!0)}while(i>0&&"(end)"!==e.id);return o},ct=function(){function e(e){return 0!==n.variables.filter(function(t){if(t.value===e)return t.undef=!1,e}).length}function t(e){return 0===n.variables.filter(function(t){if(t.value===e&&!t.undef)return!0===t.unused&&(t.unused=!1),e}).length}var n,i=function(){this.mode="use",this.variables=[]},o=[];return{stack:function(){n=new i,o.push(n)},unstack:function(){n.variables.filter(function(e){e.unused&&b("W098",e.token,e.raw_text||e.value),e.undef&&c.funct["(scope)"].block.use(e.value,e.token)}),o.splice(-1,1),n=o[o.length-1]},setState:function(e){r.contains(["use","define","generate","filter"],e)&&(n.mode=e)},check:function(r){if(n)return n&&"use"===n.mode?(t(r)&&n.variables.push({funct:c.funct,token:c.tokens.curr,value:r,undef:!0,unused:!1}),!0):n&&"define"===n.mode?(e(r)||n.variables.push({funct:c.funct,token:c.tokens.curr,value:r,undef:!1,unused:!0}),!0):n&&"generate"===n.mode?(c.funct["(scope)"].block.use(r,c.tokens.curr),!0):!(!n||"filter"!==n.mode)&&(t(r)&&c.funct["(scope)"].block.use(r,c.tokens.curr),!0)}}},lt=function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},ft=function(n,i,s){function u(e,t){e&&(Array.isArray(e)||"object"!=typeof e||(e=Object.keys(e)),e.forEach(t))}var l,f,d,v,m={},x={};i=r.clone(i),c.reset(),i&&i.scope?h.scope=i.scope:(h.errors=[],h.undefs=[],h.internals=[],h.blacklist={},h.scope="(main)"),g(Ye=Object.create(null),o.ecmaIdentifiers[3]),g(Ye,o.reservedVars),g(Ye,s||{}),qe=Object.create(null);var S=Object.create(null);if(i)for(u(i.predef||null,function(e){var t,n;"-"===e[0]?(t=e.slice(1),h.blacklist[t]=t,delete Ye[t]):(n=Object.getOwnPropertyDescriptor(i.predef,e),Ye[e]=!!n&&n.value)}),u(i.exported||null,function(e){S[e]=!0}),delete i.predef,delete i.exported,v=Object.keys(i),l=0;l0&&(s.implieds=a),et.length>0&&(s.urls=et),(o=c.funct["(scope)"].getUsedOrDefinedGlobals()).length>0&&(s.globals=o),n=1;n0&&(s.unused=u);for(i in Xe)if("number"==typeof Xe[i]){s.member=Xe;break}return s},ft.jshint=ft,ft}());"object"==typeof n&&n&&(n.JSHINT=h)},{"./lex.js":13,"./messages.js":14,"./options.js":16,"./reg.js":17,"./scope-manager.js":18,"./state.js":19,"./style.js":20,"./vars.js":21,"console-browserify":10,events:5,lodash:12}]},{},[]),JSHINT=e("jshint").JSHINT,"object"==typeof exports&&exports&&(exports.JSHINT=JSHINT)}(); +var JSHINT;"undefined"==typeof window&&(window={}),function(){var e;e=function t(n,r,i){function o(a,u){if(!r[a]){if(!n[a]){var c="function"==typeof e&&e;if(!u&&c)return c(a,!0);if(s)return s(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var f=r[a]={exports:{}};n[a][0].call(f.exports,function(e){var t=n[a][1][e];return o(t||e)},f,f.exports,t,n,r,i)}return r[a].exports}for(var s="function"==typeof e&&e,a=0;a=65&&i<=90||95===i||i>=97&&i<=122;for(var o=[],i=0;i<128;i++)o[i]=r[i]||i>=48&&i<=57;t.exports={asciiIdentifierStartTable:r,asciiIdentifierPartTable:o}},{}],2:[function(e,t,n){var r=[];[[768,112],[1155,5],[1425,45],1472,[1473,2],[1476,2],1480,[1552,11],[1611,31],1649,[1750,7],[1759,6],[1767,2],[1770,4],[1776,10],1810,[1840,27],[1958,11],[1984,10],[2027,9],[2070,4],[2075,9],[2085,3],[2089,5],[2137,3],[2276,27],[2304,4],[2362,3],[2366,18],[2385,7],[2402,2],[2406,10],[2433,3],2493,[2494,7],[2503,2],[2507,3],2520,[2530,2],[2534,10],[2561,3],2621,[2622,5],[2631,2],[2635,3],2642,[2662,12],2678,[2689,3],2749,[2750,8],[2759,3],[2763,3],[2786,2],[2790,10],[2817,3],2877,[2878,7],[2887,2],[2891,3],[2902,2],[2914,2],[2918,10],2947,[3006,5],[3014,3],[3018,4],3032,[3046,10],[3073,3],[3134,7],[3142,3],[3146,4],[3157,2],[3170,2],[3174,10],[3202,2],3261,[3262,7],[3270,3],[3274,4],[3285,2],[3298,2],[3302,10],[3330,2],[3390,7],[3398,3],[3402,4],3416,[3426,2],[3430,10],[3458,2],3531,[3535,6],3543,[3544,8],[3570,2],3634,[3636,7],[3655,8],[3664,10],3762,[3764,6],[3771,2],[3784,6],[3792,10],[3864,2],[3872,10],3894,3896,3898,[3902,2],[3953,20],[3974,2],[3981,11],[3993,36],4039,[4139,20],[4160,10],[4182,4],[4190,3],[4194,3],[4199,7],[4209,4],[4226,12],[4239,15],[4957,3],[5906,3],[5938,3],[5970,2],[6002,2],[6068,32],6110,[6112,10],[6155,3],[6160,10],6314,[6432,12],[6448,12],[6470,10],[6576,17],[6600,2],[6608,10],[6679,5],[6741,10],[6752,29],[6783,11],[6800,10],[6912,5],[6964,17],[6992,10],[7019,9],[7040,3],[7073,13],[7088,10],[7142,14],[7204,20],[7232,10],[7248,10],[7376,3],[7380,21],7406,[7410,3],[7616,39],[7676,4],[8204,2],[8255,2],8277,[8400,13],8418,[8421,12],[11503,3],11648,[11744,32],[12330,6],[12441,2],[42528,10],42608,[42612,10],42656,[42736,2],43011,43015,43020,[43043,5],[43136,2],[43188,17],[43216,10],[43232,18],[43264,10],[43302,8],[43335,13],[43392,4],[43443,14],[43472,10],[43561,14],43588,[43596,2],[43600,10],43644,43697,[43698,3],[43703,2],[43710,2],43714,[43755,5],[43765,2],[44003,8],[44012,2],[44016,10],64287,[65024,16],[65056,7],[65075,2],[65101,3],[65296,10],65344].forEach(function(o){for(var x=0;x<(o[1]||1);x++)r.push((o[0]||o)+x)});t.exports=r},{}],3:[function(e,t,n){var r=[];[171,182,187,[192,23],[216,31],[248,458],[710,12],[736,5],749,751,[880,5],[886,2],[890,4],903,[904,3],909,[910,20],[931,83],[1015,139],[1162,158],[1329,38],1370,[1377,39],[1488,27],[1520,3],[1568,43],[1646,2],[1649,99],1750,[1765,2],[1774,2],[1786,3],1792,1809,[1810,30],[1869,89],1970,[1994,33],[2036,2],2043,[2048,22],2075,2085,2089,[2112,25],2209,[2210,11],[2308,54],2366,2385,[2392,10],[2417,7],[2425,7],[2437,8],[2447,2],[2451,22],[2474,7],2483,[2486,4],2494,2511,[2524,2],[2527,3],[2544,2],[2565,6],[2575,2],[2579,22],[2602,7],[2610,2],[2613,2],[2616,2],[2649,4],2655,[2674,3],[2693,9],[2703,3],[2707,22],[2730,7],[2738,2],[2741,5],2750,2769,[2784,2],[2821,8],[2831,2],[2835,22],[2858,7],[2866,2],[2869,5],2878,[2908,2],[2911,3],2930,2948,[2949,6],[2958,3],[2962,4],[2969,2],2973,[2974,2],[2979,2],[2984,3],[2990,12],3025,[3077,8],[3086,3],[3090,23],[3114,10],[3125,5],3134,[3160,2],[3168,2],[3205,8],[3214,3],[3218,23],[3242,10],[3253,5],3262,3295,[3296,2],[3313,2],[3333,8],[3342,3],[3346,41],3390,3407,[3424,2],[3450,6],[3461,18],[3482,24],[3507,9],3518,[3520,7],[3585,48],[3634,2],[3648,7],[3713,2],3717,[3719,2],3723,3726,[3732,4],[3737,7],[3745,3],3750,3752,[3754,2],[3757,4],[3762,2],3774,[3776,5],3783,[3804,4],3841,[3904,8],[3913,36],[3976,5],[4096,43],4160,[4176,6],[4186,4],4194,[4197,2],[4206,3],[4213,13],4239,[4256,38],4296,4302,[4304,43],[4348,333],[4682,4],[4688,7],4697,[4698,4],[4704,41],[4746,4],[4752,33],[4786,4],[4792,7],4801,[4802,4],[4808,15],[4824,57],[4882,4],[4888,67],[4992,16],[5024,85],[5121,620],[5743,17],[5761,26],[5792,75],[5870,3],[5888,13],[5902,4],[5920,18],[5952,18],[5984,13],[5998,3],[6016,52],6104,6109,[6176,88],[6272,41],6315,[6320,70],[6400,29],[6480,30],[6512,5],[6528,44],[6593,7],[6656,23],[6688,53],6824,[6917,47],[6981,7],[7043,30],[7086,2],[7098,44],[7168,36],[7245,3],[7258,36],[7401,4],[7406,4],[7413,2],[7424,192],[7680,278],[7960,6],[7968,38],[8008,6],[8016,8],8026,8028,8030,[8031,31],[8064,53],[8118,7],8127,[8130,3],[8134,7],[8144,4],[8150,6],[8160,13],[8178,3],[8182,7],8306,8320,[8336,13],8451,8456,[8458,10],8470,[8473,5],8485,8487,8489,[8490,4],[8495,11],[8508,4],[8517,5],8527,[8544,41],[11264,47],[11312,47],[11360,133],[11499,4],[11506,2],[11520,38],11560,11566,[11568,56],11632,[11648,23],[11680,7],[11688,7],[11696,7],[11704,7],[11712,7],[11720,7],[11728,7],[11736,7],11824,[12293,3],[12321,9],[12337,5],[12344,5],[12353,86],[12445,3],[12449,90],[12540,4],[12549,41],[12593,94],[12704,27],[12784,16],[13312,6582],[19968,20941],[40960,1165],[42192,46],[42240,269],[42512,16],[42538,2],[42560,47],[42623,25],[42656,80],[42775,9],[42786,103],[42891,4],[42896,4],[42912,11],[43000,10],[43011,3],[43015,4],[43020,23],[43072,52],[43138,50],[43250,6],43260,[43274,28],[43312,23],[43360,29],[43396,47],43472,[43520,41],[43584,3],[43588,8],[43616,23],43643,[43648,48],43698,[43701,2],[43705,5],43713,43715,[43739,3],[43744,11],[43762,3],[43777,6],[43785,6],[43793,6],[43808,7],[43816,7],[43968,35],[44032,11172],[55216,23],[55243,49],[63744,366],[64112,106],[64256,7],[64275,5],64286,[64287,10],[64298,13],[64312,5],64319,[64320,2],[64323,2],[64326,108],[64467,363],[64848,64],[64914,54],[65008,12],[65136,5],[65142,135],[65313,26],[65345,26],[65382,89],[65474,6],[65482,6],[65490,6],[65498,3]].forEach(function(o){for(var x=0;x<(o[1]||1);x++)r.push((o[0]||o)+x)});t.exports=r},{}],4:[function(e,t,n){function r(e,t){return h.isUndefined(t)?""+t:h.isNumber(t)&&!isFinite(t)?t.toString():h.isFunction(t)||h.isRegExp(t)?t.toString():t}function i(e,t){return h.isString(e)?e.length=0;o--)if(s[o]!=a[o])return!1;for(o=s.length-1;o>=0;o--)if(i=s[o],!u(e[i],t[i]))return!1;return!0}function f(e,t){return!(!e||!t)&&("[object RegExp]"==Object.prototype.toString.call(t)?t.test(e):e instanceof t||!0===t.call({},e))}function p(e,t,n,r){var i;h.isString(n)&&(r=n,n=null);try{t()}catch(e){i=e}if(r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),e&&!i&&s(i,n,"Missing expected exception"+r),!e&&f(i,n)&&s(i,n,"Got unwanted exception"+r),e&&i&&n&&!f(i,n)||!e&&i)throw i}var h=e("util/"),d=Array.prototype.slice,v=Object.prototype.hasOwnProperty,g=t.exports=a;g.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=o(this),this.generatedMessage=!0);var t=e.stackStartFunction||s;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var n=new Error;if(n.stack){var r=n.stack,i=t.name,a=r.indexOf("\n"+i);if(a>=0){var u=r.indexOf("\n",a+1);r=r.substring(u+1)}this.stack=r}}},h.inherits(g.AssertionError,Error),g.fail=s,g.ok=a,g.equal=function(e,t,n){e!=t&&s(e,t,n,"==",g.equal)},g.notEqual=function(e,t,n){e==t&&s(e,t,n,"!=",g.notEqual)},g.deepEqual=function(e,t,n){u(e,t)||s(e,t,n,"deepEqual",g.deepEqual)},g.notDeepEqual=function(e,t,n){u(e,t)&&s(e,t,n,"notDeepEqual",g.notDeepEqual)},g.strictEqual=function(e,t,n){e!==t&&s(e,t,n,"===",g.strictEqual)},g.notStrictEqual=function(e,t,n){e===t&&s(e,t,n,"!==",g.notStrictEqual)},g.throws=function(e,t,n){p.apply(this,[!0].concat(d.call(arguments)))},g.doesNotThrow=function(e,t){p.apply(this,[!1].concat(d.call(arguments)))},g.ifError=function(e){if(e)throw e};var m=Object.keys||function(e){var t=[];for(var n in e)v.call(e,n)&&t.push(n);return t}},{"util/":9}],5:[function(e,t,n){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function i(e){return"function"==typeof e}function o(e){return"number"==typeof e}function s(e){return"object"==typeof e&&null!==e}function a(e){return void 0===e}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(!o(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,n,r,o,u,c;if(this._events||(this._events={}),"error"===e&&(!this._events.error||s(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;throw TypeError('Uncaught, unspecified "error" event.')}if(n=this._events[e],a(n))return!1;if(i(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:for(r=arguments.length,o=new Array(r-1),u=1;u0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())}return this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function n(){this.removeListener(e,n),r||(r=!0,t.apply(this,arguments))}if(!i(t))throw TypeError("listener must be a function");var r=!1;return n.listener=t,this.on(e,n),this},r.prototype.removeListener=function(e,t){var n,r,o,a;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(n=this._events[e],o=n.length,r=-1,n===t||i(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(s(n)){for(a=o;a-- >0;)if(n[a]===t||n[a].listener&&n[a].listener===t){r=a;break}if(r<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[e],i(n))this.removeListener(e,n);else for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){return this._events&&this._events[e]?i(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.listenerCount=function(e,t){return e._events&&e._events[t]?i(e._events[t])?1:e._events[t].length:0}},{}],6:[function(e,t,n){function r(){if(!a){a=!0;for(var e,t=s.length;t;){e=s,s=[];for(var n=-1;++n=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),v(t)?r.showHidden=t:t&&n._extend(r,t),y(r.showHidden)&&(r.showHidden=!1),y(r.depth)&&(r.depth=2),y(r.colors)&&(r.colors=!1),y(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=o),u(r,e,r.depth)}function o(e,t){var n=i.styles[t];return n?"["+i.colors[n][0]+"m"+e+"["+i.colors[n][1]+"m":e}function s(e,t){return e}function a(e){var t={};return e.forEach(function(e,n){t[e]=!0}),t}function u(e,t,r){if(e.customInspect&&t&&w(t.inspect)&&t.inspect!==n.inspect&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(r,e);return k(i)||(i=u(e,i,r)),i}var o=c(e,t);if(o)return o;var s=Object.keys(t),v=a(s);if(e.showHidden&&(s=Object.getOwnPropertyNames(t)),_(t)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return l(t);if(0===s.length){if(w(t)){var g=t.name?": "+t.name:"";return e.stylize("[Function"+g+"]","special")}if(x(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(E(t))return e.stylize(Date.prototype.toString.call(t),"date");if(_(t))return l(t)}var m="",y=!1,b=["{","}"];if(d(t)&&(y=!0,b=["[","]"]),w(t)&&(m=" [Function"+(t.name?": "+t.name:"")+"]"),x(t)&&(m=" "+RegExp.prototype.toString.call(t)),E(t)&&(m=" "+Date.prototype.toUTCString.call(t)),_(t)&&(m=" "+l(t)),0===s.length&&(!y||0==t.length))return b[0]+m+b[1];if(r<0)return x(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var S;return S=y?f(e,t,r,v,s):s.map(function(n){return p(e,t,r,v,n,y)}),e.seen.pop(),h(S,m,b)}function c(e,t){if(y(t))return e.stylize("undefined","undefined");if(k(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}return m(t)?e.stylize(""+t,"number"):v(t)?e.stylize(""+t,"boolean"):g(t)?e.stylize("null","null"):void 0}function l(e){return"["+Error.prototype.toString.call(e)+"]"}function f(e,t,n,r,i){for(var o=[],s=0,a=t.length;s-1&&(a=o?a.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+a.split("\n").map(function(e){return" "+e}).join("\n")):a=e.stylize("[Circular]","special")),y(s)){if(o&&i.match(/^\d+$/))return a;(s=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=e.stylize(s,"string"))}return s+": "+a}function h(e,t,n){var r=0;return e.reduce(function(e,t){return r++,t.indexOf("\n")>=0&&r++,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60?n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1]:n[0]+t+" "+e.join(", ")+" "+n[1]}function d(e){return Array.isArray(e)}function v(e){return"boolean"==typeof e}function g(e){return null===e}function m(e){return"number"==typeof e}function k(e){return"string"==typeof e}function y(e){return void 0===e}function x(e){return b(e)&&"[object RegExp]"===S(e)}function b(e){return"object"==typeof e&&null!==e}function E(e){return b(e)&&"[object Date]"===S(e)}function _(e){return b(e)&&("[object Error]"===S(e)||e instanceof Error)}function w(e){return"function"==typeof e}function S(e){return Object.prototype.toString.call(e)}function W(e){return e<10?"0"+e.toString(10):e.toString(10)}function A(){var e=new Date,t=[W(e.getHours()),W(e.getMinutes()),W(e.getSeconds())].join(":");return[e.getDate(),G[e.getMonth()],t].join(" ")}function L(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var j=/%[sdj%]/g;n.format=function(e){if(!k(e)){for(var t=[],n=0;n=o)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}}),a=r[n];nt||!n||e===S&&r)return 1;if(e-1;);return n}function l(e,t){for(var n=e.length;n--&&t.indexOf(e.charAt(n))>-1;);return n}function f(e,t){return r(e.criteria,t.criteria)||e.index-t.index}function p(e,t,n){for(var i=-1,o=e.criteria,s=t.criteria,a=o.length,u=n.length;++i=u?c:c*(n[i]?1:-1)}return e.index-t.index}function h(e){return Ne[e]}function d(e){return De[e]}function v(e){return"\\"+He[e]}function g(e,t,n){for(var r=e.length,i=t+(n?0:-1);n?i--:++i=9&&e<=13||32==e||160==e||5760==e||6158==e||e>=8192&&(e<=8202||8232==e||8233==e||8239==e||8287==e||12288==e||65279==e)}function y(e,t){for(var n=-1,r=e.length,i=-1,o=[];++nr&&(r=i)}return r}function Ye(e,t){for(var n=-1,r=e.length;++n=200?Xi(t):null,c=t.length;u&&(s=ze,a=!1,t=u);e:for(;++ii?0:i+n),(r=r===S||r>i?i:+r||0)<0&&(r+=i),i=n>r?0:r>>>0,n>>>=0;ni?0:i+t),(n=n===S||n>i?i:+n||0)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var o=Ur(i);++r=200,u=a?Xi():null,c=[];u?(r=ze,s=!1):(a=!1,u=t?[]:c);e:for(;++n>>1,s=e[o];(n?s<=t:s2&&n[i-2],s=i>2&&n[2],a=i>1&&n[i-1];for("function"==typeof o?(o=zt(o,a,5),i-=2):i-=(o="function"==typeof a?a:null)?1:0,s&&Gn(n[0],n[1],s)&&(o=i<3?null:o,i=1);++r-1?n[s]:S}return dt(n,r,e)}}function sn(e){return function(t,n,r){return t&&t.length?(n=wn(n,r,3),i(t,n,e)):-1}}function an(e){return function(t,n,r){return n=wn(n,r,3),dt(t,n,e,!0)}}function un(e){return function(){var t=arguments.length;if(!t)return function(){return arguments[0]};for(var n,r=e?t:-1,i=0,o=Ur(t);e?r--:++r=t||!Si(t))return"";var i=t-r;return n=null==n?" ":n+"",Or(n,ui(i/n.length)).slice(0,i)}function mn(e,t,n,r){function i(){for(var t=-1,a=arguments.length,u=-1,c=r.length,l=Ur(a+c);++uu))return!1;for(;l&&++ai)||u===r&&u===o)&&(i=u,o=e)}),o}function wn(e,n,r){var i=t.callback||Mr;return i=i===Mr?at:i,r?i(e,n,r):i}function Sn(e,n,r){var i=t.indexOf||Xn;return i=i===Xn?o:i,e?i(e,n,r):i}function Wn(e,t,n){for(var r=-1,i=n?n.length:0;++r-1&&e%1==0&&e-1&&e%1==0&&e<=Ri}function In(e){return e===e&&(0===e?1/e>0:!kr(e))}function Fn(e,t){var n=e[1],r=t[1],i=n|r,o=i>>0,r=Ur(n);++t-1:Sn(e,t,n)>-1)}function ar(e,t,n){var r=Po(e)?Xe:wt;return t=wn(t,n,3),r(e,t)}function ur(e,t,n){if(n?Gn(e,t,n):null==t){var r=(e=Dn(e)).length;return r>0?e[Gt(0,r-1)]:S}var i=cr(e);return i.length=Li(t<0?0:+t||0,i.length),i}function cr(e){for(var t=-1,n=(e=Dn(e)).length,r=Ur(n);++t0&&(n=t.apply(this,arguments)),e<=1&&(t=null),n}}function pr(e,t,n){function r(){var n=t-(So()-c);if(n<=0||n>t){a&&ci(a);var i=p;a=f=p=S,i&&(h=So(),u=e.apply(l,s),f||a||(s=l=null))}else f=mi(r,n)}function i(){f&&ci(f),a=f=p=S,(v||d!==t)&&(h=So(),u=e.apply(l,s),f||a||(s=l=null))}function o(){if(s=arguments,c=So(),l=this,p=v&&(f||!g),!1===d)var n=g&&!f;else{a||g||(h=c);var o=d-(c-h),m=o<=0||o>d;m?(a&&(a=ci(a)),h=c,u=e.apply(l,s)):a||(a=mi(i,o))}return m&&f?f=ci(f):f||t===d||(f=mi(r,t)),n&&(m=!0,u=e.apply(l,s)),!m||f||a||(s=l=null),u}var s,a,u,c,l,f,p,h=0,d=!1,v=!0;if("function"!=typeof e)throw new Zr(D);if(t=t<0?0:+t||0,!0===n){var g=!0;v=!1}else kr(n)&&(g=n.leading,d="maxWait"in n&&Ai(+n.maxWait||0,t),v="trailing"in n?n.trailing:v);return o.cancel=function(){f&&ci(f),a&&ci(a),a=f=p=S},o}function hr(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new Zr(D);var n=function(){var r=arguments,i=n.cache,o=t?t.apply(this,r):r[0];if(i.has(o))return i.get(o);var s=e.apply(this,r);return i.set(o,s),s};return n.cache=new hr.Cache,n}function dr(e,t){if("function"!=typeof e)throw new Zr(D);return t=Ai(t===S?e.length-1:+t||0,0),function(){for(var n=arguments,r=-1,i=Ai(n.length-t,0),o=Ur(i);++r-1}function mr(e){return m(e)&&"string"==typeof e.message&&ri.call(e)==Z}function kr(e){var t=typeof e;return"function"==t||!!e&&"object"==t}function yr(e){return null!=e&&(ri.call(e)==X?oi.test(ei.call(e)):m(e)&&Oe.test(e))}function xr(e){return"number"==typeof e||m(e)&&ri.call(e)==K}function br(e){return m(e)&&ri.call(e)==Q||!1}function Er(e){return"string"==typeof e||m(e)&&ri.call(e)==ee}function _r(e){return m(e)&&Vn(e.length)&&!!Re[ri.call(e)]}function wr(e){return st(e,Wr(e))}function Sr(e){return yt(e,Wr(e))}function Wr(e){if(null==e)return[];kr(e)||(e=Hr(e));var t=e.length;t=t&&Vn(t)&&(Po(e)||Ni.nonEnumArgs&&vr(e))&&t||0;for(var n=e.constructor,r=-1,i="function"==typeof n&&n.prototype===e,o=Ur(t),s=t>0;++r>>1,Pi=bi?bi.BYTES_PER_ELEMENT:0,Ri=qr.pow(2,53)-1,Ui=xi&&new xi,Bi={},Ni=t.support={};!function(e){var t=function(){this.x=e},n=[];t.prototype={valueOf:e,y:e};for(var r in new t)n.push(r);Ni.funcDecomp=/\bthis\b/.test(function(){return this}),Ni.funcNames="string"==typeof Dr.name;try{Ni.dom=11===Qr.createDocumentFragment().nodeType}catch(e){Ni.dom=!1}try{Ni.nonEnumArgs=!vi.call(arguments,1)}catch(e){Ni.nonEnumArgs=!0}}(1,0),t.templateSettings={escape:ke,evaluate:ye,interpolate:xe,variable:"",imports:{_:t}};var Di=Ei||function(e,t){return null==t?e:st(t,eo(t),st(t,Xo(t),e))},qi=function(){function t(){}return function(n){if(kr(n)){t.prototype=n;var r=new t;t.prototype=null}return r||e.Object()}}(),zi=Kt(mt),Hi=Kt(kt,!0),$i=Yt(),Ji=Yt(!0),Zi=Ui?function(e,t){return Ui.set(e,t),e}:Ir;ai||(Ht=si&&yi?function(e){var t=e.byteLength,n=bi?li(t/Pi):0,r=n*Pi,i=new si(t);if(n){var o=new bi(i,0,n);o.set(new bi(e,0,n))}return t!=r&&(o=new yi(i,r)).set(new yi(e,r)),i}:Vr(null));var Xi=wi&&gi?function(e){return new qe(e)}:Vr(null),Ki=Ui?function(e){return Ui.get(e)}:Pr,Yi=Ni.funcNames?"constant"==Vr.name?jt("name"):function(e){for(var t=e.name,n=Bi[t],r=n?n.length:0;r--;){var i=n[r],o=i.func;if(null==o||o==e)return i.name}return t}:Vr(""),Qi=jt("length"),eo=fi?function(e){return fi(qn(e))}:Vr([]),to=function(){var e=0,t=0;return function(n,r){var i=So(),o=R-(i-t);if(t=i,o>0){if(++e>=P)return n}else e=0;return Zi(n,r)}}(),no=dr(function(e,t){return Po(e)||vr(e)?lt(e,vt(t,!1,!0)):[]}),ro=sn(),io=sn(!0),oo=dr(function(e,t){e||(e=[]);var n=ot(e,t=vt(t));return Ot(e,t.sort(r)),n}),so=kn(),ao=kn(!0),uo=dr(function(e){return Rt(vt(e,!1,!0))}),co=dr(function(e,t){return Po(e)||vr(e)?lt(e,t):[]}),lo=dr(er),fo=dr(function(e,t){return Vn(e?Qi(e):0)&&(e=Dn(e)),ot(e,vt(t))}),po=Zt(function(e,t,n){ti.call(e,n)?++e[n]:e[n]=1}),ho=on(zi),vo=on(Hi,!0),go=cn($e,zi),mo=cn(function(e,t){for(var n=e.length;n--&&!1!==t(e[n],n,e););return e},Hi),ko=Zt(function(e,t,n){ti.call(e,n)?e[n].push(t):e[n]=[t]}),yo=Zt(function(e,t,n){e[n]=t}),xo=dr(function(e,t,n){var r=-1,i="function"==typeof t,o=Cn(t),s=Qi(e),a=Vn(s)?Ur(s):[];return zi(e,function(e){var s=i?t:o&&null!=e&&e[t];a[++r]=s?s.apply(e,n):Tn(e,t,n)}),a}),bo=Zt(function(e,t,n){e[n?0:1].push(t)},function(){return[[],[]]}),Eo=dn(function(e,t,n,r){var i=-1,o=e.length;for(r&&o&&(n=e[++i]);++i=120?Xi(t&&u):null))}if((n=e.length)<2)return a;var c=e[0],l=-1,f=c?c.length:0,p=r[0];e:for(;++l-1;)ki.call(t,o,1);return t},t.pullAt=oo,t.range=function(e,t,n){n&&Gn(e,t,n)&&(t=n=null),e=+e||0,n=null==n?1:+n||0,null==t?(t=e,e=0):t=+t||0;for(var r=-1,i=Ai(ui((t-e)/(n||1)),0),o=Ur(i);++r=0&&e.indexOf(t,n)==n},t.escape=function(e){return e=a(e),e&&me.test(e)?e.replace(ve,d):e},t.escapeRegExp=jr,t.every=ir,t.find=ho,t.findIndex=ro,t.findKey=qo,t.findLast=vo,t.findLastIndex=io,t.findLastKey=zo,t.findWhere=function(e,t){return ho(e,St(t))},t.first=Zn,t.get=function(e,t,n){var r=null==e?S:xt(e,zn(t),t+"");return r===S?n:r},t.has=function(e,t){if(null==e)return!1;var n=ti.call(e,t);return n||Cn(t)||(e=1==(t=zn(t)).length?e:xt(e,Mt(t,0,-1)),t=Kn(t),n=null!=e&&ti.call(e,t)),n},t.identity=Ir,t.includes=sr,t.indexOf=Xn,t.inRange=function(e,t,n){return t=+t||0,void 0===n?(n=t,t=0):n=+n||0,e>=Li(t,n)&&e=t||!Si(t))return e;var i=(t-r)/2,o=li(i);return(n=gn("",ui(i),n)).slice(0,o)+e+n},t.padLeft=ns,t.padRight=rs,t.parseInt=Tr,t.random=function(e,t,n){n&&Gn(e,t,n)&&(t=n=null);var r=null==e,i=null==t;if(null==n&&(i&&"boolean"==typeof e?(n=e,e=1):"boolean"==typeof t&&(n=t,i=!0)),r&&i&&(t=1,i=!1),e=+e||0,i?(t=e,e=0):t=+t||0,n||e%1||t%1){var o=Gi();return Li(e+o*(t-e+parseFloat("1e-"+((o+"").length-1))),t)}return Gt(e,t)},t.reduce=Eo,t.reduceRight=_o,t.repeat=Or,t.result=function(e,t,n){var r=null==e?S:e[t];return r===S&&(null==e||Cn(t,e)||(r=null==(e=1==(t=zn(t)).length?e:xt(e,Mt(t,0,-1)))?S:e[Kn(t)]),r=r===S?n:r),Uo(r)?r.call(e):r},t.runInContext=w,t.size=function(e){var t=e?Qi(e):0;return Vn(t)?t:Xo(e).length},t.snakeCase=is,t.some=lr,t.sortedIndex=so,t.sortedLastIndex=ao,t.startCase=os,t.startsWith=function(e,t,n){return e=a(e),n=null==n?0:Li(n<0?0:+n||0,e.length),e.lastIndexOf(t,n)==n},t.sum=function(e,t,n){n&&Gn(e,t,n)&&(t=null);var r=wn(),i=null==t;return r===at&&i||(i=!1,t=r(t,n,3)),i?tt(Po(e)?e:Dn(e)):Pt(e,t)},t.template=function(e,n,r){var i=t.templateSettings;r&&Gn(e,n,r)&&(n=r=null),e=a(e),n=it(Di({},r||n),i,rt);var o,s,u=it(Di({},n.imports),i.imports,rt),c=Xo(u),l=Ut(u,c),f=0,p=n.interpolate||Ce,h="__p += '",d=$r((n.escape||Ce).source+"|"+p.source+"|"+(p===xe?Le:Ce).source+"|"+(n.evaluate||Ce).source+"|$","g"),g="//# sourceURL="+("sourceURL"in n?n.sourceURL:"lodash.templateSources["+ ++Pe+"]")+"\n";e.replace(d,function(t,n,r,i,a,u){return r||(r=i),h+=e.slice(f,u).replace(Me,v),n&&(o=!0,h+="' +\n__e("+n+") +\n'"),a&&(s=!0,h+="';\n"+a+";\n__p += '"),r&&(h+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),f=u+t.length,t}),h+="';\n";var m=n.variable;m||(h="with (obj) {\n"+h+"\n}\n"),h=(s?h.replace(fe,""):h).replace(pe,"$1").replace(he,"$1;"),h="function("+(m||"obj")+") {\n"+(m?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(s?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+h+"return __p\n}";var k=ss(function(){return Dr(c,g+"return "+h).apply(S,l)});if(k.source=h,mr(k))throw k;return k},t.trim=Gr,t.trimLeft=function(e,t,n){var r=e;return e=a(e),e?(n?Gn(r,t,n):null==t)?e.slice(b(e)):e.slice(c(e,t+"")):e},t.trimRight=function(e,t,n){var r=e;return e=a(e),e?(n?Gn(r,t,n):null==t)?e.slice(0,E(e)+1):e.slice(0,l(e,t+"")+1):e},t.trunc=function(e,t,n){n&&Gn(e,t,n)&&(t=null);var r=I,i=F;if(null!=t)if(kr(t)){var o="separator"in t?t.separator:o;r="length"in t?+t.length||0:r,i="omission"in t?a(t.omission):i}else r=+t||0;if(e=a(e),r>=e.length)return e;var s=r-i.length;if(s<1)return i;var u=e.slice(0,s);if(null==o)return u+i;if(br(o)){if(e.slice(s).search(o)){var c,l,f=e.slice(0,s);for(o.global||(o=$r(o.source,(je.exec(o)||"")+"g")),o.lastIndex=0;c=o.exec(f);)l=c.index;u=u.slice(0,null==l?s:l)}}else if(e.indexOf(o,s)!=s){var p=u.lastIndexOf(o);p>-1&&(u=u.slice(0,p))}return u+i},t.unescape=function(e){return e=a(e),e&&ge.test(e)?e.replace(de,_):e},t.uniqueId=function(e){var t=++ni;return a(e)+t},t.words=Cr,t.all=ir,t.any=lr,t.contains=sr,t.detect=ho,t.foldl=Eo,t.foldr=_o,t.head=Zn,t.include=sr,t.inject=Eo,Fr(t,function(){var e={};return mt(t,function(n,r){t.prototype[r]||(e[r]=n)}),e}(),!1),t.sample=ur,t.prototype.sample=function(e){return this.__chain__||null!=e?this.thru(function(t){return ur(t,e)}):ur(this.value())},t.VERSION=W,$e(["bind","bindKey","curry","curryRight","partial","partialRight"],function(e){t[e].placeholder=t}),$e(["dropWhile","filter","map","takeWhile"],function(e,t){var n=t!=N,r=t==U;Ne.prototype[e]=function(e,i){var o=this.__filtered__,s=o&&r?new Ne(this):this.clone();return(s.__iteratees__||(s.__iteratees__=[])).push({done:!1,count:0,index:0,iteratee:wn(e,i,1),limit:-1,type:t}),s.__filtered__=o||n,s}}),$e(["drop","take"],function(e,t){var n=e+"While";Ne.prototype[e]=function(n){var r=this.__filtered__,i=r&&!t?this.dropWhile():this.clone();return n=null==n?1:Ai(li(n)||0,0),r?t?i.__takeCount__=Li(i.__takeCount__,n):Kn(i.__iteratees__).limit=n:(i.__views__||(i.__views__=[])).push({size:n,type:e+(i.__dir__<0?"Right":"")}),i},Ne.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()},Ne.prototype[e+"RightWhile"]=function(e,t){return this.reverse()[n](e,t).reverse()}}),$e(["first","last"],function(e,t){var n="take"+(t?"Right":"");Ne.prototype[e]=function(){return this[n](1).value()[0]}}),$e(["initial","rest"],function(e,t){var n="drop"+(t?"":"Right");Ne.prototype[e]=function(){return this[n](1)}}),$e(["pluck","where"],function(e,t){var n=t?"filter":"map",r=t?St:Rr;Ne.prototype[e]=function(e){return this[n](r(e))}}),Ne.prototype.compact=function(){return this.filter(Ir)},Ne.prototype.reject=function(e,t){return e=wn(e,t,1),this.filter(function(t){return!e(t)})},Ne.prototype.slice=function(e,t){var n=(e=null==e?0:+e||0)<0?this.takeRight(-e):this.drop(e);return t!==S&&(n=(t=+t||0)<0?n.dropRight(-t):n.take(t-e)),n},Ne.prototype.toArray=function(){return this.drop(0)},mt(Ne.prototype,function(e,n){var r=t[n];if(r){var i=/^(?:filter|map|reject)|While$/.test(n),o=/^(?:first|last)$/.test(n);t.prototype[n]=function(){var n=arguments,s=(n.length,this.__chain__),a=this.__wrapped__,u=!!this.__actions__.length,c=a instanceof Ne,l=n[0],f=c||Po(a);f&&i&&"function"==typeof l&&1!=l.length&&(c=f=!1);var p=c&&!u;if(o&&!s)return p?e.call(a):r.call(t,this.value());var h=function(e){var i=[e];return hi.apply(i,n),r.apply(t,i)};if(f){var d=p?a:new Ne(this),v=e.apply(d,n);return o||!u&&!v.__actions__||(v.__actions__||(v.__actions__=[])).push({func:rr,args:[h],thisArg:t}),new k(v,s)}return this.thru(h)}}}),$e(["concat","join","pop","push","replace","shift","sort","splice","split","unshift"],function(e){var n=(/^(?:replace|split)$/.test(e)?Yr:Xr)[e],r=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",i=/^(?:join|pop|replace|shift)$/.test(e);t.prototype[e]=function(){var e=arguments;return i&&!this.__chain__?n.apply(this.value(),e):this[r](function(t){return n.apply(t,e)})}}),mt(Ne.prototype,function(e,n){var r=t[n];if(r){var i=r.name;(Bi[i]||(Bi[i]=[])).push({name:n,func:r})}}),Bi[vn(null,L).name]=[{name:"wrapper",func:null}],Ne.prototype.clone=function(){var e=this.__actions__,t=this.__iteratees__,n=this.__views__,r=new Ne(this.__wrapped__);return r.__actions__=e?He(e):null,r.__dir__=this.__dir__,r.__filtered__=this.__filtered__,r.__iteratees__=t?He(t):null,r.__takeCount__=this.__takeCount__,r.__views__=n?He(n):null,r},Ne.prototype.reverse=function(){if(this.__filtered__){var e=new Ne(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},Ne.prototype.value=function(){var e=this.__wrapped__.value();if(!Po(e))return Nt(e,this.__actions__);var t=this.__dir__,n=t<0,r=Wn(0,e.length,this.__views__),i=r.start,o=r.end,s=o-i,a=n?o:i-1,u=Li(s,this.__takeCount__),c=this.__iteratees__,l=c?c.length:0,f=0,p=[];e:for(;s--&&fv.index:a-1?v.count++>=k:!g(d)))continue e}}else{var y=g(d);if(m==N)d=y;else if(!y){if(m==B)continue e;break e}}}p[f++]=d}return p},t.prototype.chain=function(){return nr(this)},t.prototype.commit=function(){return new k(this.value(),this.__chain__)},t.prototype.plant=function(e){for(var t,r=this;r instanceof n;){var i=Hn(r);t?o.__wrapped__=i:t=i;var o=i;r=r.__wrapped__}return o.__wrapped__=e,t},t.prototype.reverse=function(){var e=this.__wrapped__;return e instanceof Ne?(this.__actions__.length&&(e=new Ne(this)),new k(e.reverse(),this.__chain__)):this.thru(function(e){return e.reverse()})},t.prototype.toString=function(){return this.value()+""},t.prototype.run=t.prototype.toJSON=t.prototype.valueOf=t.prototype.value=function(){return Nt(this.__wrapped__,this.__actions__)},t.prototype.collect=t.prototype.map,t.prototype.head=t.prototype.first,t.prototype.select=t.prototype.filter,t.prototype.tail=t.prototype.rest,t}var S,W="3.7.0",A=1,L=2,j=4,T=8,O=16,G=32,C=64,M=128,V=256,I=30,F="...",P=150,R=16,U=0,B=1,N=2,D="Expected a function",q="__lodash_placeholder__",z="[object Arguments]",H="[object Array]",$="[object Boolean]",J="[object Date]",Z="[object Error]",X="[object Function]",K="[object Number]",Y="[object Object]",Q="[object RegExp]",ee="[object String]",te="[object ArrayBuffer]",ne="[object Float32Array]",re="[object Float64Array]",ie="[object Int8Array]",oe="[object Int16Array]",se="[object Int32Array]",ae="[object Uint8Array]",ue="[object Uint8ClampedArray]",ce="[object Uint16Array]",le="[object Uint32Array]",fe=/\b__p \+= '';/g,pe=/\b(__p \+=) '' \+/g,he=/(__e\(.*?\)|\b__t\)) \+\n'';/g,de=/&(?:amp|lt|gt|quot|#39|#96);/g,ve=/[&<>"'`]/g,ge=RegExp(de.source),me=RegExp(ve.source),ke=/<%-([\s\S]+?)%>/g,ye=/<%([\s\S]+?)%>/g,xe=/<%=([\s\S]+?)%>/g,be=/\.|\[(?:[^[\]]+|(["'])(?:(?!\1)[^\n\\]|\\.)*?)\1\]/,Ee=/^\w*$/,_e=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,we=/[.*+?^${}()|[\]\/\\]/g,Se=RegExp(we.source),We=/[\u0300-\u036f\ufe20-\ufe23]/g,Ae=/\\(\\)?/g,Le=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,je=/\w*$/,Te=/^0[xX]/,Oe=/^\[object .+?Constructor\]$/,Ge=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Ce=/($^)/,Me=/['\n\r\u2028\u2029\\]/g,Ve=function(){var e="[A-Z\\xc0-\\xd6\\xd8-\\xde]",t="[a-z\\xdf-\\xf6\\xf8-\\xff]+";return RegExp(e+"+(?="+e+t+")|"+e+"?"+t+"|"+e+"+|[0-9]+","g")}(),Ie=" \t\v\f \ufeff\n\r\u2028\u2029 ᠎              ",Fe=["Array","ArrayBuffer","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Math","Number","Object","RegExp","Set","String","_","clearTimeout","document","isFinite","parseInt","setTimeout","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","window"],Pe=-1,Re={};Re[ne]=Re[re]=Re[ie]=Re[oe]=Re[se]=Re[ae]=Re[ue]=Re[ce]=Re[le]=!0,Re[z]=Re[H]=Re[te]=Re[$]=Re[J]=Re[Z]=Re[X]=Re["[object Map]"]=Re[K]=Re[Y]=Re[Q]=Re["[object Set]"]=Re[ee]=Re["[object WeakMap]"]=!1;var Ue={};Ue[z]=Ue[H]=Ue[te]=Ue[$]=Ue[J]=Ue[ne]=Ue[re]=Ue[ie]=Ue[oe]=Ue[se]=Ue[K]=Ue[Y]=Ue[Q]=Ue[ee]=Ue[ae]=Ue[ue]=Ue[ce]=Ue[le]=!0,Ue[Z]=Ue[X]=Ue["[object Map]"]=Ue["[object Set]"]=Ue["[object WeakMap]"]=!1;var Be={leading:!1,maxWait:0,trailing:!1},Ne={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss"},De={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},qe={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"},ze={function:!0,object:!0},He={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},$e=ze[typeof n]&&n&&!n.nodeType&&n,Je=ze[typeof t]&&t&&!t.nodeType&&t,Ze=$e&&Je&&"object"==typeof e&&e&&e.Object&&e,Xe=ze[typeof self]&&self&&self.Object&&self,Ke=ze[typeof window]&&window&&window.Object&&window,Ye=Je&&Je.exports===$e&&$e,Qe=Ze||Ke!==(this&&this.window)&&Ke||Xe||this,et=w();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(Qe._=et,define(function(){return et})):$e&&Je?Ye?(Je.exports=et)._=et:$e._=et:Qe._=et}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],13:[function(e,t,n){"use strict";function r(e){return/^[0-9a-fA-F]+$/.test(e)}function i(e){return 1===e.length&&r(e)}function o(){var e=[];return{push:function(t){e.push(t)},check:function(){for(var t=0;t0&&this.context[this.context.length-1].type===e},pushContext:function(e){this.context.push({type:e})},popContext:function(){return this.context.pop()},isContext:function(e){return this.context.length>0&&this.context[this.context.length-1]===e},currentContext:function(){return this.context.length>0&&this.context[this.context.length-1]},getLines:function(){return this._lines=l.lines,this._lines},setLines:function(e){this._lines=e,l.lines=this._lines},peek:function(e){return this.input.charAt(e||0)},skip:function(e){e=e||1,this.char+=e,this.input=this.input.slice(e)},on:function(e,t){e.split(" ").forEach(function(e){this.emitter.on(e,t)}.bind(this))},trigger:function(){this.emitter.emit.apply(this.emitter,Array.prototype.slice.call(arguments))},triggerAsync:function(e,t,n,r){n.push(function(){r()&&this.trigger(e,t)}.bind(this))},scanPunctuator:function(){var e,t,n,r=this.peek();switch(r){case".":if(/^[0-9]$/.test(this.peek(1)))return null;if("."===this.peek(1)&&"."===this.peek(2))return{type:g.Punctuator,value:"..."};case"(":case")":case";":case",":case"[":case"]":case":":case"~":case"?":return{type:g.Punctuator,value:r};case"{":return this.pushContext(m.Block),{type:g.Punctuator,value:r};case"}":return this.inContext(m.Block)&&this.popContext(),{type:g.Punctuator,value:r};case"#":return{type:g.Punctuator,value:r};case"":return null}return e=this.peek(1),t=this.peek(2),n=this.peek(3),">"===r&&">"===e&&">"===t&&"="===n?{type:g.Punctuator,value:">>>="}:"="===r&&"="===e&&"="===t?{type:g.Punctuator,value:"==="}:"!"===r&&"="===e&&"="===t?{type:g.Punctuator,value:"!=="}:">"===r&&">"===e&&">"===t?{type:g.Punctuator,value:">>>"}:"<"===r&&"<"===e&&"="===t?{type:g.Punctuator,value:"<<="}:">"===r&&">"===e&&"="===t?{type:g.Punctuator,value:">>="}:"="===r&&">"===e?{type:g.Punctuator,value:r+e}:r===e&&"+-<>&|".indexOf(r)>=0?{type:g.Punctuator,value:r+e}:"<>=!+-*%&|^/".indexOf(r)>=0?"="===e?{type:g.Punctuator,value:r+e}:{type:g.Punctuator,value:r}:null},scanComments:function(e){function t(e,t,n){var r=["jshint","jslint","members","member","globals","global","exported"],i=!1,o=e+t,s="plain";return(n=n||{}).isMultiline&&(o+="*/"),t=t.replace(/\n/g," "),"/*"===e&&c.fallsThrough.test(t)&&(i=!0,s="falls through"),r.forEach(function(n){if(!i&&("//"!==e||"jshint"===n)&&(" "===t.charAt(n.length)&&t.substr(0,n.length)===n&&(i=!0,e+=n,t=t.substr(n.length)),i||" "!==t.charAt(0)||" "!==t.charAt(n.length+1)||t.substr(1,n.length)!==n||(i=!0,e=e+" "+n,t=t.substr(n.length+1)),i))switch(n){case"member":s="members";break;case"global":s="globals";break;default:var r=t.split(":").map(function(e){return e.replace(/^\s+/,"").replace(/\s+$/,"")});if(2===r.length)switch(r[0]){case"ignore":switch(r[1]){case"start":a.ignoringLinterErrors=!0,i=!1;break;case"end":a.ignoringLinterErrors=!1,i=!1}}s=n}}),{type:g.Comment,commentType:s,value:o,body:t,isSpecial:i,isMultiline:n.isMultiline||!1,isMalformed:n.isMalformed||!1}}var n=this.peek(),r=this.peek(1),i=this.input.substr(2),o=this.line,s=this.char,a=this;if("*"===n&&"/"===r)return this.trigger("error",{code:"E018",line:o,character:s}),this.skip(2),null;if("/"!==n||"*"!==r&&"/"!==r)return null;if("/"===r)return this.skip(this.input.length),t("//",i);var u="";if("*"===r){for(this.inComment=!0,this.skip(2);"*"!==this.peek()||"/"!==this.peek(1);)if(""===this.peek()){if(u+="\n",!this.nextLine(e))return this.trigger("error",{code:"E017",line:o,character:s}),this.inComment=!1,t("/*",u,{isMultiline:!0,isMalformed:!0})}else u+=this.peek(),this.skip();return this.skip(2),this.inComment=!1,t("/*",u,{isMultiline:!0})}},scanKeyword:function(){var e=/^[a-zA-Z_$][a-zA-Z0-9_$]*/.exec(this.input),t=["if","in","do","var","for","new","try","let","this","else","case","void","with","enum","while","break","catch","throw","const","yield","class","super","return","typeof","delete","switch","export","import","default","finally","extends","function","continue","debugger","instanceof"];return e&&t.indexOf(e[0])>=0?{type:g.Keyword,value:e[0]}:null},scanIdentifier:function(){function e(e){return d.indexOf(e)>-1}function t(t){return e(t)||v.indexOf(t)>-1}var n,i,o="",s=0,a=function(){if(s+=1,"u"!==this.peek(s))return null;var e,n=this.peek(s+1)+this.peek(s+2)+this.peek(s+3)+this.peek(s+4);return r(n)?(e=parseInt(n,16),h[e]||t(e)?(s+=5,"\\u"+n):null):null}.bind(this),u=function(){var t=this.peek(s),n=t.charCodeAt(0);return 92===n?a():n<128?p[n]?(s+=1,t):null:e(n)?(s+=1,t):null}.bind(this),c=function(){var e=this.peek(s),n=e.charCodeAt(0);return 92===n?a():n<128?h[n]?(s+=1,e):null:t(n)?(s+=1,e):null}.bind(this);if(null===(i=u()))return null;for(o=i;null!==(i=c());)o+=i;switch(o){case"true":case"false":n=g.BooleanLiteral;break;case"null":n=g.NullLiteral;break;default:n=g.Identifier}return{type:n,value:function(e){return e.replace(/\\u([0-9a-fA-F]{4})/g,function(e,t){return String.fromCharCode(parseInt(t,16))})}(o),text:o,tokenLength:o.length}},scanNumericLiteral:function(e){function t(e){return/^[0-9]$/.test(e)}function n(e){return/^[0-7]$/.test(e)}function r(e){return"$"===e||"_"===e||"\\"===e||e>="a"&&e<="z"||e>="A"&&e<="Z"}var o=0,s="",a=this.input.length,u=this.peek(o),c=t,f=10,p=!1;if("."!==u&&!t(u))return null;if("."!==u){for(s=this.peek(o),o+=1,u=this.peek(o),"0"===s&&("x"!==u&&"X"!==u||(c=i,f=16,o+=1,s+=u),"o"!==u&&"O"!==u||(c=n,f=8,l.inES6(!0)||this.triggerAsync("warning",{code:"W119",line:this.line,character:this.char,data:["Octal integer literal","6"]},e,function(){return!0}),o+=1,s+=u),"b"!==u&&"B"!==u||(c=function(e){return/^[01]$/.test(e)},f=2,l.inES6(!0)||this.triggerAsync("warning",{code:"W119",line:this.line,character:this.char,data:["Binary integer literal","6"]},e,function(){return!0}),o+=1,s+=u),n(u)&&(c=n,f=8,p=!0,!1,o+=1,s+=u),!n(u)&&t(u)&&(o+=1,s+=u));o=0&&o<=7&&l.isStrict()});break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":i="\\"+i,this.triggerAsync("warning",{code:"W115",line:this.line,character:this.char},e,function(){return l.isStrict()});break;case"u":var s=this.input.substr(1,4),a=parseInt(s,16);r(s)||this.trigger("warning",{code:"W052",line:this.line,character:this.char,data:["u"+s]}),i=String.fromCharCode(a),n=5;break;case"v":this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\v"]},e,function(){return l.jsonMode}),i="\v";break;case"x":var u=parseInt(this.input.substr(1,2),16);this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\x-"]},e,function(){return l.jsonMode}),i=String.fromCharCode(u),n=3;break;case"\\":i="\\\\";break;case'"':i='\\"';break;case"/":break;case"":t=!0,i=""}return{char:i,jump:n,allowNewLine:t}},scanTemplateLiteral:function(e){var t,n,r="",i=this.line,o=this.char,s=this.templateStarts.length;if("`"===this.peek())l.inES6(!0)||this.triggerAsync("warning",{code:"W119",line:this.line,character:this.char,data:["template literal syntax","6"]},e,function(){return!0}),t=g.TemplateHead,this.templateStarts.push({line:this.line,char:this.char}),s=this.templateStarts.length,this.skip(1),this.pushContext(m.Template);else{if(!this.inContext(m.Template)||"}"!==this.peek())return null;t=g.TemplateMiddle}for(;"`"!==this.peek();){for(;""===(n=this.peek());)if(r+="\n",!this.nextLine(e)){var a=this.templateStarts.pop();return this.trigger("error",{code:"E052",line:a.line,character:a.char}),{type:t,value:r,startLine:i,startChar:o,isUnclosed:!0,depth:s,context:this.popContext()}}if("$"===n&&"{"===this.peek(1))return r+="${",this.skip(2),{type:t,value:r,startLine:i,startChar:o,isUnclosed:!1,depth:s,context:this.currentContext()};if("\\"===n){var u=this.scanEscapeSequence(e);r+=u.char,this.skip(u.jump)}else"`"!==n&&(r+=n,this.skip(1))}return t=t===g.TemplateHead?g.NoSubstTemplate:g.TemplateTail,this.skip(1),this.templateStarts.pop(),{type:t,value:r,startLine:i,startChar:o,isUnclosed:!1,depth:s,context:this.popContext()}},scanStringLiteral:function(e){var t=this.peek();if('"'!==t&&"'"!==t)return null;this.triggerAsync("warning",{code:"W108",line:this.line,character:this.char},e,function(){return l.jsonMode&&'"'!==t});var n="",r=this.line,i=this.char,o=!1;for(this.skip();this.peek()!==t;)if(""===this.peek()){if(o?(o=!1,this.triggerAsync("warning",{code:"W043",line:this.line,character:this.char},e,function(){return!l.option.multistr}),this.triggerAsync("warning",{code:"W042",line:this.line,character:this.char},e,function(){return l.jsonMode&&l.option.multistr})):this.trigger("warning",{code:"W112",line:this.line,character:this.char}),!this.nextLine(e))return this.trigger("error",{code:"E029",line:r,character:i}),{type:g.StringLiteral,value:n,startLine:r,startChar:i,isUnclosed:!0,quote:t}}else{o=!1;var s=this.peek(),a=1;if(s<" "&&this.triggerAsync("warning",{code:"W113",line:this.line,character:this.char,data:[""]},e,function(){return!0}),"\\"===s){var u=this.scanEscapeSequence(e);s=u.char,a=u.jump,o=u.allowNewLine}n+=s,this.skip(a)}return this.skip(),{type:g.StringLiteral,value:n,startLine:r,startChar:i,isUnclosed:!1,quote:t}},scanRegExp:function(e){var t,n,r=0,i=this.input.length,o=this.peek(),s=o,a="",u=[],c=!1,f=!1,p=function(){o<" "&&(c=!0,this.triggerAsync("warning",{code:"W048",line:this.line,character:this.char},e,function(){return!0})),"<"===o&&(c=!0,this.triggerAsync("warning",{code:"W049",line:this.line,character:this.char,data:[o]},e,function(){return!0}))}.bind(this);if(!this.prereg||"/"!==o)return null;for(r+=1,t=!1;r-1&&(n="Duplicate RegExp flag")):u.push(o),s+=o,r+=1;try{new RegExp(a,u.join(""))}catch(e){n=e.message}return n&&(c=!0,this.trigger("error",{code:"E016",line:this.line,character:this.char,data:[n]})),{type:g.RegExp,value:s,flags:u,isMalformed:c}},scanNonBreakingSpaces:function(){return l.option.nonbsp?this.input.search(/(\u00A0)/):-1},scanUnsafeChars:function(){return this.input.search(c.unsafeChars)},next:function(e){for(this.from=this.char;/\s/.test(this.peek());)this.from+=1,this.skip();var t=this.scanComments(e)||this.scanStringLiteral(e)||this.scanTemplateLiteral(e);return t||(t=this.scanRegExp(e)||this.scanPunctuator()||this.scanKeyword()||this.scanIdentifier()||this.scanNumericLiteral(e),t?(this.skip(t.tokenLength||t.value.length),t):null)},nextLine:function(e){var t;if(this.line>=this.getLines().length)return!1;this.input=this.getLines()[this.line],this.line+=1,this.char=1,this.from=1;var n=this.input.trim(),r=function(){return a.some(arguments,function(e){return 0===n.indexOf(e)})};return!0===this.ignoringLinterErrors&&(r("/*","//")||this.inComment&&function(){return a.some(arguments,function(e){return-1!==n.indexOf(e,n.length-e.length)})}("*/")||(this.input="")),(t=this.scanNonBreakingSpaces())>=0&&this.triggerAsync("warning",{code:"W125",line:this.line,character:t+1},e,function(){return!0}),this.input=this.input.replace(/\t/g,l.tab),(t=this.scanUnsafeChars())>=0&&this.triggerAsync("warning",{code:"W100",line:this.line,character:t},e,function(){return!0}),!this.ignoringLinterErrors&&l.option.maxlen&&l.option.maxlen=0;--t){var n=k[t]["(labels)"];if(n[e])return n}}function d(e){for(var t=k.length-1;t>=0;t--){var n=k[t];if(n["(usages)"][e])return n["(usages)"][e];if(n===y)break}return!1}function v(t,n){if("outer"===e.option.shadow)for(var r="global"===y["(type)"],i="functionparams"===m["(type)"],o=!r,s=0;s1?k[k.length-2]:null,a=m===y,l="functionparams"===m["(type)"],p="functionouter"===m["(type)"],h=m["(usages)"],d=m["(labels)"],v=Object.keys(h);for(h.__proto__&&-1===v.indexOf("__proto__")&&v.push("__proto__"),t=0;t=0;i--){var o=k[i];if(o["(labels)"][e]&&(!n||o["(labels)"][e]["(blockscoped)"]))return o["(labels)"][e]["(type)"];var s=r?k[i-1]:o;if(s&&"functionparams"===s["(type)"])return null}return null},hasBreakLabel:function(e){for(var t=k.length-1;t>=0;t--){var n=k[t];if(n["(breakLabels)"][e])return!0;if("functionparams"===n["(type)"])return!1}return!1},has:function(e,t){return Boolean(this.labeltype(e,t))},add:function(e,t,n,r){m["(labels)"][e]={"(type)":t,"(token)":n,"(blockscoped)":!1,"(function)":y,"(unused)":r}}},block:{isGlobal:function(){return"global"===m["(type)"]},use:function(t,n){var r=y["(parent)"];r&&r["(labels)"][t]&&"param"===r["(labels)"][t]["(type)"]&&(W.funct.has(t,{excludeParams:!0,onlyBlockscoped:!0})||(r["(labels)"][t]["(unused)"]=!1)),n&&(e.ignored.W117||!1===e.option.undef)&&(n.ignoreUndef=!0),l(t),m["(usages)"][t]["(onlyUsedSubFunction)"]=!1,n&&(n["(function)"]=y,m["(usages)"][t]["(tokens)"].push(n));var i=m["(labels)"][t];i&&i["(blockscoped)"]&&!i["(initialized)"]&&c("E056",n,t,i["(type)"])},reassign:function(t,n){n.ignoreW020=e.ignored.W020,n.ignoreW021=e.ignored.W021,this.modify(t,n),m["(usages)"][t]["(reassigned)"].push(n)},modify:function(e,t){l(e),m["(usages)"][e]["(onlyUsedSubFunction)"]=!1,m["(usages)"][e]["(modified)"].push(t)},add:function(e,t,n,r,i){m["(labels)"][e]={"(type)":t,"(token)":n,"(initialized)":!!i,"(blockscoped)":!0,"(unused)":r}},addBreakLabel:function(t,n){var r=n.token;W.funct.hasBreakLabel(t)?u("E011",r,t):"outer"===e.option.shadow&&(W.funct.has(t)?u("W004",r,t):v(t,r)),m["(breakLabels)"][t]=r}}};return W}},{events:5,lodash:12}],19:[function(e,t,n){"use strict";var r=e("./name-stack.js"),i={syntax:{},isStrict:function(){return this.directive["use strict"]||this.inClassBody||this.option.module||"implied"===this.option.strict},stmtMissingStrict:function(){return"global"===this.option.strict||!1!==this.option.strict&&!!this.option.globalstrict},allowsGlobalUsd:function(){return"global"===this.option.strict||this.option.globalstrict||this.option.module||this.impliedClosure()},impliedClosure:function(){return this.option.node||this.option.phantom||this.option.browserify},inMoz:function(){return this.option.moz},inES6:function(e){return e?6===this.esVersion:this.option.moz||this.esVersion>=6},inES5:function(e){return e?!(this.esVersion&&5!==this.esVersion||this.option.moz):!this.esVersion||this.esVersion>=5||this.option.moz},inferEsVersion:function(){var e=null;if(this.option.esversion){if(this.option.es3?e="es3":this.option.es5?e="es5":this.option.esnext&&(e="esnext"),e)return e;2015===this.option.esversion?this.esVersion=6:this.esVersion=this.option.esversion}else this.option.es3?this.esVersion=3:this.option.esnext&&(this.esVersion=6);return null},reset:function(){this.tokens={prev:null,next:null,curr:null},this.option={},this.esVersion=5,this.funct=null,this.ignored={},this.directive={},this.jsonMode=!1,this.jsonWarnings=[],this.lines=[],this.tab="",this.cache={},this.ignoredLines={},this.forinifcheckneeded=!1,this.nameStack=new r,this.inClassBody=!1}};n.state=i},{"./name-stack.js":15}],20:[function(e,t,n){"use strict";n.register=function(e){e.on("Identifier",function(t){e.getOption("proto")||"__proto__"===t.name&&e.warn("W103",{line:t.line,char:t.char,data:[t.name,"6"]})}),e.on("Identifier",function(t){e.getOption("iterator")||"__iterator__"===t.name&&e.warn("W103",{line:t.line,char:t.char,data:[t.name]})}),e.on("Identifier",function(t){e.getOption("camelcase")&&t.name.replace(/^_+|_+$/g,"").indexOf("_")>-1&&!t.name.match(/^[A-Z0-9_]*$/)&&e.warn("W106",{line:t.line,char:t.char,data:[t.name]})}),e.on("String",function(t){var n,r=e.getOption("quotmark");r&&("single"===r&&"'"!==t.quote&&(n="W109"),"double"===r&&'"'!==t.quote&&(n="W108"),!0===r&&(e.getCache("quotmark")||e.setCache("quotmark",t.quote),e.getCache("quotmark")!==t.quote&&(n="W110")),n&&e.warn(n,{line:t.line,char:t.char}))}),e.on("Number",function(t){"."===t.value.charAt(0)&&e.warn("W008",{line:t.line,char:t.char,data:[t.value]}),"."===t.value.substr(t.value.length-1)&&e.warn("W047",{line:t.line,char:t.char,data:[t.value]}),/^00+/.test(t.value)&&e.warn("W046",{line:t.line,char:t.char,data:[t.value]})}),e.on("String",function(t){var n=/^(?:javascript|jscript|ecmascript|vbscript|livescript)\s*:/i;e.getOption("scripturl")||n.test(t.value)&&e.warn("W107",{line:t.line,char:t.char})})}},{}],21:[function(e,t,n){"use strict";n.reservedVars={arguments:!1,NaN:!1},n.ecmaIdentifiers={3:{Array:!1,Boolean:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,eval:!1,EvalError:!1,Function:!1,hasOwnProperty:!1,isFinite:!1,isNaN:!1,Math:!1,Number:!1,Object:!1,parseInt:!1,parseFloat:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,String:!1,SyntaxError:!1,TypeError:!1,URIError:!1},5:{JSON:!1},6:{ArrayBuffer:!1,DataView:!1,Float32Array:!1,Float64Array:!1,Int8Array:!1,Int16Array:!1,Int32Array:!1,Map:!1,Promise:!1,Proxy:!1,Reflect:!1,Set:!1,Symbol:!1,Uint8Array:!1,Uint16Array:!1,Uint32Array:!1,Uint8ClampledArray:!1,WeakMap:!1,WeakSet:!1}},n.browser={Audio:!1,Blob:!1,addEventListener:!1,applicationCache:!1,atob:!1,blur:!1,btoa:!1,cancelAnimationFrame:!1,CanvasGradient:!1,CanvasPattern:!1,CanvasRenderingContext2D:!1,CSS:!1,clearInterval:!1,clearTimeout:!1,close:!1,closed:!1,Comment:!1,CompositionEvent:!1,CustomEvent:!1,DOMParser:!1,defaultStatus:!1,Document:!1,document:!1,DocumentFragment:!1,Element:!1,ElementTimeControl:!1,Event:!1,event:!1,fetch:!1,File:!1,FileList:!1,FileReader:!1,FormData:!1,focus:!1,frames:!1,getComputedStyle:!1,HTMLElement:!1,HTMLAnchorElement:!1,HTMLBaseElement:!1,HTMLBlockquoteElement:!1,HTMLBodyElement:!1,HTMLBRElement:!1,HTMLButtonElement:!1,HTMLCanvasElement:!1,HTMLCollection:!1,HTMLDirectoryElement:!1,HTMLDivElement:!1,HTMLDListElement:!1,HTMLFieldSetElement:!1,HTMLFontElement:!1,HTMLFormElement:!1,HTMLFrameElement:!1,HTMLFrameSetElement:!1,HTMLHeadElement:!1,HTMLHeadingElement:!1,HTMLHRElement:!1,HTMLHtmlElement:!1,HTMLIFrameElement:!1,HTMLImageElement:!1,HTMLInputElement:!1,HTMLIsIndexElement:!1,HTMLLabelElement:!1,HTMLLayerElement:!1,HTMLLegendElement:!1,HTMLLIElement:!1,HTMLLinkElement:!1,HTMLMapElement:!1,HTMLMenuElement:!1,HTMLMetaElement:!1,HTMLModElement:!1,HTMLObjectElement:!1,HTMLOListElement:!1,HTMLOptGroupElement:!1,HTMLOptionElement:!1,HTMLParagraphElement:!1,HTMLParamElement:!1,HTMLPreElement:!1,HTMLQuoteElement:!1,HTMLScriptElement:!1,HTMLSelectElement:!1,HTMLStyleElement:!1,HTMLTableCaptionElement:!1,HTMLTableCellElement:!1,HTMLTableColElement:!1,HTMLTableElement:!1,HTMLTableRowElement:!1,HTMLTableSectionElement:!1,HTMLTemplateElement:!1,HTMLTextAreaElement:!1,HTMLTitleElement:!1,HTMLUListElement:!1,HTMLVideoElement:!1,history:!1,Image:!1,Intl:!1,length:!1,localStorage:!1,location:!1,matchMedia:!1,MediaRecorder:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,MouseEvent:!1,moveBy:!1,moveTo:!1,MutationObserver:!1,name:!1,Node:!1,NodeFilter:!1,NodeList:!1,Notification:!1,navigator:!1,onbeforeunload:!0,onblur:!0,onerror:!0,onfocus:!0,onload:!0,onresize:!0,onunload:!0,open:!1,openDatabase:!1,opener:!1,Option:!1,parent:!1,performance:!1,print:!1,Range:!1,requestAnimationFrame:!1,removeEventListener:!1,resizeBy:!1,resizeTo:!1,screen:!1,scroll:!1,scrollBy:!1,scrollTo:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,SharedWorker:!1,status:!1,Storage:!1,SVGAElement:!1,SVGAltGlyphDefElement:!1,SVGAltGlyphElement:!1,SVGAltGlyphItemElement:!1,SVGAngle:!1,SVGAnimateColorElement:!1,SVGAnimateElement:!1,SVGAnimateMotionElement:!1,SVGAnimateTransformElement:!1,SVGAnimatedAngle:!1,SVGAnimatedBoolean:!1,SVGAnimatedEnumeration:!1,SVGAnimatedInteger:!1,SVGAnimatedLength:!1,SVGAnimatedLengthList:!1,SVGAnimatedNumber:!1,SVGAnimatedNumberList:!1,SVGAnimatedPathData:!1,SVGAnimatedPoints:!1,SVGAnimatedPreserveAspectRatio:!1,SVGAnimatedRect:!1,SVGAnimatedString:!1,SVGAnimatedTransformList:!1,SVGAnimationElement:!1,SVGCSSRule:!1,SVGCircleElement:!1,SVGClipPathElement:!1,SVGColor:!1,SVGColorProfileElement:!1,SVGColorProfileRule:!1,SVGComponentTransferFunctionElement:!1,SVGCursorElement:!1,SVGDefsElement:!1,SVGDescElement:!1,SVGDocument:!1,SVGElement:!1,SVGElementInstance:!1,SVGElementInstanceList:!1,SVGEllipseElement:!1,SVGExternalResourcesRequired:!1,SVGFEBlendElement:!1,SVGFEColorMatrixElement:!1,SVGFEComponentTransferElement:!1,SVGFECompositeElement:!1,SVGFEConvolveMatrixElement:!1,SVGFEDiffuseLightingElement:!1,SVGFEDisplacementMapElement:!1,SVGFEDistantLightElement:!1,SVGFEFloodElement:!1,SVGFEFuncAElement:!1,SVGFEFuncBElement:!1,SVGFEFuncGElement:!1,SVGFEFuncRElement:!1,SVGFEGaussianBlurElement:!1,SVGFEImageElement:!1,SVGFEMergeElement:!1,SVGFEMergeNodeElement:!1,SVGFEMorphologyElement:!1,SVGFEOffsetElement:!1,SVGFEPointLightElement:!1,SVGFESpecularLightingElement:!1,SVGFESpotLightElement:!1,SVGFETileElement:!1,SVGFETurbulenceElement:!1,SVGFilterElement:!1,SVGFilterPrimitiveStandardAttributes:!1,SVGFitToViewBox:!1,SVGFontElement:!1,SVGFontFaceElement:!1,SVGFontFaceFormatElement:!1,SVGFontFaceNameElement:!1,SVGFontFaceSrcElement:!1,SVGFontFaceUriElement:!1,SVGForeignObjectElement:!1,SVGGElement:!1,SVGGlyphElement:!1,SVGGlyphRefElement:!1,SVGGradientElement:!1,SVGHKernElement:!1,SVGICCColor:!1,SVGImageElement:!1,SVGLangSpace:!1,SVGLength:!1,SVGLengthList:!1,SVGLineElement:!1,SVGLinearGradientElement:!1,SVGLocatable:!1,SVGMPathElement:!1,SVGMarkerElement:!1,SVGMaskElement:!1,SVGMatrix:!1,SVGMetadataElement:!1,SVGMissingGlyphElement:!1,SVGNumber:!1,SVGNumberList:!1,SVGPaint:!1,SVGPathElement:!1,SVGPathSeg:!1,SVGPathSegArcAbs:!1,SVGPathSegArcRel:!1,SVGPathSegClosePath:!1,SVGPathSegCurvetoCubicAbs:!1,SVGPathSegCurvetoCubicRel:!1,SVGPathSegCurvetoCubicSmoothAbs:!1,SVGPathSegCurvetoCubicSmoothRel:!1,SVGPathSegCurvetoQuadraticAbs:!1,SVGPathSegCurvetoQuadraticRel:!1,SVGPathSegCurvetoQuadraticSmoothAbs:!1,SVGPathSegCurvetoQuadraticSmoothRel:!1,SVGPathSegLinetoAbs:!1,SVGPathSegLinetoHorizontalAbs:!1,SVGPathSegLinetoHorizontalRel:!1,SVGPathSegLinetoRel:!1,SVGPathSegLinetoVerticalAbs:!1,SVGPathSegLinetoVerticalRel:!1,SVGPathSegList:!1,SVGPathSegMovetoAbs:!1,SVGPathSegMovetoRel:!1,SVGPatternElement:!1,SVGPoint:!1,SVGPointList:!1,SVGPolygonElement:!1,SVGPolylineElement:!1,SVGPreserveAspectRatio:!1,SVGRadialGradientElement:!1,SVGRect:!1,SVGRectElement:!1,SVGRenderingIntent:!1,SVGSVGElement:!1,SVGScriptElement:!1,SVGSetElement:!1,SVGStopElement:!1,SVGStringList:!1,SVGStylable:!1,SVGStyleElement:!1,SVGSwitchElement:!1,SVGSymbolElement:!1,SVGTRefElement:!1,SVGTSpanElement:!1,SVGTests:!1,SVGTextContentElement:!1,SVGTextElement:!1,SVGTextPathElement:!1,SVGTextPositioningElement:!1,SVGTitleElement:!1,SVGTransform:!1,SVGTransformList:!1,SVGTransformable:!1,SVGURIReference:!1,SVGUnitTypes:!1,SVGUseElement:!1,SVGVKernElement:!1,SVGViewElement:!1,SVGViewSpec:!1,SVGZoomAndPan:!1,Text:!1,TextDecoder:!1,TextEncoder:!1,TimeEvent:!1,top:!1,URL:!1,WebGLActiveInfo:!1,WebGLBuffer:!1,WebGLContextEvent:!1,WebGLFramebuffer:!1,WebGLProgram:!1,WebGLRenderbuffer:!1,WebGLRenderingContext:!1,WebGLShader:!1,WebGLShaderPrecisionFormat:!1,WebGLTexture:!1,WebGLUniformLocation:!1,WebSocket:!1,window:!1,Window:!1,Worker:!1,XDomainRequest:!1,XMLHttpRequest:!1,XMLSerializer:!1,XPathEvaluator:!1,XPathException:!1,XPathExpression:!1,XPathNamespace:!1,XPathNSResolver:!1,XPathResult:!1},n.devel={alert:!1,confirm:!1,console:!1,Debug:!1,opera:!1,prompt:!1},n.worker={importScripts:!0,onmessage:!0,postMessage:!0,self:!0,FileReaderSync:!0},n.nonstandard={escape:!1,unescape:!1},n.couch={require:!1,respond:!1,getRow:!1,emit:!1,send:!1,start:!1,sum:!1,log:!1,exports:!1,module:!1,provides:!1},n.node={__filename:!1,__dirname:!1,GLOBAL:!1,global:!1,module:!1,require:!1,Buffer:!0,console:!0,exports:!0,process:!0,setTimeout:!0,clearTimeout:!0,setInterval:!0,clearInterval:!0,setImmediate:!0,clearImmediate:!0},n.browserify={__filename:!1,__dirname:!1,global:!1,module:!1,require:!1,Buffer:!0,exports:!0,process:!0},n.phantom={phantom:!0,require:!0,WebPage:!0,console:!0,exports:!0},n.qunit={asyncTest:!1,deepEqual:!1,equal:!1,expect:!1,module:!1,notDeepEqual:!1,notEqual:!1,notOk:!1,notPropEqual:!1,notStrictEqual:!1,ok:!1,propEqual:!1,QUnit:!1,raises:!1,start:!1,stop:!1,strictEqual:!1,test:!1,throws:!1},n.rhino={defineClass:!1,deserialize:!1,gc:!1,help:!1,importClass:!1,importPackage:!1,java:!1,load:!1,loadClass:!1,Packages:!1,print:!1,quit:!1,readFile:!1,readUrl:!1,runCommand:!1,seal:!1,serialize:!1,spawn:!1,sync:!1,toint32:!1,version:!1},n.shelljs={target:!1,echo:!1,exit:!1,cd:!1,pwd:!1,ls:!1,find:!1,cp:!1,rm:!1,mv:!1,mkdir:!1,test:!1,cat:!1,sed:!1,grep:!1,which:!1,dirs:!1,pushd:!1,popd:!1,env:!1,exec:!1,chmod:!1,config:!1,error:!1,tempdir:!1},n.typed={ArrayBuffer:!1,ArrayBufferView:!1,DataView:!1,Float32Array:!1,Float64Array:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1},n.wsh={ActiveXObject:!0,Enumerator:!0,GetObject:!0,ScriptEngine:!0,ScriptEngineBuildVersion:!0,ScriptEngineMajorVersion:!0,ScriptEngineMinorVersion:!0,VBArray:!0,WSH:!0,WScript:!0,XDomainRequest:!0},n.dojo={dojo:!1,dijit:!1,dojox:!1,define:!1,require:!1},n.jquery={$:!1,jQuery:!1},n.mootools={$:!1,$$:!1,Asset:!1,Browser:!1,Chain:!1,Class:!1,Color:!1,Cookie:!1,Core:!1,Document:!1,DomReady:!1,DOMEvent:!1,DOMReady:!1,Drag:!1,Element:!1,Elements:!1,Event:!1,Events:!1,Fx:!1,Group:!1,Hash:!1,HtmlTable:!1,IFrame:!1,IframeShim:!1,InputValidator:!1,instanceOf:!1,Keyboard:!1,Locale:!1,Mask:!1,MooTools:!1,Native:!1,Options:!1,OverText:!1,Request:!1,Scroller:!1,Slick:!1,Slider:!1,Sortables:!1,Spinner:!1,Swiff:!1,Tips:!1,Type:!1,typeOf:!1,URI:!1,Window:!1},n.prototypejs={$:!1,$$:!1,$A:!1,$F:!1,$H:!1,$R:!1,$break:!1,$continue:!1,$w:!1,Abstract:!1,Ajax:!1,Class:!1,Enumerable:!1,Element:!1,Event:!1,Field:!1,Form:!1,Hash:!1,Insertion:!1,ObjectRange:!1,PeriodicalExecuter:!1,Position:!1,Prototype:!1,Selector:!1,Template:!1,Toggle:!1,Try:!1,Autocompleter:!1,Builder:!1,Control:!1,Draggable:!1,Draggables:!1,Droppables:!1,Effect:!1,Sortable:!1,SortableObserver:!1,Sound:!1,Scriptaculous:!1},n.yui={YUI:!1,Y:!1,YUI_config:!1},n.mocha={mocha:!1,describe:!1,xdescribe:!1,it:!1,xit:!1,context:!1,xcontext:!1,before:!1,after:!1,beforeEach:!1,afterEach:!1,suite:!1,test:!1,setup:!1,teardown:!1,suiteSetup:!1,suiteTeardown:!1},n.jasmine={jasmine:!1,describe:!1,xdescribe:!1,it:!1,xit:!1,beforeEach:!1,afterEach:!1,setFixtures:!1,loadFixtures:!1,spyOn:!1,expect:!1,runs:!1,waitsFor:!1,waits:!1,beforeAll:!1,afterAll:!1,fail:!1,fdescribe:!1,fit:!1,pending:!1}},{}],jshint:[function(e,t,n){var r=e("lodash"),i=e("events"),o=e("./vars.js"),s=e("./messages.js"),a=e("./lex.js").Lexer,u=e("./reg.js"),c=e("./state.js").state,l=e("./style.js"),f=e("./options.js"),p=e("./scope-manager.js"),h=(e("console-browserify"),function(){"use strict";function e(e,t){return e=e.trim(),!!/^[+-]W\d{3}$/g.test(e)||(!(-1===f.validNames.indexOf(e)&&"jslint"!==t.type&&!r.has(f.removed,e))||(_("E001",t,e),!1))}function t(e){return"[object String]"===Object.prototype.toString.call(e)}function n(e,t){return!!e&&!(!e.identifier||e.value!==t)}function d(e){if(!e.reserved)return!1;var t=e.meta;if(t&&t.isFutureReservedWord){if(t.moduleOnly&&!c.option.module)return!1;if(c.inES5()){if(!t.es5)return!1;if(t.strictOnly&&!c.option.strict&&!c.isStrict())return!1;if(e.isProperty)return!1}}return!0}function v(e,t){return e.replace(/\{([^{}]*)\}/g,function(e,n){var r=t[n];return"string"==typeof r||"number"==typeof r?r:e})}function g(e,t){Object.keys(t).forEach(function(n){r.has(h.blacklist,n)||(e[n]=t[n])})}function m(){if(c.option.enforceall){for(var e in f.bool.enforcing)void 0!==c.option[e]||f.noenforceall[e]||(c.option[e]=!0);for(var t in f.bool.relaxing)void 0===c.option[t]&&(c.option[t]=!1)}}function k(){var e=null;m(),(e=c.inferEsVersion())&&y("E059",c.tokens.next,"esversion",e),c.inES5()&&g(Ye,o.ecmaIdentifiers[5]),c.inES6()&&g(Ye,o.ecmaIdentifiers[6]),"global"===c.option.strict&&"globalstrict"in c.option&&y("E059",c.tokens.next,"strict","globalstrict"),c.option.module&&(c.inES6()||b("W134",c.tokens.next,"module",6)),c.option.couch&&g(Ye,o.couch),c.option.qunit&&g(Ye,o.qunit),c.option.rhino&&g(Ye,o.rhino),c.option.shelljs&&(g(Ye,o.shelljs),g(Ye,o.node)),c.option.typed&&g(Ye,o.typed),c.option.phantom&&g(Ye,o.phantom),c.option.prototypejs&&g(Ye,o.prototypejs),c.option.node&&(g(Ye,o.node),g(Ye,o.typed)),c.option.devel&&g(Ye,o.devel),c.option.dojo&&g(Ye,o.dojo),c.option.browser&&(g(Ye,o.browser),g(Ye,o.typed)),c.option.browserify&&(g(Ye,o.browser),g(Ye,o.typed),g(Ye,o.browserify)),c.option.nonstandard&&g(Ye,o.nonstandard),c.option.jasmine&&g(Ye,o.jasmine),c.option.jquery&&g(Ye,o.jquery),c.option.mootools&&g(Ye,o.mootools),c.option.worker&&g(Ye,o.worker),c.option.wsh&&g(Ye,o.wsh),c.option.yui&&g(Ye,o.yui),c.option.mocha&&g(Ye,o.mocha)}function y(e,t,n,r){var i=Math.floor(t.line/c.lines.length*100),o=s.errors[e].desc,a={name:"JSHintError",line:t.line,character:t.from,message:o+" ("+i+"% scanned).",raw:o,code:e,a:n,b:r};throw a.reason=v(o,a)+" ("+i+"% scanned).",a}function x(){var e=c.ignoredLines;r.isEmpty(e)||(h.errors=r.reject(h.errors,function(t){return e[t.line]}))}function b(e,t,n,r,i,o){var a,u,l,f;if(/^W\d{3}$/.test(e)){if(c.ignored[e])return;f=s.warnings[e]}else/E\d{3}/.test(e)?f=s.errors[e]:/I\d{3}/.test(e)&&(f=s.info[e]);return"(end)"===(t=t||c.tokens.next||{}).id&&(t=c.tokens.curr),u=t.line,a=t.from,l={id:"(error)",raw:f.desc,code:f.code,evidence:c.lines[u-1]||"",line:u,character:a,scope:h.scope,a:n,b:r,c:i,d:o},l.reason=v(f.desc,l),h.errors.push(l),x(),h.errors.length>=c.option.maxerr&&y("E043",t),l}function E(e,t,n,r,i,o,s){return b(e,{line:t,from:n},r,i,o,s)}function _(e,t,n,r,i,o){b(e,t,n,r,i,o)}function w(e,t,n,r,i,o,s){return _(e,{line:t,from:n},r,i,o,s)}function S(e,t){h.internals.push({id:"(internal)",elem:e,token:t,code:t.value.replace(/([^\\])(\\*)\2\\n/g,"$1\n")})}function W(t,n){var i=t.body.split(",").map(function(e){return e.trim()}),o={};if("falls through"!==t.type){if("globals"===t.type){i.forEach(function(e,n){var r=((e=e.split(":"))[0]||"").trim(),s=(e[1]||"").trim();if("-"!==r&&r.length)"-"===r.charAt(0)?(r=r.slice(1),s=!1,h.blacklist[r]=r,delete Ye[r]):o[r]="true"===s;else{if(n>0&&n===i.length-1)return;_("E002",t)}}),g(Ye,o);for(var s in o)r.has(o,s)&&(qe[s]=t)}"exported"===t.type&&i.forEach(function(e,n){if(e.length)c.funct["(scope)"].addExported(e);else{if(n>0&&n===i.length-1)return;_("E002",t)}}),"members"===t.type&&(Ke=Ke||{},i.forEach(function(e){var t=e.charAt(0);t!==e.charAt(e.length-1)||'"'!==t&&"'"!==t||(e=e.substr(1,e.length-2).replace('\\"','"')),Ke[e]=!1}));var a=["maxstatements","maxparams","maxdepth","maxcomplexity","maxerr","maxlen","indent"];"jshint"!==t.type&&"jslint"!==t.type||(i.forEach(function(n){var r=((n=n.split(":"))[0]||"").trim(),i=(n[1]||"").trim();if(e(r,t))if(a.indexOf(r)>=0)if("false"!==i){if("number"!=typeof(i=+i)||!isFinite(i)||i<=0||Math.floor(i)!==i)return void _("E032",t,n[1].trim());c.option[r]=i}else c.option[r]="indent"===r&&4;else{if("validthis"===r)return c.funct["(global)"]?void _("E009"):"true"!==i&&"false"!==i?void _("E002",t):void(c.option.validthis="true"===i);if("quotmark"!==r)if("shadow"!==r)if("unused"!==r)if("latedef"!==r)if("ignore"!==r)if("strict"!==r)if("module"===r&&(xe(c.funct)||_("E055",t,"module")),"esversion"!==r){var o=/^([+-])(W\d{3})$/g.exec(r);if(o)c.ignored[o[2]]="-"===o[1];else{var s;"true"!==i&&"false"!==i?_("E002",t):"jslint"===t.type?(s=f.renamed[r]||r,c.option[s]="true"===i,void 0!==f.inverted[s]&&(c.option[s]=!c.option[s])):c.option[r]="true"===i}}else{switch(i){case"3":case"5":case"6":case"2015":c.option.moz=!1,c.option.esversion=+i;break;default:_("E002",t)}xe(c.funct)||_("E055",t,"esversion")}else switch(i){case"true":c.option.strict=!0;break;case"false":c.option.strict=!1;break;case"global":case"implied":c.option.strict=i;break;default:_("E002",t)}else switch(i){case"line":c.ignoredLines[t.line]=!0,x();break;default:_("E002",t)}else switch(i){case"true":c.option.latedef=!0;break;case"false":c.option.latedef=!1;break;case"nofunc":c.option.latedef="nofunc";break;default:_("E002",t)}else switch(i){case"true":c.option.unused=!0;break;case"false":c.option.unused=!1;break;case"vars":case"strict":c.option.unused=i;break;default:_("E002",t)}else switch(i){case"true":c.option.shadow=!0;break;case"outer":c.option.shadow="outer";break;case"false":case"inner":c.option.shadow="inner";break;default:_("E002",t)}else switch(i){case"true":case"false":c.option.quotmark="true"===i;break;case"double":case"single":c.option.quotmark=i;break;default:_("E002",t)}}}),k())}else n.caseFallsThrough=!0}function A(e){var t,n=e||0,r=Je.length;if(n="a"&&t<="z"||t>="A"&&t<="Z")&&(e.identifier=e.reserved=!0),e}function D(e,t){var n=P(e,150);return N(n),n.nud="function"==typeof t?t:function(){return this.arity="unary",this.right=G(150),"++"!==this.id&&"--"!==this.id||(c.option.plusplus?b("W016",this,this.id):!this.right||this.right.identifier&&!d(this.right)||"."===this.right.id||"["===this.right.id||b("W017",this),this.right&&this.right.isMetaProperty?_("E031",this):this.right&&this.right.identifier&&c.funct["(scope)"].block.modify(this.right.value,this)),this},n}function q(e,t){var n=R(e);return n.type=e,n.nud=t,n}function z(e,t){var n=q(e,t);return n.identifier=!0,n.reserved=!0,n}function H(e,t){var n=q(e,t&&t.nud||function(){return this});return t=t||{},t.isFutureReservedWord=!0,n.value=e,n.identifier=!0,n.reserved=!0,n.meta=t,n}function $(e,t){return z(e,function(){return"function"==typeof t&&t(this),this})}function J(e,t,n,r){var i=P(e,n);return N(i),i.infix=!0,i.led=function(i){return r||M(c.tokens.prev,c.tokens.curr),"in"!==e&&"instanceof"!==e||"!"!==i.id||b("W018",i,"!"),"function"==typeof t?t(i,this):(this.left=i,this.right=G(n),this)},i}function Z(e,t){var r=P(e,100);return r.infix=!0,r.led=function(e){M(c.tokens.prev,c.tokens.curr),this.left=e;var r=this.right=G(100);return n(e,"NaN")||n(r,"NaN")?b("W019",this):t&&t.apply(this,[e,r]),e&&r||y("E041",c.tokens.curr),"!"===e.id&&b("W018",e,"!"),"!"===r.id&&b("W018",r,"!"),this},r}function X(e,t,n){var i;return!n.option.notypeof&&(!(!e||!t)&&(i=n.inES6()?ot.es6:ot.es3,"(identifier)"===t.type&&"typeof"===t.value&&"(string)"===e.type&&!r.contains(i,e.value)))}function K(e,t){var n=!1;return"this"===e.type&&null===t.funct["(context)"]?n=!0:"(identifier)"===e.type&&(t.option.node&&"global"===e.value?n=!0:!t.option.browser||"window"!==e.value&&"document"!==e.value||(n=!0)),n}function Y(e){function t(e){if("object"==typeof e)return"prototype"===e.right?e:t(e.left)}var n=["Array","ArrayBuffer","Boolean","Collator","DataView","Date","DateTimeFormat","Error","EvalError","Float32Array","Float64Array","Function","Infinity","Intl","Int16Array","Int32Array","Int8Array","Iterator","Number","NumberFormat","Object","RangeError","ReferenceError","RegExp","StopIteration","String","SyntaxError","TypeError","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray","URIError"],r=t(e);if(r)return function(e){for(;!e.identifier&&"object"==typeof e.left;)e=e.left;if(e.identifier&&n.indexOf(e.value)>=0&&c.funct["(scope)"].isPredefined(e.value))return e.value}(r)}function Q(e,t,n){var r=n&&n.allowDestructuring;if(t=t||e,c.option.freeze){var i=Y(e);i&&b("W121",e,i)}return Re(e,"...")&&(e=e.right),e.identifier&&!e.isMetaProperty&&c.funct["(scope)"].block.reassign(e.value,e),"."===e.id?(e.left&&("arguments"!==e.left.value||c.isStrict())||b("E031",t),c.nameStack.set(c.tokens.prev),!0):"{"===e.id||"["===e.id?(r&&e.destructAssign||("{"!==e.id&&e.left?"arguments"!==e.left.value||c.isStrict()||b("E031",t):b("E031",t)),"["===e.id&&c.nameStack.set(e.right),!0):!e.identifier||d(e)||e.isMetaProperty?(e===c.syntax.function?b("W023",c.tokens.curr):_("E031",t),!1):("exception"===c.funct["(scope)"].labeltype(e.value)&&b("W022",e),c.nameStack.set(e),!0)}function ee(e,t,n){var r=J(e,"function"==typeof t?t:function(e,t){return t.left=e,Q(e,t,{allowDestructuring:!0}),t.right=G(10),t},n);return r.exps=!0,r.assign=!0,r}function te(e,t,n){var r=P(e,n);return N(r),r.infix=!0,r.led="function"==typeof t?t:function(e){return c.option.bitwise&&b("W016",this,this.id),this.left=e,this.right=G(n),this},r}function ne(e){return ee(e,function(e,t){return c.option.bitwise&&b("W016",t,t.id),Q(e,t),t.right=G(10),t},20)}function re(e){var t=P(e,150);return t.led=function(e){return c.option.plusplus?b("W016",this,this.id):e.identifier&&!d(e)||"."===e.id||"["===e.id||b("W017",this),e.isMetaProperty?_("E031",this):e&&e.identifier&&c.funct["(scope)"].block.modify(e.value,e),this.left=e,this},t}function ie(e,t,n){if(c.tokens.next.identifier){n||j();var r=c.tokens.curr,i=c.tokens.curr.value;return d(r)?t&&c.inES5()?i:e&&"undefined"===i?i:(b("W024",c.tokens.curr,c.tokens.curr.id),i):i}}function oe(e,t){var n=ie(e,t,!1);if(n)return n;if("..."===c.tokens.next.value){if(c.inES6(!0)||b("W119",c.tokens.next,"spread/rest operator","6"),j(),Re(c.tokens.next,"..."))for(b("E024",c.tokens.next,"...");Re(c.tokens.next,"...");)j();return c.tokens.next.identifier?oe(e,t):void b("E024",c.tokens.curr,c.tokens.next.id)}_("E030",c.tokens.next,c.tokens.next.value),";"!==c.tokens.next.id&&j()}function se(e){var t,n=0;if(";"===c.tokens.next.id&&!e.inBracelessBlock)for(;;){do{t=A(n),n+=1}while("(end)"!==t.id&&"(comment)"===t.id);if(t.reach)return;if("(endline)"!==t.id){if("function"===t.id){!0===c.option.latedef&&b("W026",t);break}b("W027",t,t.value,e.value);break}}}function ae(e){if(";"!==c.tokens.next.id){if(c.tokens.next.isUnclosed)return j();var t=C(c.tokens.next)===c.tokens.curr.line&&"(end)"!==c.tokens.next.id,n=Re(c.tokens.next,"}");!t||n||"do"===e.id&&c.inES6(!0)?c.option.asi||n&&t&&c.option.lastsemic||E("W033",c.tokens.curr.line,c.tokens.curr.character):w("E058",c.tokens.curr.line,c.tokens.curr.character)}else j(";")}function ue(){var e,t=$e,n=c.tokens.next,r=!1;{if(";"!==n.id){var i=d(n);return i&&n.meta&&n.meta.isFutureReservedWord&&":"===A().id&&(b("W024",n,n.id),i=!1),n.identifier&&!i&&":"===A().id&&(j(),j(":"),r=!0,c.funct["(scope)"].stack(),c.funct["(scope)"].block.addBreakLabel(n.value,{token:c.tokens.curr}),c.tokens.next.labelled||"{"===c.tokens.next.value||b("W028",c.tokens.next,n.value,c.tokens.next.value),c.tokens.next.label=n.value,n=c.tokens.next),"{"===n.id?(fe(!0,!0,!1,!1,"case"===c.funct["(verb)"]&&":"===c.tokens.curr.value),void(r&&c.funct["(scope)"].unstack())):(!(e=G(0,!0))||e.identifier&&"function"===e.value||"(punctuator)"===e.type&&e.left&&e.left.identifier&&"function"===e.left.value||!c.isStrict()&&c.stmtMissingStrict()&&b("E007"),n.block||(c.option.expr||e&&e.exps?c.option.nonew&&e&&e.left&&"("===e.id&&"new"===e.left.id&&b("W031",n):b("W030",c.tokens.curr),ae(n)),$e=t,r&&c.funct["(scope)"].unstack(),e)}j(";")}}function ce(){for(var e,t=[];!c.tokens.next.reach&&"(end)"!==c.tokens.next.id;)";"===c.tokens.next.id?((!(e=A())||"("!==e.id&&"["!==e.id)&&b("W032"),j(";")):t.push(ue());return t}function le(){for(var e=c.tokens.next;"(string)"===c.tokens.next.id;){var t=L();if(!O(e,t))break;e=t,j();var n=c.tokens.curr.value;(c.directive[n]||"use strict"===n&&"implied"===c.option.strict)&&b("W034",c.tokens.curr,n),c.directive[n]=!0,ae(e)}c.isStrict()&&(c.option.undef=!0)}function fe(e,t,n,i,o){var s,a,u,l,f=He,p=$e;He=e,u=c.tokens.next;var h=c.funct["(metrics)"];if(h.nestedBlockDepth+=1,h.verifyMaxNestedBlockDepthPerFunction(),"{"===c.tokens.next.id){if(j("{"),c.funct["(scope)"].stack(),c.funct["(noblockscopedvar)"]=!1,c.tokens.curr.line,"}"!==c.tokens.next.id){for($e+=c.option.indent;!e&&c.tokens.next.from>$e;)$e+=c.option.indent;if(n){a={};for(l in c.directive)r.has(c.directive,l)&&(a[l]=c.directive[l]);le(),c.option.strict&&c.funct["(context)"]["(global)"]&&(a["use strict"]||c.isStrict()||b("E007"))}s=ce(),h.statementCount+=s.length,$e-=c.option.indent}j("}",u),n&&(c.funct["(scope)"].validateParams(),a&&(c.directive=a)),c.funct["(scope)"].unstack(),$e=p}else if(e)c.funct["(noblockscopedvar)"]="for"!==c.tokens.next.id,c.funct["(scope)"].stack(),t&&!c.option.curly||b("W116",c.tokens.next,"{",c.tokens.next.value),c.tokens.next.inBracelessBlock=!0,$e+=c.option.indent,s=[ue()],$e-=c.option.indent,c.funct["(scope)"].unstack(),delete c.funct["(noblockscopedvar)"];else if(n){if(c.funct["(scope)"].stack(),a={},!t||i||c.inMoz()||_("W118",c.tokens.curr,"function closure expressions"),!t)for(l in c.directive)r.has(c.directive,l)&&(a[l]=c.directive[l]);G(10),c.option.strict&&c.funct["(context)"]["(global)"]&&(a["use strict"]||c.isStrict()||b("E007")),c.funct["(scope)"].unstack()}else _("E021",c.tokens.next,"{",c.tokens.next.value);switch(c.funct["(verb)"]){case"break":case"continue":case"return":case"throw":if(o)break;default:c.funct["(verb)"]=null}return He=f,!e||!c.option.noempty||s&&0!==s.length||b("W035",c.tokens.prev),h.nestedBlockDepth-=1,s}function pe(e){Ke&&"boolean"!=typeof Ke[e]&&b("W036",c.tokens.curr,e),"number"==typeof Xe[e]?Xe[e]+=1:Xe[e]=1}function he(){var e={};e.exps=!0,c.funct["(comparray)"].stack();var t=!1;return"for"!==c.tokens.next.value&&(t=!0,c.inMoz()||b("W116",c.tokens.next,"for",c.tokens.next.value),c.funct["(comparray)"].setState("use"),e.right=G(10)),j("for"),"each"===c.tokens.next.value&&(j("each"),c.inMoz()||b("W118",c.tokens.curr,"for each")),j("("),c.funct["(comparray)"].setState("define"),e.left=G(130),r.contains(["in","of"],c.tokens.next.value)?j():_("E045",c.tokens.curr),c.funct["(comparray)"].setState("generate"),G(10),j(")"),"if"===c.tokens.next.value&&(j("if"),j("("),c.funct["(comparray)"].setState("filter"),e.filter=G(10),j(")")),t||(c.funct["(comparray)"].setState("use"),e.right=G(10)),j("]"),c.funct["(comparray)"].unstack(),e}function de(){return c.funct["(statement)"]&&"class"===c.funct["(statement)"].type||c.funct["(context)"]&&"class"===c.funct["(context)"]["(verb)"]}function ve(e){return e.identifier||"(string)"===e.id||"(number)"===e.id}function ge(e){var t,n=!0;return t="object"==typeof e?e:ie(!1,!0,n=e),t?"object"==typeof t&&("(string)"===t.id||"(identifier)"===t.id?t=t.value:"(number)"===t.id&&(t=t.value.toString())):"(string)"===c.tokens.next.id?(t=c.tokens.next.value,n||j()):"(number)"===c.tokens.next.id&&(t=c.tokens.next.value.toString(),n||j()),"hasOwnProperty"===t&&b("W001"),t}function me(e){var t,n,i,o=[],s=[],a=!1,u=!1,l=0,f=e&&e.loneArg;if(f&&!0===f.identifier)return c.funct["(scope)"].addParam(f.value,f),{arity:1,params:[f.value]};if(t=c.tokens.next,e&&e.parsedOpening||j("("),")"!==c.tokens.next.id)for(;;){l++;var p=[];if(r.contains(["{","["],c.tokens.next.id)){s=Le();for(i in s)(i=s[i]).id&&(o.push(i.id),p.push([i.id,i.token]))}else if(Re(c.tokens.next,"...")&&(u=!0),n=oe(!0))o.push(n),p.push([n,c.tokens.curr]);else for(;!Pe(c.tokens.next,[",",")"]);)j();if(a&&"="!==c.tokens.next.id&&_("W138",c.tokens.current),"="===c.tokens.next.id&&(c.inES6()||b("W119",c.tokens.next,"default parameters","6"),j("="),a=!0,G(10)),p.forEach(function(e){c.funct["(scope)"].addParam.apply(c.funct["(scope)"],e)}),","!==c.tokens.next.id)return j(")",t),{arity:l,params:o};u&&b("W131",c.tokens.next),F()}else j(")")}function ke(e,t,n){var i={"(name)":e,"(breakage)":0,"(loopage)":0,"(tokens)":{},"(properties)":{},"(catch)":!1,"(global)":!1,"(line)":null,"(character)":null,"(metrics)":null,"(statement)":null,"(context)":null,"(scope)":null,"(comparray)":null,"(generator)":null,"(arrow)":null,"(params)":null};return t&&r.extend(i,{"(line)":t.line,"(character)":t.character,"(metrics)":_e(t)}),r.extend(i,n),i["(context)"]&&(i["(scope)"]=i["(context)"]["(scope)"],i["(comparray)"]=i["(context)"]["(comparray)"]),i}function ye(e){return"(scope)"in e}function xe(e){return e["(global)"]&&!e["(verb)"]}function be(e){var t=this.context,n=this.noSubst,r=this.depth,i="number"==typeof e?null:e;if(!n)for(;!function(){if(c.tokens.curr.template&&c.tokens.curr.tail&&c.tokens.curr.context===t)return!0;var e=c.tokens.next.template&&c.tokens.next.tail&&c.tokens.next.context===t;return e&&j(),e||c.tokens.next.isUnclosed}();)!c.tokens.next.template||c.tokens.next.depth>r?G(0):j();return{id:"(template)",type:"(template)",tag:i}}function Ee(e){var t,n,r,i,o,s,a,u,l=c.option,f=c.ignored;e&&(r=e.name,i=e.statement,o=e.classExprBinding,s="generator"===e.type,a="arrow"===e.type,u=e.ignoreLoopFunc),c.option=Object.create(c.option),c.ignored=Object.create(c.ignored),c.funct=ke(r||c.nameStack.infer(),c.tokens.next,{"(statement)":i,"(context)":c.funct,"(arrow)":a,"(generator)":s}),t=c.funct,(n=c.tokens.curr).funct=c.funct,ze.push(c.funct),c.funct["(scope)"].stack("functionouter");var p=r||o;p&&c.funct["(scope)"].block.add(p,o?"class":"function",c.tokens.curr,!1),c.funct["(scope)"].stack("functionparams");var h=me(e);return h?(c.funct["(params)"]=h.params,c.funct["(metrics)"].arity=h.arity,c.funct["(metrics)"].verifyMaxParametersPerFunction()):c.funct["(metrics)"].arity=0,a&&(c.inES6(!0)||b("W119",c.tokens.curr,"arrow function syntax (=>)","6"),e.loneArg||j("=>")),fe(!1,!0,!0,a),!c.option.noyield&&s&&"yielded"!==c.funct["(generator)"]&&b("W124",c.tokens.curr),c.funct["(metrics)"].verifyMaxStatementsPerFunction(),c.funct["(metrics)"].verifyMaxComplexityPerFunction(),c.funct["(unusedOption)"]=c.option.unused,c.option=l,c.ignored=f,c.funct["(last)"]=c.tokens.curr.line,c.funct["(lastcharacter)"]=c.tokens.curr.character,c.funct["(scope)"].unstack(),c.funct["(scope)"].unstack(),c.funct=c.funct["(context)"],u||c.option.loopfunc||!c.funct["(loopage)"]||t["(isCapturing)"]&&b("W083",n),t}function _e(e){return{statementCount:0,nestedBlockDepth:-1,ComplexityCount:1,arity:0,verifyMaxStatementsPerFunction:function(){c.option.maxstatements&&this.statementCount>c.option.maxstatements&&b("W071",e,this.statementCount)},verifyMaxParametersPerFunction:function(){r.isNumber(c.option.maxparams)&&this.arity>c.option.maxparams&&b("W072",e,this.arity)},verifyMaxNestedBlockDepthPerFunction:function(){c.option.maxdepth&&this.nestedBlockDepth>0&&this.nestedBlockDepth===c.option.maxdepth+1&&b("W073",null,this.nestedBlockDepth)},verifyMaxComplexityPerFunction:function(){var t=c.option.maxcomplexity,n=this.ComplexityCount;t&&n>t&&b("W074",e,n)}}}function we(){c.funct["(metrics)"].ComplexityCount+=1}function Se(e){var t,n;switch(e&&(t=e.id,n=e.paren,","===t&&(e=e.exprs[e.exprs.length-1])&&(t=e.id,n=n||e.paren)),t){case"=":case"+=":case"-=":case"*=":case"%=":case"&=":case"|=":case"^=":case"/=":n||c.option.boss||b("W084")}}function We(e){if(c.inES5())for(var t in e)e[t]&&e[t].setterToken&&!e[t].getterToken&&b("W078",e[t].setterToken)}function Ae(e,t){if(Re(c.tokens.next,".")){var n=c.tokens.curr.id;j(".");var r=oe();return c.tokens.curr.isMetaProperty=!0,e!==r?_("E057",c.tokens.prev,n,r):t(),c.tokens.curr}}function Le(e){var t=e&&e.assignment;return c.inES6()||b("W104",c.tokens.curr,t?"destructuring assignment":"destructuring binding","6"),je(e)}function je(e){var t,n,r,i=[],o=e&&e.openingParsed,s=e&&e.assignment,a=s?{assignment:s}:null,u=o?c.tokens.curr:c.tokens.next,l=function(){var e;if(Pe(c.tokens.next,["[","{"])){t=je(a);for(var n in t)n=t[n],i.push({id:n.id,token:n.token})}else if(Re(c.tokens.next,","))i.push({id:null,token:c.tokens.curr});else{if(!Re(c.tokens.next,"(")){var r=Re(c.tokens.next,"...");if(s){var o=G(20);o&&(Q(o),o.identifier&&(e=o.value))}else e=oe();return e&&i.push({id:e,token:c.tokens.curr}),r}j("("),l(),j(")")}return!1};if(Re(u,"[")){o||j("["),Re(c.tokens.next,"]")&&b("W137",c.tokens.curr);for(var f=!1;!Re(c.tokens.next,"]");)l()&&!f&&Re(c.tokens.next,",")&&(b("W130",c.tokens.next),f=!0),Re(c.tokens.next,"=")&&(j(Re(c.tokens.prev,"...")?"]":"="),n=c.tokens.prev,(r=G(10))&&"undefined"===r.type&&b("W080",n,n.value)),Re(c.tokens.next,"]")||j(",");j("]")}else if(Re(u,"{")){for(o||j("{"),Re(c.tokens.next,"}")&&b("W137",c.tokens.curr);!Re(c.tokens.next,"}")&&(function(){var e;Re(c.tokens.next,"[")?(j("["),G(10),j("]"),j(":"),l()):"(string)"===c.tokens.next.id||"(number)"===c.tokens.next.id?(j(),j(":"),l()):(e=oe(),Re(c.tokens.next,":")?(j(":"),l()):e&&(s&&Q(c.tokens.curr),i.push({id:e,token:c.tokens.curr})))}(),Re(c.tokens.next,"=")&&(j("="),n=c.tokens.prev,(r=G(10))&&"undefined"===r.type&&b("W080",n,n.value)),Re(c.tokens.next,"}")||(j(","),!Re(c.tokens.next,"}"))););j("}")}return i}function Te(e,t){var n=t.first;n&&r.zip(e,Array.isArray(n)?n:[n]).forEach(function(e){var t=e[0],n=e[1];t&&n?t.first=n:t&&t.first&&!n&&b("W080",t.first,t.first.value)})}function Oe(e,t,n){var i,o,s,a,u=n&&n.prefix,l=n&&n.inexport,f="let"===e,p="const"===e;for(c.inES6()||b("W104",c.tokens.curr,e,"6"),f&&"("===c.tokens.next.value?(c.inMoz()||b("W118",c.tokens.next,"let block"),j("("),c.funct["(scope)"].stack(),a=!0):c.funct["(noblockscopedvar)"]&&_("E048",c.tokens.curr,p?"Const":"Let"),t.first=[];;){var h=[];r.contains(["{","["],c.tokens.next.value)?(i=Le(),o=!1):(i=[{id:oe(),token:c.tokens.curr}],o=!0),!u&&p&&"="!==c.tokens.next.id&&b("E012",c.tokens.curr,c.tokens.curr.value);for(var d in i)i.hasOwnProperty(d)&&(d=i[d],c.funct["(scope)"].block.isGlobal()&&!1===Ye[d.id]&&b("W079",d.token,d.id),d.id&&!c.funct["(noblockscopedvar)"]&&(c.funct["(scope)"].addlabel(d.id,{type:e,token:d.token}),h.push(d.token)));if("="===c.tokens.next.id){j("="),!u&&"="===A(0).id&&c.tokens.next.identifier&&b("W120",c.tokens.next,c.tokens.next.value);var v=c.tokens.prev;s=G(u?120:10),!u&&s&&"undefined"===s.type&&b("W080",v,v.value),o?i[0].first=s:Te(h,s)}if(!u)for(d in i)i.hasOwnProperty(d)&&(d=i[d],c.funct["(scope)"].initialize(d.id),o&&l&&c.funct["(scope)"].setExported(d.token.value,d.token));if(t.first=t.first.concat(h),","!==c.tokens.next.id)break;F()}return a&&(j(")"),fe(!0,!0),t.block=!0,c.funct["(scope)"].unstack()),t}function Ge(e,t){return c.inES6()||b("W104",c.tokens.curr,"class","6"),t?(this.name=oe(),c.funct["(scope)"].addlabel(this.name,{type:"class",token:c.tokens.curr})):c.tokens.next.identifier&&"extends"!==c.tokens.next.value?(this.name=oe(),this.namedExpr=!0):this.name=c.nameStack.infer(),Ce(this),t&&c.funct["(scope)"].initialize(this.name),this}function Ce(e){var t=c.inClassBody;"extends"===c.tokens.next.value&&(j("extends"),e.heritage=G(10)),c.inClassBody=!0,j("{"),e.body=Me(e),j("}"),c.inClassBody=t}function Me(e){for(var t,n,r,i,o,s=Object.create(null),a=Object.create(null),u=0;"}"!==c.tokens.next.id;++u)if(t=c.tokens.next,n=!1,r=!1,i=null,";"!==t.id){if("*"===t.id&&(r=!0,j("*"),t=c.tokens.next),"["===t.id)t=Fe(),o=!0;else{if(!ve(t)){b("W052",c.tokens.next,c.tokens.next.value||c.tokens.next.type),j();continue}j(),o=!1,t.identifier&&"static"===t.value&&(Re(c.tokens.next,"*")&&(r=!0,j("*")),(ve(c.tokens.next)||"["===c.tokens.next.id)&&(o="["===c.tokens.next.id,n=!0,t=c.tokens.next,"["===c.tokens.next.id?t=Fe():j())),!t.identifier||"get"!==t.value&&"set"!==t.value||(ve(c.tokens.next)||"["===c.tokens.next.id)&&(o="["===c.tokens.next.id,i=t,t=c.tokens.next,"["===c.tokens.next.id?t=Fe():j())}if(!Re(c.tokens.next,"(")){for(_("E054",c.tokens.next,c.tokens.next.value);"}"!==c.tokens.next.id&&!Re(c.tokens.next,"(");)j();"("!==c.tokens.next.value&&Ee({statement:e})}o||(i?Ie(i.value,n?a:s,t.value,t,!0,n):("constructor"===t.value?c.nameStack.set(e):c.nameStack.set(t),Ve(n?a:s,t.value,t,!0,n))),i&&"constructor"===t.value?_("E049",t,"get"===i.value?"class getter method":"class setter method","constructor"):"prototype"===t.value&&_("E049",t,"class method","prototype"),ge(t),Ee({statement:e,type:r?"generator":null,classExprBinding:e.namedExpr?e.name:null})}else b("W032"),j(";");We(s)}function Ve(e,t,n,r,i){var o=["key","class method","static class method"];o=o[(r||!1)+(i||!1)],n.identifier&&(t=n.value),e[t]&&"__proto__"!==t?b("W075",c.tokens.next,o,t):e[t]=Object.create(null),e[t].basic=!0,e[t].basictkn=n}function Ie(e,t,n,r,i,o){var s="get"===e?"getterToken":"setterToken",a="";i?(o&&(a+="static "),a+=e+"ter method"):a="key",c.tokens.curr.accessorType=e,c.nameStack.set(r),t[n]?(t[n].basic||t[n][s])&&"__proto__"!==n&&b("W075",c.tokens.next,a,n):t[n]=Object.create(null),t[n][s]=r}function Fe(){j("["),c.inES6()||b("W119",c.tokens.curr,"computed property names","6");var e=G(10);return j("]"),e}function Pe(e,t){return"(punctuator)"===e.type&&r.contains(t,e.value)}function Re(e,t){return"(punctuator)"===e.type&&e.value===t}function Ue(){var e=ut();e.notJson?(!c.inES6()&&e.isDestAssign&&b("W104",c.tokens.curr,"destructuring assignment","6"),ce()):(c.option.laxbreak=!0,c.jsonMode=!0,Be())}function Be(){switch(c.tokens.next.id){case"{":!function(){var e={},t=c.tokens.next;if(j("{"),"}"!==c.tokens.next.id)for(;;){if("(end)"===c.tokens.next.id)_("E026",c.tokens.next,t.line);else{if("}"===c.tokens.next.id){b("W094",c.tokens.curr);break}","===c.tokens.next.id?_("E028",c.tokens.next):"(string)"!==c.tokens.next.id&&b("W095",c.tokens.next,c.tokens.next.value)}if(!0===e[c.tokens.next.value]?b("W075",c.tokens.next,"key",c.tokens.next.value):"__proto__"===c.tokens.next.value&&!c.option.proto||"__iterator__"===c.tokens.next.value&&!c.option.iterator?b("W096",c.tokens.next,c.tokens.next.value):e[c.tokens.next.value]=!0,j(),j(":"),Be(),","!==c.tokens.next.id)break;j(",")}j("}")}();break;case"[":!function(){var e=c.tokens.next;if(j("["),"]"!==c.tokens.next.id)for(;;){if("(end)"===c.tokens.next.id)_("E027",c.tokens.next,e.line);else{if("]"===c.tokens.next.id){b("W094",c.tokens.curr);break}","===c.tokens.next.id&&_("E028",c.tokens.next)}if(Be(),","!==c.tokens.next.id)break;j(",")}j("]")}();break;case"true":case"false":case"null":case"(number)":case"(string)":j();break;case"-":j("-"),j("(number)");break;default:_("E003",c.tokens.next)}}function Ne(e,t,n){var r,i,o,s;for(i=0;i":!0,">=":!0,"+":!0,"-":!0,"*":!0,"/":!0,"%":!0},nt=["closure","exception","global","label","outer","unused","var"],rt=[],it=new i.EventEmitter,ot={};ot.legacy=["xml","unknown"],ot.es3=["undefined","boolean","number","string","function","object"],ot.es3=ot.es3.concat(ot.legacy),ot.es6=ot.es3.concat("symbol"),q("(number)",function(){return this}),q("(string)",function(){return this}),c.syntax["(identifier)"]={type:"(identifier)",lbp:0,identifier:!0,nud:function(){var e=this.value;return"=>"===c.tokens.next.id?this:(c.funct["(comparray)"].check(e)||c.funct["(scope)"].block.use(e,c.tokens.curr),this)},led:function(){_("E033",c.tokens.next,c.tokens.next.value)}};var st={identifier:!1,template:!0};c.syntax["(template)"]=r.extend({lbp:155,type:"(template)",nud:be,led:be,noSubst:!1},st),c.syntax["(template middle)"]=r.extend({lbp:0,type:"(template middle)",middle:!0,noSubst:!1},st),c.syntax["(template tail)"]=r.extend({lbp:0,type:"(template tail)",tail:!0,noSubst:!1},st),c.syntax["(no subst template)"]=r.extend({lbp:155,type:"(template)",nud:be,led:be,noSubst:!0,tail:!0},st),q("(regexp)",function(){return this}),R("(endline)"),function(e){e.line=e.from=0}(R("(begin)")),R("(end)").reach=!0,R("(error)").reach=!0,R("}").reach=!0,R(")"),R("]"),R('"').reach=!0,R("'").reach=!0,R(";"),R(":").reach=!0,R("#"),z("else"),z("case").reach=!0,z("catch"),z("default").reach=!0,z("finally"),$("arguments",function(e){c.isStrict()&&c.funct["(global)"]&&b("E008",e)}),$("eval"),$("false"),$("Infinity"),$("null"),$("this",function(e){c.isStrict()&&!de()&&!c.option.validthis&&(c.funct["(statement)"]&&c.funct["(name)"].charAt(0)>"Z"||c.funct["(global)"])&&b("W040",e)}),$("true"),$("undefined"),ee("=","assign",20),ee("+=","assignadd",20),ee("-=","assignsub",20),ee("*=","assignmult",20),ee("/=","assigndiv",20).nud=function(){_("E014")},ee("%=","assignmod",20),ne("&="),ne("|="),ne("^="),ne("<<="),ne(">>="),ne(">>>="),J(",",function(e,t){var n;if(t.exprs=[e],c.option.nocomma&&b("W127"),!F({peek:!0}))return t;for(;;){if(!(n=G(10)))break;if(t.exprs.push(n),","!==c.tokens.next.value||!F())break}return t},10,!0),J("?",function(e,t){return we(),t.left=e,t.right=G(10),j(":"),t.else=G(10),t},30);J("||",function(e,t){return we(),t.left=e,t.right=G(40),t},40),J("&&","and",50),te("|","bitor",70),te("^","bitxor",80),te("&","bitand",90),Z("==",function(e,t){switch(!0){case!(c.option.eqnull&&("null"===(e&&e.value)||"null"===(t&&t.value)))&&c.option.eqeqeq:this.from=this.character,b("W116",this,"===","==");break;case X(t,e,c):b("W122",this,t.value);break;case X(e,t,c):b("W122",this,e.value)}return this}),Z("===",function(e,t){return X(t,e,c)?b("W122",this,t.value):X(e,t,c)&&b("W122",this,e.value),this}),Z("!=",function(e,t){return!(c.option.eqnull&&("null"===(e&&e.value)||"null"===(t&&t.value)))&&c.option.eqeqeq?(this.from=this.character,b("W116",this,"!==","!=")):X(t,e,c)?b("W122",this,t.value):X(e,t,c)&&b("W122",this,e.value),this}),Z("!==",function(e,t){return X(t,e,c)?b("W122",this,t.value):X(e,t,c)&&b("W122",this,e.value),this}),Z("<"),Z(">"),Z("<="),Z(">="),te("<<","shiftleft",120),te(">>","shiftright",120),te(">>>","shiftrightunsigned",120),J("in","in",120),J("instanceof",function(e,t){var n,r=c.funct["(scope)"];return t.left=e,t.right=n=G(120),n?(("(number)"===n.id||"(string)"===n.id||"null"===n.value||"undefined"===n.value&&!r.has("undefined")||"unary"===n.arity||"{"===n.id||"["===n.id&&!n.right||"(regexp)"===n.id||"(template)"===n.id&&!n.tag)&&_("E060"),"function"===n.id&&b("W139"),t):t},120),J("+",function(e,t){var n;return t.left=e,t.right=n=G(130),e&&n&&"(string)"===e.id&&"(string)"===n.id?(e.value+=n.value,e.character=n.character,!c.option.scripturl&&u.javascriptURL.test(e.value)&&b("W050",e),e):t},130),D("+","num"),D("+++",function(){return b("W007"),this.arity="unary",this.right=G(150),this}),J("+++",function(e){return b("W007"),this.left=e,this.right=G(130),this},130),J("-","sub",130),D("-","neg"),D("---",function(){return b("W006"),this.arity="unary",this.right=G(150),this}),J("---",function(e){return b("W006"),this.left=e,this.right=G(130),this},130),J("*","mult",140),J("/","div",140),J("%","mod",140),re("++"),D("++","preinc"),c.syntax["++"].exps=!0,c.syntax["++"].ltBoundary="before",re("--"),D("--","predec"),c.syntax["--"].exps=!0,c.syntax["--"].ltBoundary="before",D("delete",function(){var e=G(10);return e?("."!==e.id&&"["!==e.id&&b("W051"),this.first=e,e.identifier&&!c.isStrict()&&(e.forgiveUndef=!0),this):this}).exps=!0,D("~",function(){return c.option.bitwise&&b("W016",this,"~"),this.arity="unary",this.right=G(150),this}),D("...",function(){return c.inES6(!0)||b("W119",this,"spread/rest operator","6"),c.tokens.next.identifier||"(string)"===c.tokens.next.type||Pe(c.tokens.next,["[","("])||_("E030",c.tokens.next,c.tokens.next.value),this.right=G(150),this}),D("!",function(){return this.arity="unary",this.right=G(150),this.right||y("E041",this),!0===tt[this.right.id]&&b("W018",this,"!"),this}),D("typeof",function(){var e=G(150);return this.first=this.right=e,e||y("E041",this),e.identifier&&(e.forgiveUndef=!0),this}),D("new",function(){var e=Ae("target",function(){c.inES6(!0)||b("W119",c.tokens.prev,"new.target","6");for(var e,t=c.funct;t&&(e=!t["(global)"],t["(arrow)"]);)t=t["(context)"];e||b("W136",c.tokens.prev,"new.target")});if(e)return e;var t,n=G(155);if(n&&"function"!==n.id)if(n.identifier)switch(n.new=!0,n.value){case"Number":case"String":case"Boolean":case"Math":case"JSON":b("W053",c.tokens.prev,n.value);break;case"Symbol":c.inES6()&&b("W053",c.tokens.prev,n.value);break;case"Function":c.option.evil||b("W054");break;case"Date":case"RegExp":case"this":break;default:"function"!==n.id&&(t=n.value.substr(0,1),c.option.newcap&&(t<"A"||t>"Z")&&!c.funct["(scope)"].isPredefined(n.value)&&b("W055",c.tokens.curr))}else"."!==n.id&&"["!==n.id&&"("!==n.id&&b("W056",c.tokens.curr);else c.option.supernew||b("W057",this);return"("===c.tokens.next.id||c.option.supernew||b("W058",c.tokens.curr,c.tokens.curr.value),this.first=this.right=n,this}),c.syntax.new.exps=!0,D("void").exps=!0,J(".",function(e,t){var n=oe(!1,!0);return"string"==typeof n&&pe(n),t.left=e,t.right=n,n&&"hasOwnProperty"===n&&"="===c.tokens.next.value&&b("W001"),!e||"arguments"!==e.value||"callee"!==n&&"caller"!==n?c.option.evil||!e||"document"!==e.value||"write"!==n&&"writeln"!==n||b("W060",e):c.option.noarg?b("W059",e,n):c.isStrict()&&_("E008"),c.option.evil||"eval"!==n&&"execScript"!==n||K(e,c)&&b("W061"),t},160,!0),J("(",function(e,t){c.option.immed&&e&&!e.immed&&"function"===e.id&&b("W062");var n=0,r=[];if(e&&"(identifier)"===e.type&&e.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)&&-1==="Array Number String Boolean Date Object Error Symbol".indexOf(e.value)&&("Math"===e.value?b("W063",e):c.option.newcap&&b("W064",e)),")"!==c.tokens.next.id)for(;r[r.length]=G(10),n+=1,","===c.tokens.next.id;)F();return j(")"),"object"==typeof e&&(c.inES5()||"parseInt"!==e.value||1!==n||b("W065",c.tokens.curr),c.option.evil||("eval"===e.value||"Function"===e.value||"execScript"===e.value?b("W061",e):!r[0]||"(string)"!==r[0].id||"setTimeout"!==e.value&&"setInterval"!==e.value?!r[0]||"(string)"!==r[0].id||"."!==e.value||"window"!==e.left.value||"setTimeout"!==e.right&&"setInterval"!==e.right||(b("W066",e),S(e,r[0])):(b("W066",e),S(e,r[0]))),e.identifier||"."===e.id||"["===e.id||"=>"===e.id||"("===e.id||"&&"===e.id||"||"===e.id||"?"===e.id||c.inES6()&&e["(name)"]||b("W067",t)),t.left=e,t},155,!0).exps=!0,D("(",function(e){var t,n,r,i,o,s=c.tokens.next,a=-1,u=1,l=c.tokens.curr,f=c.tokens.prev,p=!c.option.singleGroups;do{"("===s.value?u+=1:")"===s.value&&(u-=1),t=s,s=A(a+=1)}while((0!==u||")"!==t.value)&&"(end)"!==s.type);if("function"===c.tokens.next.id&&(r=c.tokens.next.immed=!0),"=>"===s.value)return Ee({type:"arrow",parsedOpening:!0});var h=[];if(")"!==c.tokens.next.id)for(;h.push(G(10)),","===c.tokens.next.id;)c.option.nocomma&&b("W127"),F();return j(")",this),c.option.immed&&h[0]&&"function"===h[0].id&&"("!==c.tokens.next.id&&"."!==c.tokens.next.id&&"["!==c.tokens.next.id&&b("W068",this),h.length?(h.length>1?((n=Object.create(c.syntax[","])).exprs=h,i=h[0],o=h[h.length-1]):(n=i=o=h[0],p||(p=l.beginsStmt&&("{"===n.id||r||ye(n))||r&&(!O()||"}"!==c.tokens.prev.id)||ye(n)&&!O()||"{"===n.id&&"=>"===f.id||"(number)"===n.type&&Re(s,".")&&/^\d+$/.test(n.value)||l.beginsStmt&&"="===n.id&&"{"===n.left.id)),n&&(p||!T(i)&&!n.exprs||(p=e>i.lbp||e>0&&e===i.lbp||!O()&&o.lbp"),J("[",function(e,t){var n,r=G(10);return r&&"(string)"===r.type&&(c.option.evil||"eval"!==r.value&&"execScript"!==r.value||K(e,c)&&b("W061"),pe(r.value),!c.option.sub&&u.identifier.test(r.value)&&((n=c.syntax[r.value])&&d(n)||b("W069",c.tokens.prev,r.value))),j("]",t),r&&"hasOwnProperty"===r.value&&"="===c.tokens.next.value&&b("W001"),t.left=e,t.right=r,t},160,!0),D("[",function(){var e=ut();if(e.isCompArray)return c.option.esnext||c.inMoz()||b("W118",c.tokens.curr,"array comprehension"),he();if(e.isDestAssign)return this.destructAssign=Le({openingParsed:!0,assignment:!0}),this;var t=c.tokens.curr.line!==C(c.tokens.next);for(this.first=[],t&&($e+=c.option.indent,c.tokens.next.from===$e+c.option.indent&&($e+=c.option.indent));"(end)"!==c.tokens.next.id;){for(;","===c.tokens.next.id;){if(!c.option.elision){if(c.inES5()){b("W128");do{j(",")}while(","===c.tokens.next.id);continue}b("W070")}j(",")}if("]"===c.tokens.next.id)break;if(this.first.push(G(10)),","!==c.tokens.next.id){c.option.trailingcomma&&c.inES5()&&E("W140",c.tokens.curr.line,c.tokens.curr.character);break}if(F({allowTrailing:!0}),"]"===c.tokens.next.id&&!c.inES5()){b("W070",c.tokens.curr);break}}return t&&($e-=c.option.indent),j("]",this),this}),function(e){e.nud=function(){var e,t,n,r,i,o,s=!1,a=Object.create(null);if((e=c.tokens.curr.line!==C(c.tokens.next))&&($e+=c.option.indent,c.tokens.next.from===$e+c.option.indent&&($e+=c.option.indent)),ut().isDestAssign)return this.destructAssign=Le({openingParsed:!0,assignment:!0}),this;for(;"}"!==c.tokens.next.id;){if(o=c.tokens.next.value,!c.tokens.next.identifier||","!==L().id&&"}"!==L().id)if(":"===A().id||"get"!==o&&"set"!==o){if("*"===c.tokens.next.value&&"(punctuator)"===c.tokens.next.type?(c.inES6()||b("W104",c.tokens.next,"generator functions","6"),j("*"),s=!0):s=!1,"["===c.tokens.next.id)n=Fe(),c.nameStack.set(n);else if(c.nameStack.set(c.tokens.next),n=ge(),Ve(a,n,c.tokens.next),"string"!=typeof n)break;"("===c.tokens.next.value?(c.inES6()||b("W104",c.tokens.curr,"concise methods","6"),Ee({type:s?"generator":null})):(j(":"),G(10))}else j(o),c.inES5()||_("E034"),(n=ge())||c.inES6()||_("E035"),n&&Ie(o,a,n,c.tokens.curr),i=c.tokens.next,r=(t=Ee())["(params)"],"get"===o&&n&&r?b("W076",i,r[0],n):"set"===o&&n&&1!==t["(metrics)"].arity&&b("W077",i,n);else c.inES6()||b("W104",c.tokens.next,"object short notation","6"),Ve(a,n=ge(!0),c.tokens.next),G(10);if(pe(n),","!==c.tokens.next.id){c.option.trailingcomma&&c.inES5()&&E("W140",c.tokens.curr.line,c.tokens.curr.character);break}F({allowTrailing:!0,property:!0}),","===c.tokens.next.id?b("W070",c.tokens.curr):"}"!==c.tokens.next.id||c.inES5()||b("W070",c.tokens.curr)}return e&&($e-=c.option.indent),j("}",this),We(a),this},e.fud=function(){_("E036",c.tokens.curr)}}(R("{")),U("const",function(e){return Oe("const",this,e)}).exps=!0,U("let",function(e){return Oe("let",this,e)}).exps=!0,U("var",function(e){var t,n,i,s=e&&e.prefix,a=e&&e.inexport;for(this.first=[];;){var u=[];r.contains(["{","["],c.tokens.next.value)?(t=Le(),n=!1):(t=[{id:oe(),token:c.tokens.curr}],n=!0),c.option.varstmt&&b("W132",this),this.first=this.first.concat(u);for(var l in t)t.hasOwnProperty(l)&&(l=t[l],c.funct["(global)"]&&!c.impliedClosure()&&(!1===Ye[l.id]?b("W079",l.token,l.id):!1===c.option.futurehostile&&(!c.inES5()&&!1===o.ecmaIdentifiers[5][l.id]||!c.inES6()&&!1===o.ecmaIdentifiers[6][l.id])&&b("W129",l.token,l.id)),l.id&&(c.funct["(scope)"].addlabel(l.id,{type:"var",token:l.token}),n&&a&&c.funct["(scope)"].setExported(l.id,l.token),u.push(l.token)));if("="===c.tokens.next.id){c.nameStack.set(c.tokens.curr),j("="),"="===A(0).id&&c.tokens.next.identifier&&((s||c.funct["(params)"])&&-1!==c.funct["(params)"].indexOf(c.tokens.next.value)||b("W120",c.tokens.next,c.tokens.next.value));var f=c.tokens.prev;!(i=G(s?120:10))||s||c.funct["(loopage)"]||"undefined"!==i.type||b("W080",f,f.value),n?t[0].first=i:Te(u,i)}if(","!==c.tokens.next.id)break;F()}return this}).exps=!0,B("class",function(e){return Ge.call(this,e,!0)}),B("function",function(e){var t=e&&e.inexport,n=!1;"*"===c.tokens.next.value&&(j("*"),c.inES6(!0)?n=!0:b("W119",c.tokens.curr,"function*","6")),He&&b("W082",c.tokens.curr);var r=ie();return c.funct["(scope)"].addlabel(r,{type:"function",token:c.tokens.curr}),void 0===r?b("W025"):t&&c.funct["(scope)"].setExported(r,c.tokens.prev),Ee({name:r,statement:this,type:n?"generator":null,ignoreLoopFunc:He}),"("===c.tokens.next.id&&c.tokens.next.line===c.tokens.curr.line&&_("E039"),this}),D("function",function(){var e=!1;return"*"===c.tokens.next.value&&(c.inES6()||b("W119",c.tokens.curr,"function*","6"),j("*"),e=!0),Ee({name:ie(),type:e?"generator":null}),this}),B("if",function(){var e=c.tokens.next;we(),c.condition=!0,j("(");var t=G(0);t||y("E041",this),Se(t);var n=null;c.option.forin&&c.forinifcheckneeded&&(c.forinifcheckneeded=!1,n=c.forinifchecks[c.forinifchecks.length-1],"(punctuator)"===t.type&&"!"===t.value?n.type="(negative)":n.type="(positive)"),j(")",e),c.condition=!1;var r=fe(!0,!0);return n&&"(negative)"===n.type&&r&&r[0]&&"(identifier)"===r[0].type&&"continue"===r[0].value&&(n.type="(negative-with-continue)"),"else"===c.tokens.next.id&&(j("else"),"if"===c.tokens.next.id||"switch"===c.tokens.next.id?ue():fe(!0,!0)),this}),B("try",function(){var e;for(fe(!0);"catch"===c.tokens.next.id;)we(),e&&!c.inMoz()&&b("W118",c.tokens.next,"multiple catch blocks"),function(){if(j("catch"),j("("),c.funct["(scope)"].stack("catchparams"),Pe(c.tokens.next,["[","{"])){var e=Le();r.each(e,function(e){e.id&&c.funct["(scope)"].addParam(e.id,e,"exception")})}else"(identifier)"!==c.tokens.next.type?b("E030",c.tokens.next,c.tokens.next.value):c.funct["(scope)"].addParam(oe(),c.tokens.curr,"exception");"if"===c.tokens.next.value&&(c.inMoz()||b("W118",c.tokens.curr,"catch filter"),j("if"),G(0)),j(")"),fe(!1),c.funct["(scope)"].unstack()}(),e=!0;return"finally"===c.tokens.next.id?(j("finally"),void fe(!0)):(e||_("E021",c.tokens.next,"catch",c.tokens.next.value),this)}),B("while",function(){var e=c.tokens.next;return c.funct["(breakage)"]+=1,c.funct["(loopage)"]+=1,we(),j("("),Se(G(0)),j(")",e),fe(!0,!0),c.funct["(breakage)"]-=1,c.funct["(loopage)"]-=1,this}).labelled=!0,B("with",function(){var e=c.tokens.next;return c.isStrict()?_("E010",c.tokens.curr):c.option.withstmt||b("W085",c.tokens.curr),j("("),G(0),j(")",e),fe(!0,!0),this}),B("switch",function(){var e=c.tokens.next,t=!1,n=!1;for(c.funct["(breakage)"]+=1,j("("),Se(G(0)),j(")",e),e=c.tokens.next,j("{"),c.tokens.next.from===$e&&(n=!0),n||($e+=c.option.indent),this.cases=[];;)switch(c.tokens.next.id){case"case":switch(c.funct["(verb)"]){case"yield":case"break":case"case":case"continue":case"return":case"switch":case"throw":break;default:c.tokens.curr.caseFallsThrough||b("W086",c.tokens.curr,"case")}j("case"),this.cases.push(G(0)),we(),t=!0,j(":"),c.funct["(verb)"]="case";break;case"default":switch(c.funct["(verb)"]){case"yield":case"break":case"continue":case"return":case"throw":break;default:this.cases.length&&(c.tokens.curr.caseFallsThrough||b("W086",c.tokens.curr,"default"))}j("default"),t=!0,j(":");break;case"}":return n||($e-=c.option.indent),j("}",e),c.funct["(breakage)"]-=1,void(c.funct["(verb)"]=void 0);case"(end)":return void _("E023",c.tokens.next,"}");default:if($e+=c.option.indent,t)switch(c.tokens.curr.id){case",":return void _("E040");case":":t=!1,ce();break;default:return void _("E025",c.tokens.curr)}else{if(":"!==c.tokens.curr.id)return void _("E021",c.tokens.next,"case",c.tokens.next.value);j(":"),_("E024",c.tokens.curr,":"),ce()}$e-=c.option.indent}return this}).labelled=!0,U("debugger",function(){return c.option.debug||b("W087",this),this}).exps=!0,function(){var e=U("do",function(){c.funct["(breakage)"]+=1,c.funct["(loopage)"]+=1,we(),this.first=fe(!0,!0),j("while");var e=c.tokens.next;return j("("),Se(G(0)),j(")",e),c.funct["(breakage)"]-=1,c.funct["(loopage)"]-=1,this});e.labelled=!0,e.exps=!0}(),B("for",function(){var e,t=c.tokens.next,n=!1,i=null;"each"===t.value&&(i=t,j("each"),c.inMoz()||b("W118",c.tokens.curr,"for each")),we(),j("(");var o,s,a,u,l,f,p=0,h=["in","of"],d=0;Pe(c.tokens.next,["{","["])&&++d;do{if(o=A(p),++p,Pe(o,["{","["])?++d:Pe(o,["}","]"])&&--d,d<0)break;0===d&&(!s&&Re(o,",")?s=o:!a&&Re(o,"=")&&(a=o))}while(d>0||!r.contains(h,o.value)&&";"!==o.value&&"(end)"!==o.type);if(r.contains(h,o.value)){if("of"===o.value?(u=20,c.inES6()||b("W104",o,"for of","6")):u=0,a&&_("W133",s,o.value,"initializer is forbidden"),s&&_("W133",s,o.value,"more than one ForBinding"),"var"===c.tokens.next.id)j("var"),c.tokens.curr.fud({prefix:!0});else if("let"===c.tokens.next.id||"const"===c.tokens.next.id)j(c.tokens.next.id),n=!0,c.funct["(scope)"].stack(),c.tokens.curr.fud({prefix:!0});else{l=[];do{Pe(c.tokens.next,["{","["])?Le({assignment:!0}).forEach(function(e){this.push(e.token)},l):("(identifier)"===(f=G(120)).type&&l.push(f),Q(f,o)),Re(c.tokens.next,"=")&&(j("="),G(120)),Re(c.tokens.next,",")&&j(",")}while(c.tokens.next!==o);a||s||l.forEach(function(e){c.funct["(scope)"].has(e.value)||b("W088",e,e.value)})}if(j(o.value),G(u),j(")",t),"in"===o.value&&c.option.forin&&(c.forinifcheckneeded=!0,void 0===c.forinifchecks&&(c.forinifchecks=[]),c.forinifchecks.push({type:"(none)"})),c.funct["(breakage)"]+=1,c.funct["(loopage)"]+=1,e=fe(!0,!0),"in"===o.value&&c.option.forin){if(c.forinifchecks&&c.forinifchecks.length>0){var v=c.forinifchecks.pop();(e&&e.length>0&&("object"!=typeof e[0]||"if"!==e[0].value)||"(positive)"===v.type&&e.length>1||"(negative)"===v.type)&&b("W089",this)}c.forinifcheckneeded=!1}c.funct["(breakage)"]-=1,c.funct["(loopage)"]-=1}else{if(i&&_("E045",i),";"!==c.tokens.next.id)if("var"===c.tokens.next.id)j("var"),c.tokens.curr.fud();else if("let"===c.tokens.next.id)j("let"),n=!0,c.funct["(scope)"].stack(),c.tokens.curr.fud();else for(;G(0,"for"),","===c.tokens.next.id;)F();if(V(c.tokens.curr),j(";"),c.funct["(loopage)"]+=1,";"!==c.tokens.next.id&&Se(G(0)),V(c.tokens.curr),j(";"),";"===c.tokens.next.id&&_("E021",c.tokens.next,")",";"),")"!==c.tokens.next.id)for(;G(0,"for"),","===c.tokens.next.id;)F();j(")",t),c.funct["(breakage)"]+=1,fe(!0,!0),c.funct["(breakage)"]-=1,c.funct["(loopage)"]-=1}return n&&c.funct["(scope)"].unstack(),this}).labelled=!0,U("break",function(){var e=c.tokens.next.value;return c.option.asi||V(this),";"===c.tokens.next.id||c.tokens.next.reach||c.tokens.curr.line!==C(c.tokens.next)?0===c.funct["(breakage)"]&&b("W052",c.tokens.next,this.value):(c.funct["(scope)"].funct.hasBreakLabel(e)||b("W090",c.tokens.next,e),this.first=c.tokens.next,j()),se(this),this}).exps=!0,U("continue",function(){var e=c.tokens.next.value;return 0!==c.funct["(breakage)"]&&c.funct["(loopage)"]||b("W052",c.tokens.next,this.value),c.option.asi||V(this),";"===c.tokens.next.id||c.tokens.next.reach||c.tokens.curr.line===C(c.tokens.next)&&(c.funct["(scope)"].funct.hasBreakLabel(e)||b("W090",c.tokens.next,e),this.first=c.tokens.next,j()),se(this),this}).exps=!0,U("return",function(){return this.line===C(c.tokens.next)?";"===c.tokens.next.id||c.tokens.next.reach||(this.first=G(0),!this.first||"(punctuator)"!==this.first.type||"="!==this.first.value||this.first.paren||c.option.boss||E("W093",this.first.line,this.first.character)):"(punctuator)"===c.tokens.next.type&&["[","{","+","-"].indexOf(c.tokens.next.value)>-1&&V(this),se(this),this}).exps=!0,function(e){e.exps=!0,e.lbp=25,e.ltBoundary="after"}(D("yield",function(){if(c.inMoz())return at.call(this);var e=c.tokens.prev;!this.beginsStmt&&e.lbp>30&&!Pe(e,["("])&&_("E061",this),c.inES6(!0)&&!c.funct["(generator)"]?"(catch)"===c.funct["(name)"]&&c.funct["(context)"]["(generator)"]||_("E046",c.tokens.curr,"yield"):c.inES6()||b("W104",c.tokens.curr,"yield","6"),c.funct["(generator)"]="yielded";return"*"===c.tokens.next.value&&(!0,j("*")),O()||","===c.tokens.next.id||(c.tokens.next.nud?(M(c.tokens.curr,c.tokens.next),this.first=G(10),"(punctuator)"!==this.first.type||"="!==this.first.value||this.first.paren||c.option.boss||E("W093",this.first.line,this.first.character)):c.tokens.next.led&&","!==c.tokens.next.id&&_("W017",c.tokens.next)),this}));var at=function(){var e=c.tokens.prev;c.inES6(!0)&&!c.funct["(generator)"]&&("(catch)"===c.funct["(name)"]&&c.funct["(context)"]["(generator)"]||_("E046",c.tokens.curr,"yield")),c.funct["(generator)"]="yielded";var t=!1;return"*"===c.tokens.next.value&&(t=!0,j("*")),this.line===C(c.tokens.next)?((t||";"!==c.tokens.next.id&&!c.option.asi&&!c.tokens.next.reach&&c.tokens.next.nud)&&(M(c.tokens.curr,c.tokens.next),this.first=G(10),"(punctuator)"!==this.first.type||"="!==this.first.value||this.first.paren||c.option.boss||E("W093",this.first.line,this.first.character)),")"!==c.tokens.next.id&&(e.lbp>30||!e.assign&&!O()||"yield"===e.id)&&_("E050",this)):c.option.asi||V(this),this};U("throw",function(){return V(this),this.first=G(20),se(this),this}).exps=!0,U("import",function(){if(c.funct["(scope)"].block.isGlobal()||_("E053",c.tokens.curr,"Import"),c.inES6()||b("W119",c.tokens.curr,"import","6"),"(string)"===c.tokens.next.type)return j("(string)"),this;if(c.tokens.next.identifier){if(this.name=oe(),c.funct["(scope)"].addlabel(this.name,{type:"import",initialized:!0,token:c.tokens.curr}),","!==c.tokens.next.value)return j("from"),j("(string)"),this;j(",")}if("*"===c.tokens.next.id)j("*"),j("as"),c.tokens.next.identifier&&(this.name=oe(),c.funct["(scope)"].addlabel(this.name,{type:"import",initialized:!0,token:c.tokens.curr}));else for(j("{");;){if("}"===c.tokens.next.value){j("}");break}var e;if("default"===c.tokens.next.type?(e="default",j("default")):e=oe(),"as"===c.tokens.next.value&&(j("as"),e=oe()),c.funct["(scope)"].addlabel(e,{type:"import",initialized:!0,token:c.tokens.curr}),","!==c.tokens.next.value){if("}"===c.tokens.next.value){j("}");break}_("E024",c.tokens.next,c.tokens.next.value);break}j(",")}return j("from"),j("(string)"),this}).exps=!0,U("export",function(){var e,t,n=!0;if(c.inES6()||(b("W119",c.tokens.curr,"export","6"),n=!1),c.funct["(scope)"].block.isGlobal()||(_("E053",c.tokens.curr,"Export"),n=!1),"*"===c.tokens.next.value)return j("*"),j("from"),j("(string)"),this;if("default"===c.tokens.next.type){c.nameStack.set(c.tokens.next),j("default");var r=c.tokens.next.id;return"function"!==r&&"class"!==r||(this.block=!0),e=A(),G(10),t=e.value,this.block&&(c.funct["(scope)"].addlabel(t,{type:r,initialized:!0,token:e}),c.funct["(scope)"].setExported(t,e)),this}if("{"===c.tokens.next.value){j("{");for(var i=[];;){if(c.tokens.next.identifier||_("E030",c.tokens.next,c.tokens.next.value),j(),i.push(c.tokens.curr),"as"===c.tokens.next.value&&(j("as"),c.tokens.next.identifier||_("E030",c.tokens.next,c.tokens.next.value),j()),","!==c.tokens.next.value){if("}"===c.tokens.next.value){j("}");break}_("E024",c.tokens.next,c.tokens.next.value);break}j(",")}return"from"===c.tokens.next.value?(j("from"),j("(string)")):n&&i.forEach(function(e){c.funct["(scope)"].setExported(e.value,e)}),this}if("var"===c.tokens.next.id)j("var"),c.tokens.curr.fud({inexport:!0});else if("let"===c.tokens.next.id)j("let"),c.tokens.curr.fud({inexport:!0});else if("const"===c.tokens.next.id)j("const"),c.tokens.curr.fud({inexport:!0});else if("function"===c.tokens.next.id)this.block=!0,j("function"),c.syntax.function.fud({inexport:!0});else if("class"===c.tokens.next.id){this.block=!0,j("class");var o=c.tokens.next;c.syntax.class.fud(),c.funct["(scope)"].setExported(o.value,o)}else _("E024",c.tokens.next,c.tokens.next.value);return this}).exps=!0,H("abstract"),H("await",{es5:!0,moduleOnly:!0}),H("boolean"),H("byte"),H("char"),H("class",{es5:!0,nud:Ge}),H("double"),H("enum",{es5:!0}),H("export",{es5:!0}),H("extends",{es5:!0}),H("final"),H("float"),H("goto"),H("implements",{es5:!0,strictOnly:!0}),H("import",{es5:!0}),H("int"),H("interface",{es5:!0,strictOnly:!0}),H("long"),H("native"),H("package",{es5:!0,strictOnly:!0}),H("private",{es5:!0,strictOnly:!0}),H("protected",{es5:!0,strictOnly:!0}),H("public",{es5:!0,strictOnly:!0}),H("short"),H("static",{es5:!0,strictOnly:!0}),H("super",{es5:!0}),H("synchronized"),H("transient"),H("volatile");var ut=function(){var e,t,n,r=-1,i=0,o={};Pe(c.tokens.curr,["[","{"])&&(i+=1);do{if(n=-1===r?c.tokens.curr:e,e=-1===r?c.tokens.next:A(r),t=A(r+1),r+=1,Pe(e,["[","{"])?i+=1:Pe(e,["]","}"])&&(i-=1),1===i&&e.identifier&&"for"===e.value&&!Re(n,".")){o.isCompArray=!0,o.notJson=!0;break}if(0===i&&Pe(e,["}","]"])){if("="===t.value){o.isDestAssign=!0,o.notJson=!0;break}if("."===t.value){o.notJson=!0;break}}Re(e,";")&&(o.isBlock=!0,o.notJson=!0)}while(i>0&&"(end)"!==e.id);return o},ct=function(){function e(e){return 0!==n.variables.filter(function(t){if(t.value===e)return t.undef=!1,e}).length}function t(e){return 0===n.variables.filter(function(t){if(t.value===e&&!t.undef)return!0===t.unused&&(t.unused=!1),e}).length}var n,i=function(){this.mode="use",this.variables=[]},o=[];return{stack:function(){n=new i,o.push(n)},unstack:function(){n.variables.filter(function(e){e.unused&&b("W098",e.token,e.raw_text||e.value),e.undef&&c.funct["(scope)"].block.use(e.value,e.token)}),o.splice(-1,1),n=o[o.length-1]},setState:function(e){r.contains(["use","define","generate","filter"],e)&&(n.mode=e)},check:function(r){if(n)return n&&"use"===n.mode?(t(r)&&n.variables.push({funct:c.funct,token:c.tokens.curr,value:r,undef:!0,unused:!1}),!0):n&&"define"===n.mode?(e(r)||n.variables.push({funct:c.funct,token:c.tokens.curr,value:r,undef:!1,unused:!0}),!0):n&&"generate"===n.mode?(c.funct["(scope)"].block.use(r,c.tokens.curr),!0):!(!n||"filter"!==n.mode)&&(t(r)&&c.funct["(scope)"].block.use(r,c.tokens.curr),!0)}}},lt=function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},ft=function(n,i,s){function u(e,t){e&&(Array.isArray(e)||"object"!=typeof e||(e=Object.keys(e)),e.forEach(t))}var l,f,d,v,m={},x={};i=r.clone(i),c.reset(),i&&i.scope?h.scope=i.scope:(h.errors=[],h.undefs=[],h.internals=[],h.blacklist={},h.scope="(main)"),g(Ye=Object.create(null),o.ecmaIdentifiers[3]),g(Ye,o.reservedVars),g(Ye,s||{}),qe=Object.create(null);var S=Object.create(null);if(i)for(u(i.predef||null,function(e){var t,n;"-"===e[0]?(t=e.slice(1),h.blacklist[t]=t,delete Ye[t]):(n=Object.getOwnPropertyDescriptor(i.predef,e),Ye[e]=!!n&&n.value)}),u(i.exported||null,function(e){S[e]=!0}),delete i.predef,delete i.exported,v=Object.keys(i),l=0;l0&&(s.implieds=a),et.length>0&&(s.urls=et),(o=c.funct["(scope)"].getUsedOrDefinedGlobals()).length>0&&(s.globals=o),n=1;n0&&(s.unused=u);for(i in Xe)if("number"==typeof Xe[i]){s.member=Xe;break}return s},ft.jshint=ft,ft}());"object"==typeof n&&n&&(n.JSHINT=h)},{"./lex.js":13,"./messages.js":14,"./options.js":16,"./reg.js":17,"./scope-manager.js":18,"./state.js":19,"./style.js":20,"./vars.js":21,"console-browserify":10,events:5,lodash:12}]},{},[]),JSHINT=e("jshint").JSHINT,"object"==typeof exports&&exports&&(exports.JSHINT=JSHINT)}(); From c60ae14ae2447ea25c8f20d1326ccecafbbe05a8 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Wed, 3 Jun 2020 21:05:38 +0800 Subject: [PATCH 69/73] =?UTF-8?q?Fix=20v2.7=20=E5=B7=A5=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor_config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_server/editor_config.js b/_server/editor_config.js index bf0dd074..497c246e 100644 --- a/_server/editor_config.js +++ b/_server/editor_config.js @@ -6,7 +6,7 @@ editor_config.prototype.load = function(callback) { var _this = this; fs.readFile(this.address, "utf-8", function(e, d) { if (e) { - console.warn("无法读取配置文件, 已重新生成"); + console.error("无法读取配置文件, 已重新生成"); _this.config = {}; _this.save(callback); } else { @@ -28,7 +28,7 @@ editor_config.prototype.set = function(key, value, callback) { editor_config.prototype.save = function(callback) { fs.writeFile(this.address, JSON.stringify(this.config) ,'utf-8', function(e) { - if (e) printe("写入配置文件失败"); + if (e) console.error("写入配置文件失败"); if (callback instanceof Function) callback(); }) } From 2feed20190c531139af59ab391ea1c7f96aae83d Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Wed, 3 Jun 2020 22:15:55 +0800 Subject: [PATCH 70/73] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=95=B0=E5=80=BC?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E9=BB=98=E8=AE=A4=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 1 + 1 file changed, 1 insertion(+) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index c8af090c..5cd8fe43 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -947,6 +947,7 @@ setValue_s /* setValue_s tooltip : setValue:设置勇士的某个属性、道具个数, 或某个变量/Flag的值 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setvalue%EF%BC%9A%E8%AE%BE%E7%BD%AE%E5%8B%87%E5%A3%AB%E7%9A%84%E6%9F%90%E4%B8%AA%E5%B1%9E%E6%80%A7%E3%80%81%E9%81%93%E5%85%B7%E4%B8%AA%E6%95%B0%EF%BC%8C%E6%88%96%E6%9F%90%E4%B8%AA%E5%8F%98%E9%87%8Fflag%E7%9A%84%E5%80%BC +default : ["","","",false] colour : this.dataColor if (AssignOperator_List_0 && AssignOperator_List_0 != '=') { AssignOperator_List_0 = ', "operator": "' + AssignOperator_List_0 + '"'; From 60d5e2cc08d889fff45c20081e4a79aac4bb9e17 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Wed, 3 Jun 2020 22:47:51 +0800 Subject: [PATCH 71/73] insertCommonEvent --- libs/events.js | 33 ++++++++++++++++++++++----------- project/plugins.js | 2 +- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/libs/events.js b/libs/events.js index d934c52d..5feed32f 100644 --- a/libs/events.js +++ b/libs/events.js @@ -1010,12 +1010,24 @@ events.prototype.insertAction = function (action, x, y, callback, addToLast) { } ////// 往当前事件列表之前或之后添加一个公共事件 ////// -events.prototype.insertCommonEvent = function (name, x, y, callback, addToLast) { +events.prototype.insertCommonEvent = function (name, args, x, y, callback, addToLast) { var commonEvent = this.getCommonEvent(name); if (!commonEvent) { if (callback) callback(); return; } + + // 设置参数 + core.setFlag('arg0', name); + if (args instanceof Array) { + for (var i = 0; i < args.length; ++i) { + try { + if (args[i] != null) + core.setFlag('arg'+(i+1), args[i]); + } catch (e) { main.log(e); } + } + } + this.insertAction({"type": "dowhile", "condition": "false", "data": commonEvent}, x, y, callback, addToLast); } @@ -1629,20 +1641,19 @@ events.prototype._action_trigger = function (data, x, y, prefix) { } events.prototype._action_insert = function (data, x, y, prefix) { - // 设置参数 - if (data.args instanceof Array) { - for (var i = 0; i < data.args.length; ++i) { - try { - if (data.args[i] != null) - core.setFlag('arg'+(i+1), data.args[i]); - } catch (e) { main.log(e); } - } - } if (data.name) { // 公共事件 - core.setFlag('arg0', data.name); core.insertCommonEvent(data.name); } else { + // 设置参数 + if (data.args instanceof Array) { + for (var i = 0; i < data.args.length; ++i) { + try { + if (data.args[i] != null) + core.setFlag('arg'+(i+1), data.args[i]); + } catch (e) { main.log(e); } + } + } var loc = this.__action_getLoc(data.loc, x, y, prefix); core.setFlag('arg0', loc); var floorId = data.floorId; diff --git a/project/plugins.js b/project/plugins.js index 44a805ee..91596be0 100644 --- a/project/plugins.js +++ b/project/plugins.js @@ -113,7 +113,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = return; } if (shop.commonEvent) { - core.insertAction({ "type": "insert", "name": shop.commonEvent, "args": shop.args }); + core.insertCommonEvent(shop.commonEvent, shop.args); return; } From f86591413984c3bf6e6d1e2decdc943a3dccd4fb Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Thu, 4 Jun 2020 12:05:49 +0800 Subject: [PATCH 72/73] =?UTF-8?q?=E4=B8=80=E4=BA=9B=E7=BB=86=E8=8A=82?= =?UTF-8?q?=E7=9A=84=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 8 +++----- _server/MotaActionParser.js | 2 ++ _server/table/comment.js | 2 +- editor-mobile.html | 1 + editor.html | 1 + libs/events.js | 29 ++++++++++++++++++++--------- 6 files changed, 28 insertions(+), 15 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 5cd8fe43..77ecf791 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -1258,7 +1258,6 @@ tooltip : showFloorImg: 显示一个贴图,xy为左上角坐标,可用逗号 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showFloorImg%ef%bc%9a%e6%98%be%e7%a4%ba%e8%b4%b4%e5%9b%be default : ["","",""] allFloorIds : ['IdString_0'] -selectPoint : ["EvalString_0", "EvalString_1", "IdString_0"] colour : this.mapColor var floorstr = ''; if (EvalString_0 && EvalString_1) { @@ -1292,7 +1291,6 @@ helpUrl : https://h5mota.com/games/template/_docs/#/event?id=hideFloorImg%ef%bc% default : ["","",""] allFloorIds : ['IdString_0'] colour : this.mapColor -selectPoint : ["EvalString_0", "EvalString_1", "IdString_0"] var floorstr = ''; if (EvalString_0 && EvalString_1) { var pattern1 = MotaActionFunctions.pattern.id; @@ -2445,7 +2443,7 @@ break_s : '跳出当前循环或公共事件' Newline /* break_s -tooltip : break:跳出循环, 如果break事件不在任何循环中被执行,则和exit等价,即会立刻结束当前事件! +tooltip : break:跳出循环或公共事件! helpUrl : https://h5mota.com/games/template/_docs/#/event?id=break%EF%BC%9A%E8%B7%B3%E5%87%BA%E5%BE%AA%E7%8E%AF colour : this.eventColor var code = '{"type": "break"},\n'; @@ -2453,10 +2451,10 @@ return code; */; continue_s - : '继续当前循环' Newline + : '提前结束本轮循环或跳出公共事件' Newline /* continue_s -tooltip : continue:继续执行当前循环的下一轮, 如果continue事件不在任何循环中被执行,则和exit等价,即会立刻结束当前事件! +tooltip : continue:继续执行当前循环的下一轮,或跳出公共事件! helpUrl : https://h5mota.com/games/template/_docs/#/event?id=continue%EF%BC%9A%E7%BB%A7%E7%BB%AD%E6%89%A7%E8%A1%8C%E5%BD%93%E5%89%8D%E5%BE%AA%E7%8E%AF colour : this.eventColor var code = '{"type": "continue"},\n'; diff --git a/_server/MotaActionParser.js b/_server/MotaActionParser.js index 43c59ca1..6f16a939 100644 --- a/_server/MotaActionParser.js +++ b/_server/MotaActionParser.js @@ -1201,6 +1201,8 @@ MotaActionFunctions.IdString_pre = function(IdString){ MotaActionFunctions.PosString_pre = function(PosString){ if (!PosString || /^-?\d+$/.test(PosString)) return PosString; //if (!(MotaActionFunctions.pattern.id.test(PosString)))throw new Error(PosString+'中包含了0-9 a-z A-Z _ 和中文之外的字符,或者是没有以flag: 开头'); + var comma = PosString.indexOf(','); + if (comma >= 0 && PosString.substring(0, comma).indexOf('(') < 0) throw '此处不可写多点坐标'; return '"'+MotaActionFunctions.replaceFromName(PosString)+'"'; } diff --git a/_server/table/comment.js b/_server/table/comment.js index 1531ff7a..c79ee185 100644 --- a/_server/table/comment.js +++ b/_server/table/comment.js @@ -509,7 +509,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "ratio": { "_leaf": true, "_type": "textarea", - "_range": "(thiseval==~~thiseval && thiseval>=0)||thiseval==null", + "_range": "thiseval==~~thiseval && thiseval>=0", "_docs": "宝石血瓶效果", "_data": "每一层的宝石/血瓶效果,即获得宝石和血瓶时框内\"ratio\"的值。" } diff --git a/editor-mobile.html b/editor-mobile.html index 19cf4c3c..19b04ef0 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -7,6 +7,7 @@ +