difenduandada
2024-12-31 34abe6963b344c882358274957f4b992456fee40
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
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
247
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
 
                (function() {
                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
                    var __module = nodeEnv ? module : {exports:{}};
                    var __filename = 'preview-scripts/assets/Scripts/mod/battle/battle_const.js';
                    var __require = nodeEnv ? function (request) {
                        return cc.require(request);
                    } : function (request) {
                        return __quick_compile_project__.require(request, __filename);
                    };
                    function __define (exports, require, module) {
                        if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
cc._RF.push(module, 'da627tjxzpNZL4bM5lpxwlz', 'battle_const');
// Scripts/mod/battle/battle_const.js
 
"use strict";
 
var _Old_Halo_Id_Change;
 
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
 
// --------------------------------------------------------------------
// @author: shiraho@syg.com(必填, 创建模块的人员)
// @description:
//      战斗的常量控制
// <br/>Create: new Date().toISOString()
// --------------------------------------------------------------------
var BattleConst = {
  Fight_Type: {
    Nil: 0,
    Default: 1,
    Arena: 2,
    //竞技场
    Darma: 3,
    //剧情副本战斗
    SingleBoss: 4,
    //个人Boss
    WorldBoss: 5,
    //世界boss
    Adventrue: 6,
    //神界探险
    StarTower: 7,
    //星命塔
    PK: 8,
    //切磋
    GuildDun: 9,
    //帮会副本
    Champion: 10,
    //冠军联赛
    Endless: 11,
    //无尽试炼
    LimitBoss: 12,
    //限时BOSS
    Escort: 13,
    //护送
    DungeonStone: 14,
    //宝石副本
    Godbattle: 15,
    //众神战场
    GuildWar: 16,
    //联盟战
    PrimusWar: 17,
    //荣耀神殿战
    LadderWar: 18,
    //跨服天梯
    ExpeditFight: 21,
    //远征
    EliteMatchWar: 23,
    //精英赛
    EliteKingMatchWar: 24,
    //王者赛
    ElementWar: 25,
    // 元素圣殿
    HeroTestWar: 26,
    // 英雄试玩
    HeavenWar: 27,
    // 天界副本
    CrossArenaWar: 28,
    // 跨服竞技场
    LimitExercise: 29,
    // 试炼之境
    AdventrueMine: 30 //秘矿冒险
 
  },
  // 战斗单位类型
  Unit_Type: {
    Role: 1,
    // 主角单位,暂时没有用了
    Hero: 2,
    // 伙伴
    Monster: 3,
    // 怪物
    Hallows: 4 // 神器
 
  },
  Group_Type: {
    Friend: 1,
    Enemgy: 2
  },
  Battle_Type_Conf: {
    TYPE_ENEMY: -1,
    TYPE_ROLE: 1,
    BATTLE_EXIT: 1
  },
  Skill_Type: {
    ACTIVE_SKILL: "active_skill",
    //主动技能
    PASSIVE_SKILL: "passive_skill",
    //被动技能
    EQM_PASSIVE_SKILL: "eqm_passive_skill" //装备被动技能
 
  },
  // 战斗特效播放类型
  Effect_Play_Type: {
    ROLE: 1,
    // 自己
    SCENE: 2,
    // 场景
    ROLE_SCENE: 3,
    // 友方场景
    ENEMY_SCENE: 4,
    // 敌方场景
    TARGET: 5 // 敌方目标
 
  },
  // 是否在战斗中的类型
  Battle_In_Type: {
    Nil: 0,
    // 当前不在战斗
    UnReal: 1,
    // 假战斗
    Real: 2 // 真战斗
 
  },
  // 分享类型
  ShareType: {
    SharePk: 1,
    //轮播
    SharePlunder: 2,
    //一直播
    ShareLadder: 3 // 天梯
 
  },
  JumpType: {
    Summon: 1,
    // 召唤
    HeroBag: 2,
    // 英雄背包
    Forge: 3,
    // 锻造屋
    Hallows: 4 // 神器
 
  },
  // 根据战斗类型判断当前的ui类型
  getUIFightByFightType: function getUIFightByFightType(fight_type) {
    var MainuiConst = require("mainui_const");
 
    switch (fight_type) {
      case this.Fight_Type.Darma:
      case this.Fight_Type.Nil:
        return MainuiConst.ui_fight_type.drama_scene;
 
      case this.Fight_Type.StarTower:
        return MainuiConst.ui_fight_type.star_tower;
 
      case this.Fight_Type.GuildDun:
        return MainuiConst.ui_fight_type.guild_dun;
 
      case this.Fight_Type.Arena:
        return MainuiConst.ui_fight_type.arena;
 
      case this.Fight_Type.LimitBoss:
        return MainuiConst.ui_fight_type.limit_boss;
 
      case this.Fight_Type.GuildWar:
        return MainuiConst.ui_fight_type.guildwar;
 
      case this.Fight_Type.PrimusWar:
        return MainuiConst.ui_fight_type.primusWar;
 
      case this.Fight_Type.LadderWar:
        return MainuiConst.ui_fight_type.ladderwar;
 
      case this.Fight_Type.Endless:
        //无尽试炼
        return MainuiConst.ui_fight_type.endless;
 
      case this.Fight_Type.ExpeditFight:
        //远征
        return MainuiConst.ui_fight_type.expedit_fight;
 
      case this.Fight_Type.DungeonStone:
        return MainuiConst.ui_fight_type.dungeon_stone;
 
      case this.Fight_Type.ElementWar:
        //元素圣殿
        return MainuiConst.ui_fight_type.dungeon_stone;
 
      case this.Fight_Type.HeavenWar:
        //天界副本
        return MainuiConst.ui_fight_type.dungeon_stone;
 
      case this.Fight_Type.Adventrue:
        //冒险
        return MainuiConst.ui_fight_type.sky_scene;
 
      default:
        return MainuiConst.ui_fight_type.drama_scene;
    }
  },
  // 特殊类型的战斗,
  isNoRequest: function isNoRequest(fight_type) {
    return fight_type == this.Fight_Type.Default || fight_type == this.Fight_Type.PK || fight_type == this.Fight_Type.HeroTestWar;
  },
  // 是否是pvp战斗
  isPvP: function isPvP(fight_type) {
    return fight_type == this.Fight_Type.Arena || fight_type == this.Fight_Type.Escort;
  },
  // 是否需要显示玩家名字的
  isNeedName: function isNeedName(fight_type) {
    return fight_type == this.Fight_Type.PK;
  },
  // 是否显示入场pk动画
  isNeedSpecStart: function isNeedSpecStart(fight_type) {
    return fight_type == BattleConst.Fight_Type.Arena || fight_type == BattleConst.Fight_Type.Champion || fight_type == BattleConst.Fight_Type.PK || fight_type == BattleConst.Fight_Type.LadderWar;
  },
  // 是否可以进战斗,这个时候就需要判断当前战斗类型的面板类型跟主界面缓存的类型是否一致
  canDoBattle: function canDoBattle(fight_type) {
    var target_ui_fight_type = this.getUIFightByFightType(fight_type);
 
    var MainUiController = require("mainui_controller");
 
    var BattleController = require("battle_controller");
 
    var cur_ui_fight_type = MainUiController.getInstance().getUIFightType();
    return cur_ui_fight_type == target_ui_fight_type || this.isNoRequest(fight_type) || BattleController.getInstance().getWatchReplayStatus();
  },
  //战斗分组
  BattleGroupTypeConf: {
    TYPE_GROUP_ENEMY: 2,
    //敌方
    TYPE_GROUP_ROLE: 1 //友方
 
  },
  // --战斗单位类型
  BattleObjectType: {
    Role: 1,
    //--角色(暂时没有了)
    Pet: 2,
    //--伙伴(配置表取partern)
    Unit: 3,
    //--单位(配置表取unit)
    Hallows: 4 //--神器
 
  },
  // -- 兼容旧的录像数据中阵营光环id(转为现在的id列表)
  Old_Halo_Id_Change: (_Old_Halo_Id_Change = {}, _defineProperty(_Old_Halo_Id_Change, 1, [1]), _defineProperty(_Old_Halo_Id_Change, 2, [2]), _defineProperty(_Old_Halo_Id_Change, 3, [3]), _defineProperty(_Old_Halo_Id_Change, 4, [4]), _defineProperty(_Old_Halo_Id_Change, 5, [5]), _defineProperty(_Old_Halo_Id_Change, 6, [21]), _defineProperty(_Old_Halo_Id_Change, 7, [6]), _defineProperty(_Old_Halo_Id_Change, 8, [6]), _defineProperty(_Old_Halo_Id_Change, 9, [7]), _defineProperty(_Old_Halo_Id_Change, 10, [7]), _defineProperty(_Old_Halo_Id_Change, 11, [8]), _defineProperty(_Old_Halo_Id_Change, 12, [8]), _defineProperty(_Old_Halo_Id_Change, 13, [11, 18]), _defineProperty(_Old_Halo_Id_Change, 14, [13, 17]), _defineProperty(_Old_Halo_Id_Change, 15, [12, 16]), _defineProperty(_Old_Halo_Id_Change, 16, [14, 20]), _defineProperty(_Old_Halo_Id_Change, 17, [15, 19]), _Old_Halo_Id_Change)
};
module.exports = BattleConst;
 
cc._RF.pop();
                    }
                    if (nodeEnv) {
                        __define(__module.exports, __require, __module);
                    }
                    else {
                        __quick_compile_project__.registerModuleFunc(__filename, function () {
                            __define(__module.exports, __require, __module);
                        });
                    }
                })();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxiYXR0bGVcXGJhdHRsZV9jb25zdC5qcyJdLCJuYW1lcyI6WyJCYXR0bGVDb25zdCIsIkZpZ2h0X1R5cGUiLCJOaWwiLCJEZWZhdWx0IiwiQXJlbmEiLCJEYXJtYSIsIlNpbmdsZUJvc3MiLCJXb3JsZEJvc3MiLCJBZHZlbnRydWUiLCJTdGFyVG93ZXIiLCJQSyIsIkd1aWxkRHVuIiwiQ2hhbXBpb24iLCJFbmRsZXNzIiwiTGltaXRCb3NzIiwiRXNjb3J0IiwiRHVuZ2VvblN0b25lIiwiR29kYmF0dGxlIiwiR3VpbGRXYXIiLCJQcmltdXNXYXIiLCJMYWRkZXJXYXIiLCJFeHBlZGl0RmlnaHQiLCJFbGl0ZU1hdGNoV2FyIiwiRWxpdGVLaW5nTWF0Y2hXYXIiLCJFbGVtZW50V2FyIiwiSGVyb1Rlc3RXYXIiLCJIZWF2ZW5XYXIiLCJDcm9zc0FyZW5hV2FyIiwiTGltaXRFeGVyY2lzZSIsIkFkdmVudHJ1ZU1pbmUiLCJVbml0X1R5cGUiLCJSb2xlIiwiSGVybyIsIk1vbnN0ZXIiLCJIYWxsb3dzIiwiR3JvdXBfVHlwZSIsIkZyaWVuZCIsIkVuZW1neSIsIkJhdHRsZV9UeXBlX0NvbmYiLCJUWVBFX0VORU1ZIiwiVFlQRV9ST0xFIiwiQkFUVExFX0VYSVQiLCJTa2lsbF9UeXBlIiwiQUNUSVZFX1NLSUxMIiwiUEFTU0lWRV9TS0lMTCIsIkVRTV9QQVNTSVZFX1NLSUxMIiwiRWZmZWN0X1BsYXlfVHlwZSIsIlJPTEUiLCJTQ0VORSIsIlJPTEVfU0NFTkUiLCJFTkVNWV9TQ0VORSIsIlRBUkdFVCIsIkJhdHRsZV9Jbl9UeXBlIiwiVW5SZWFsIiwiUmVhbCIsIlNoYXJlVHlwZSIsIlNoYXJlUGsiLCJTaGFyZVBsdW5kZXIiLCJTaGFyZUxhZGRlciIsIkp1bXBUeXBlIiwiU3VtbW9uIiwiSGVyb0JhZyIsIkZvcmdlIiwiZ2V0VUlGaWdodEJ5RmlnaHRUeXBlIiwiZmlnaHRfdHlwZSIsIk1haW51aUNvbnN0IiwicmVxdWlyZSIsInVpX2ZpZ2h0X3R5cGUiLCJkcmFtYV9zY2VuZSIsInN0YXJfdG93ZXIiLCJndWlsZF9kdW4iLCJhcmVuYSIsImxpbWl0X2Jvc3MiLCJndWlsZHdhciIsInByaW11c1dhciIsImxhZGRlcndhciIsImVuZGxlc3MiLCJleHBlZGl0X2ZpZ2h0IiwiZHVuZ2Vvbl9zdG9uZSIsInNreV9zY2VuZSIsImlzTm9SZXF1ZXN0IiwiaXNQdlAiLCJpc05lZWROYW1lIiwiaXNOZWVkU3BlY1N0YXJ0IiwiY2FuRG9CYXR0bGUiLCJ0YXJnZXRfdWlfZmlnaHRfdHlwZSIsIk1haW5VaUNvbnRyb2xsZXIiLCJCYXR0bGVDb250cm9sbGVyIiwiY3VyX3VpX2ZpZ2h0X3R5cGUiLCJnZXRJbnN0YW5jZSIsImdldFVJRmlnaHRUeXBlIiwiZ2V0V2F0Y2hSZXBsYXlTdGF0dXMiLCJCYXR0bGVHcm91cFR5cGVDb25mIiwiVFlQRV9HUk9VUF9FTkVNWSIsIlRZUEVfR1JPVVBfUk9MRSIsIkJhdHRsZU9iamVjdFR5cGUiLCJQZXQiLCJVbml0IiwiT2xkX0hhbG9fSWRfQ2hhbmdlIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUEsV0FBVyxHQUFHO0FBQ2RDLEVBQUFBLFVBQVUsRUFBQztBQUNQQyxJQUFBQSxHQUFHLEVBQUUsQ0FERTtBQUVQQyxJQUFBQSxPQUFPLEVBQUUsQ0FGRjtBQUdQQyxJQUFBQSxLQUFLLEVBQUUsQ0FIQTtBQUdhO0FBQ3BCQyxJQUFBQSxLQUFLLEVBQUUsQ0FKQTtBQUlhO0FBQ3BCQyxJQUFBQSxVQUFVLEVBQUUsQ0FMTDtBQUthO0FBQ3BCQyxJQUFBQSxTQUFTLEVBQUUsQ0FOSjtBQU1hO0FBQ3BCQyxJQUFBQSxTQUFTLEVBQUUsQ0FQSjtBQU9hO0FBQ3BCQyxJQUFBQSxTQUFTLEVBQUUsQ0FSSjtBQVFhO0FBQ3BCQyxJQUFBQSxFQUFFLEVBQUUsQ0FURztBQVNhO0FBQ3BCQyxJQUFB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LENBSkssQ0FJQTs7QUFKQSxHQS9KTDtBQXNLZDtBQUNBZ0UsRUFBQUEsa0JBQWtCLGtFQUNiLENBRGEsRUFDUixDQUFDLENBQUQsQ0FEUSx3Q0FFYixDQUZhLEVBRVIsQ0FBQyxDQUFELENBRlEsd0NBR2IsQ0FIYSxFQUdSLENBQUMsQ0FBRCxDQUhRLHdDQUliLENBSmEsRUFJUixDQUFDLENBQUQsQ0FKUSx3Q0FLYixDQUxhLEVBS1IsQ0FBQyxDQUFELENBTFEsd0NBTWIsQ0FOYSxFQU1SLENBQUMsRUFBRCxDQU5RLHdDQU9iLENBUGEsRUFPUixDQUFDLENBQUQsQ0FQUSx3Q0FRYixDQVJhLEVBUVIsQ0FBQyxDQUFELENBUlEsd0NBU2IsQ0FUYSxFQVNSLENBQUMsQ0FBRCxDQVRRLHdDQVViLEVBVmEsRUFVUCxDQUFDLENBQUQsQ0FWTyx3Q0FXYixFQVhhLEVBV1AsQ0FBQyxDQUFELENBWE8sd0NBWWIsRUFaYSxFQVlQLENBQUMsQ0FBRCxDQVpPLHdDQWFiLEVBYmEsRUFhUCxDQUFDLEVBQUQsRUFBSSxFQUFKLENBYk8sd0NBY2IsRUFkYSxFQWNQLENBQUMsRUFBRCxFQUFJLEVBQUosQ0FkTyx3Q0FlYixFQWZhLEVBZVAsQ0FBQyxFQUFELEVBQUksRUFBSixDQWZPLHdDQWdCYixFQWhCYSxFQWdCUCxDQUFDLEVBQUQsRUFBSSxFQUFKLENBaEJPLHdDQWlCYixFQWpCYSxFQWlCUCxDQUFDLEVBQUQsRUFBSSxFQUFKLENBakJPO0FBdktKLENBQWxCO0FBMkxBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJwRyxXQUFqQiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBhdXRob3I6IHNoaXJhaG9Ac3lnLmNvbSjlv4XloassIOWIm+W7uuaooeWdl+eahOS6uuWRmClcbi8vIEBkZXNjcmlwdGlvbjpcbi8vICAgICAg5oiY5paX55qE5bi46YeP5o6n5Yi2XG4vLyA8YnIvPkNyZWF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudmFyIEJhdHRsZUNvbnN0ID0ge1xuICAgIEZpZ2h0X1R5cGU6e1xuICAgICAgICBOaWw6IDAsXG4gICAgICAgIERlZmF1bHQ6IDEsXG4gICAgICAgIEFyZW5hOiAyLCAgICAgICAgICAgLy/nq57mioDlnLpcbiAgICAgICAgRGFybWE6IDMsICAgICAgICAgICAvL+WJp+aDheWJr+acrOaImOaWl1xuICAgICAgICBTaW5nbGVCb3NzOiA0LCAgICAgIC8v5Liq5Lq6Qm9zc1xuICAgICAgICBXb3JsZEJvc3M6IDUsICAgICAgIC8v5LiW55WMYm9zc1xuICAgICAgICBBZHZlbnRydWU6IDYsICAgICAgIC8v56We55WM5o6i6ZmpXG4gICAgICAgIFN0YXJUb3dlcjogNywgICAgICAgLy/mmJ/lkb3loZRcbiAgICAgICAgUEs6IDgsICAgICAgICAgICAgICAvL+WIh+eji1xuICAgICAgICBHdWlsZER1bjogOSwgICAgICAgIC8v5biu5Lya5Ymv5pysXG4gICAgICAgIENoYW1waW9uOiAxMCwgICAgICAgLy/lhqDlhpvogZTotZtcbiAgICAgICAgRW5kbGVzczogMTEsICAgICAgICAvL+aXoOWwveivleeCvFxuICAgICAgICBMaW1pdEJvc3M6IDEyLCAgICAgIC8v6ZmQ5pe2Qk9TU1xuICAgICAgICBFc2NvcnQ6IDEzLCAgICAgICAgIC8v5oqk6YCBXG4gICAgICAgIER1bmdlb25TdG9uZTogMTQsICAgLy/lrp3nn7Plia/mnKxcbiAgICAgICAgR29kYmF0dGxlOiAxNSwgICAgICAvL+S8l+elnuaImOWculxuICAgICAgICBHdWlsZFdhcjogMTYsICAgICAgIC8v6IGU55uf5oiYXG4gICAgICAgIFByaW11c1dhcjogMTcsICAgICAgLy/ojaPogIDnpZ7mrr/miJhcbiAgICAgICAgTGFkZGVyV2FyOiAxOCwgICAgICAvL+i3qOacjeWkqeair1xuICAgICAgICBFeHBlZGl0RmlnaHQ6IDIxLCAgIC8v6L+c5b6BXG4gICAgICAgIEVsaXRlTWF0Y2hXYXIgOiAyMywgLy/nsr7oi7HotZtcbiAgICAgICAgRWxpdGVLaW5nTWF0Y2hXYXIgOiAyNCwgLy/njovogIXotZtcbiAgICAgICAgRWxlbWVudFdhcjogMjUsICAgICAvLyDlhYPntKDlnKPmrr9cbiAgICAgICAgSGVyb1Rlc3RXYXI6IDI2LCAgICAvLyDoi7Hpm4Tor5XnjqlcbiAgICAgICAgSGVhdmVuV2FyOiAyNywgICAgICAvLyDlpKnnlYzlia/mnKxcbiAgICAgICAgQ3Jvc3NBcmVuYVdhciA6IDI4LCAvLyDot6jmnI3nq57mioDlnLpcbiAgICAgICAgTGltaXRFeGVyY2lzZSA6IDI5LCAvLyDor5XngrzkuYvlooNcbiAgICAgICAgQWR2ZW50cnVlTWluZSA6IDMwLCAvL+enmOefv+WGkumZqVxuICAgIH0sXG5cbiAgICAvLyDmiJjmlpfljZXkvY3nsbvlnotcbiAgICBVbml0X1R5cGU6e1xuICAgICAgICBSb2xlOiAxLCAgICAgICAgICAgIC8vIOS4u+inkuWNleS9jSzmmoLml7bmsqHmnInnlKjkuoZcbiAgICAgICAgSGVybzogMiwgICAgICAgICAgICAvLyDkvJnkvLRcbiAgICAgICAgTW9uc3RlcjogMywgICAgICAgICAvLyDmgKrnialcbiAgICAgICAgSGFsbG93czogNCwgICAgICAgICAvLyDnpZ7lmahcbiAgICB9LFxuXG4gICAgR3JvdXBfVHlwZTp7XG4gICAgICAgIEZyaWVuZDoxLFxuICAgICAgICBFbmVtZ3k6MixcbiAgICB9LFxuXG4gICAgQmF0dGxlX1R5cGVfQ29uZjp7XG4gICAgICAgIFRZUEVfRU5FTVk6IC0gMSxcbiAgICAgICAgVFlQRV9ST0xFOiAxLFxuICAgICAgICBCQVRUTEVfRVhJVDogMVxuICAgIH0sXG5cbiAgICBTa2lsbF9UeXBlOntcbiAgICAgICAgQUNUSVZFX1NLSUxMOiBcImFjdGl2ZV9za2lsbFwiLCAgICAgICAgICAgICAgIC8v5Li75Yqo5oqA6IO9XG4gICAgICAgIFBBU1NJVkVfU0tJTEw6IFwicGFzc2l2ZV9za2lsbFwiLCAgICAgICAgICAgICAvL+iiq+WKqOaKgOiDvVxuICAgICAgICBFUU1fUEFTU0lWRV9TS0lMTDogXCJlcW1fcGFzc2l2ZV9za2lsbFwiLCAgICAgLy/oo4XlpIfooqvliqjmioDog71cbiAgICB9LFxuXG4gICAgLy8g5oiY5paX54m55pWI5pKt5pS+57G75Z6LXG4gICAgRWZmZWN0X1BsYXlfVHlwZTp7XG4gICAgICAgIFJPTEU6IDEsICAgICAgICAgICAgICAgIC8vIOiHquW3sVxuICAgICAgICBTQ0VORTogMiwgICAgICAgICAgICAgICAvLyDlnLrmma9cbiAgICAgICAgUk9MRV9TQ0VORTogMywgICAgICAgICAgLy8g5Y+L5pa55Zy65pmvXG4gICAgICAgIEVORU1ZX1NDRU5FOiA0LCAgICAgICAgIC8vIOaVjOaWueWcuuaZr1xuICAgICAgICBUQVJHRVQ6IDUsICAgICAgICAgICAgICAvLyDmlYzmlrnnm67moIdcbiAgICB9LFxuXG4gICAgLy8g5piv5ZCm5Zyo5oiY5paX5Lit55qE57G75Z6LXG4gICAgQmF0dGxlX0luX1R5cGU6e1xuICAgICAgICBOaWw6IDAsICAgICAgICAgICAgICAgICAvLyDlvZPliY3kuI3lnKjmiJjmlpdcbiAgICAgICAgVW5SZWFsOiAxLCAgICAgICAgICAgICAgLy8g5YGH5oiY5paXXG4gICAgICAgIFJlYWw6IDIsICAgICAgICAgICAgICAgIC8vIOecn+aImOaWl1xuICAgIH0sXG4gICAgLy8g5YiG5Lqr57G75Z6LXG4gICAgU2hhcmVUeXBlIDoge1xuICAgICAgICBTaGFyZVBrIDogMSwgLy/ova7mkq1cbiAgICAgICAgU2hhcmVQbHVuZGVyIDogMiwgLy/kuIDnm7Tmkq1cbiAgICAgICAgU2hhcmVMYWRkZXIgOiAzLCAgLy8g5aSp5qKvXG4gICAgfSxcbiAgICBKdW1wVHlwZSA6IHtcbiAgICAgICAgU3VtbW9uIDogMSwgICAvLyDlj6zllKRcbiAgICAgICAgSGVyb0JhZyA6IDIsICAvLyDoi7Hpm4Tog4zljIVcbiAgICAgICAgRm9yZ2UgOiAzLCAgICAvLyDplLvpgKDlsYtcbiAgICAgICAgSGFsbG93cyA6IDQsICAvLyDnpZ7lmahcbiAgICB9LFxuXG4gICAgLy8g5qC55o2u5oiY5paX57G75Z6L5Yik5pat5b2T5YmN55qEdWnnsbvlnotcbiAgICBnZXRVSUZpZ2h0QnlGaWdodFR5cGU6ZnVuY3Rpb24oZmlnaHRfdHlwZSl7XG4gICAgICAgIHZhciBNYWludWlDb25zdCA9IHJlcXVpcmUoXCJtYWludWlfY29uc3RcIik7XG4gICAgICAgIHN3aXRjaCAoZmlnaHRfdHlwZSkge1xuICAgICAgICAgICAgY2FzZSB0aGlzLkZpZ2h0X1R5cGUuRGFybWE6XG4gICAgICAgICAgICBjYXNlIHRoaXMuRmlnaHRfVHlwZS5OaWw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1haW51aUNvbnN0LnVpX2ZpZ2h0X3R5cGUuZHJhbWFfc2NlbmU7XG4gICAgICAgICAgICBjYXNlIHRoaXMuRmlnaHRfVHlwZS5TdGFyVG93ZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1haW51aUNvbnN0LnVpX2ZpZ2h0X3R5cGUuc3Rhcl90b3dlcjtcbiAgICAgICAgICAgIGNhc2UgdGhpcy5GaWdodF9UeXBlLkd1aWxkRHVuOlxuICAgICAgICAgICAgICAgIHJldHVybiBNYWludWlDb25zdC51aV9maWdodF90eXBlLmd1aWxkX2R1bjtcbiAgICAgICAgICAgIGNhc2UgdGhpcy5GaWdodF9UeXBlLkFyZW5hOlxuICAgICAgICAgICAgICAgIHJldHVybiBNYWludWlDb25zdC51aV9maWdodF90eXBlLmFyZW5hO1xuICAgICAgICAgICAgY2FzZSB0aGlzLkZpZ2h0X1R5cGUuTGltaXRCb3NzOlxuICAgICAgICAgICAgICAgIHJldHVybiBNYWludWlDb25zdC51aV9maWdodF90eXBlLmxpbWl0X2Jvc3M7XG4gICAgICAgICAgICBjYXNlIHRoaXMuRmlnaHRfVHlwZS5HdWlsZFdhcjpcbiAgICAgICAgICAgICAgICByZXR1cm4gTWFpbnVpQ29uc3QudWlfZmlnaHRfdHlwZS5ndWlsZHdhcjtcbiAgICAgICAgICAgIGNhc2UgdGhpcy5GaWdodF9UeXBlLlByaW11c1dhcjpcbiAgICAgICAgICAgICAgICByZXR1cm4gTWFpbnVpQ29uc3QudWlfZmlnaHRfdHlwZS5wcmltdXNXYXI7XG4gICAgICAgICAgICBjYXNlIHRoaXMuRmlnaHRfVHlwZS5MYWRkZXJXYXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1haW51aUNvbnN0LnVpX2ZpZ2h0X3R5cGUubGFkZGVyd2FyO1xuICAgICAgICAgICAgY2FzZSB0aGlzLkZpZ2h0X1R5cGUuRW5kbGVzczovL+aXoOWwveivleeCvFxuICAgICAgICAgICAgICAgIHJldHVybiBNYWludWlDb25zdC51aV9maWdodF90eXBlLmVuZGxlc3M7XG4gICAgICAgICAgICBjYXNlIHRoaXMuRmlnaHRfVHlwZS5FeHBlZGl0RmlnaHQ6Ly/ov5zlvoFcbiAgICAgICAgICAgICAgICByZXR1cm4gTWFpbnVpQ29uc3QudWlfZmlnaHRfdHlwZS5leHBlZGl0X2ZpZ2h0O1xuICAgICAgICAgICAgY2FzZSB0aGlzLkZpZ2h0X1R5cGUuRHVuZ2VvblN0b25lOlxuICAgICAgICAgICAgICAgIHJldHVybiBNYWludWlDb25zdC51aV9maWdodF90eXBlLmR1bmdlb25fc3RvbmU7XG4gICAgICAgICAgICBjYXNlIHRoaXMuRmlnaHRfVHlwZS5FbGVtZW50V2FyOi8v5YWD57Sg5Zyj5q6/XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1haW51aUNvbnN0LnVpX2ZpZ2h0X3R5cGUuZHVuZ2Vvbl9zdG9uZTtcbiAgICAgICAgICAgIGNhc2UgdGhpcy5GaWdodF9UeXBlLkhlYXZlbldhcjovL+WkqeeVjOWJr+acrFxuICAgICAgICAgICAgICAgIHJldHVybiBNYWludWlDb25zdC51aV9maWdodF90eXBlLmR1bmdlb25fc3RvbmU7XG4gICAgICAgICAgICBjYXNlIHRoaXMuRmlnaHRfVHlwZS5BZHZlbnRydWU6Ly/lhpLpmalcbiAgICAgICAgICAgICAgICByZXR1cm4gTWFpbnVpQ29uc3QudWlfZmlnaHRfdHlwZS5za3lfc2NlbmU7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBNYWludWlDb25zdC51aV9maWdodF90eXBlLmRyYW1hX3NjZW5lO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8vIOeJueauiuexu+Wei+eahOaImOaWlyxcbiAgICBpc05vUmVxdWVzdDpmdW5jdGlvbihmaWdodF90eXBlKXtcbiAgICAgICAgcmV0dXJuIChmaWdodF90eXBlID09IHRoaXMuRmlnaHRfVHlwZS5EZWZhdWx0IHx8IGZpZ2h0X3R5cGUgPT0gdGhpcy5GaWdodF9UeXBlLlBLIHx8IGZpZ2h0X3R5cGUgPT0gdGhpcy5GaWdodF9UeXBlLkhlcm9UZXN0V2FyKTtcbiAgICB9LFxuXG4gICAgLy8g5piv5ZCm5pivcHZw5oiY5paXXG4gICAgaXNQdlA6ZnVuY3Rpb24oZmlnaHRfdHlwZSl7XG4gICAgICAgIHJldHVybiAoZmlnaHRfdHlwZSA9PSB0aGlzLkZpZ2h0X1R5cGUuQXJlbmEgfHwgZmlnaHRfdHlwZSA9PSB0aGlzLkZpZ2h0X1R5cGUuRXNjb3J0KTtcbiAgICB9LFxuXG4gICAgLy8g5piv5ZCm6ZyA6KaB5pi+56S6546p5a625ZCN5a2X55qEXG4gICAgaXNOZWVkTmFtZTpmdW5jdGlvbihmaWdodF90eXBlKXtcbiAgICAgICAgcmV0dXJuIChmaWdodF90eXBlID09IHRoaXMuRmlnaHRfVHlwZS5QSyk7XG4gICAgfSxcblxuICAgIC8vIOaYr+WQpuaYvuekuuWFpeWcunBr5Yqo55S7XG4gICAgaXNOZWVkU3BlY1N0YXJ0OiBmdW5jdGlvbiAoZmlnaHRfdHlwZSkge1xuICAgICAgICByZXR1cm4gZmlnaHRfdHlwZSA9PSBCYXR0bGVDb25zdC5GaWdodF9UeXBlLkFyZW5hIHx8IGZpZ2h0X3R5cGUgPT0gQmF0dGxlQ29uc3QuRmlnaHRfVHlwZS5DaGFtcGlvbiB8fCBmaWdodF90eXBlID09IEJhdHRsZUNvbnN0LkZpZ2h0X1R5cGUuUEsgfHwgZmlnaHRfdHlwZSA9PSBCYXR0bGVDb25zdC5GaWdodF9UeXBlLkxhZGRlcldhclxuICAgIH0sXG5cbiAgICAvLyDmmK/lkKblj6/ku6Xov5vmiJjmlpcs6L+Z5Liq5pe25YCZ5bCx6ZyA6KaB5Yik5pat5b2T5YmN5oiY5paX57G75Z6L55qE6Z2i5p2/57G75Z6L6Lef5Li755WM6Z2i57yT5a2Y55qE57G75Z6L5piv5ZCm5LiA6Ie0XG4gICAgY2FuRG9CYXR0bGU6ZnVuY3Rpb24oZmlnaHRfdHlwZSl7XG4gICAgICAgIHZhciB0YXJnZXRfdWlfZmlnaHRfdHlwZSA9IHRoaXMuZ2V0VUlGaWdodEJ5RmlnaHRUeXBlKGZpZ2h0X3R5cGUpO1xuICAgICAgICB2YXIgTWFpblVpQ29udHJvbGxlciA9IHJlcXVpcmUoXCJtYWludWlfY29udHJvbGxlclwiKTtcbiAgICAgICAgdmFyIEJhdHRsZUNvbnRyb2xsZXIgPSByZXF1aXJlKFwiYmF0dGxlX2NvbnRyb2xsZXJcIik7XG4gICAgICAgIHZhciBjdXJfdWlfZmlnaHRfdHlwZSA9IE1haW5VaUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5nZXRVSUZpZ2h0VHlwZSgpO1xuXG4gICAgICAgIHJldHVybiAoY3VyX3VpX2ZpZ2h0X3R5cGUgPT0gdGFyZ2V0X3VpX2ZpZ2h0X3R5cGUpIHx8IHRoaXMuaXNOb1JlcXVlc3QoZmlnaHRfdHlwZSkgfHwgQmF0dGxlQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmdldFdhdGNoUmVwbGF5U3RhdHVzKCk7XG4gICAgfSxcbiAgICAvL+aImOaWl+WIhue7hFxuICAgIEJhdHRsZUdyb3VwVHlwZUNvbmYgOiB7XG4gICAgICAgIFRZUEVfR1JPVVBfRU5FTVkgOiAyLCBcdC8v5pWM5pa5XG4gICAgICAgIFRZUEVfR1JPVVBfUk9MRSA6IDEsIFx0Ly/lj4vmlrlcbiAgICB9LCAgXG5cbiAgICAvLyAtLeaImOaWl+WNleS9jeexu+Wei1xuICAgIEJhdHRsZU9iamVjdFR5cGUgOiB7XG4gICAgICAgIFJvbGUgOiAxLCAgICAgIC8vLS3op5LoibIo5pqC5pe25rKh5pyJ5LqGKVxuICAgICAgICBQZXQgOiAyLCAgICAgICAvLy0t5LyZ5Ly0KOmFjee9ruihqOWPlnBhcnRlcm4pXG4gICAgICAgIFVuaXQgOiAzLCAgICAgIC8vLS3ljZXkvY0o6YWN572u6KGo5Y+WdW5pdClcbiAgICAgICAgSGFsbG93cyA6IDQgICAgLy8tLeelnuWZqFxuICAgIH0sXG5cbiAgICAvLyAtLSDlhbzlrrnml6fnmoTlvZXlg4/mlbDmja7kuK3pmLXokKXlhYnnjq9pZO+8iOi9rOS4uueOsOWcqOeahGlk5YiX6KGo77yJXG4gICAgT2xkX0hhbG9fSWRfQ2hhbmdlIDoge1xuICAgICAgICBbMV0gOiBbMV0sXG4gICAgICAgIFsyXSA6IFsyXSxcbiAgICAgICAgWzNdIDogWzNdLFxuICAgICAgICBbNF0gOiBbNF0sXG4gICAgICAgIFs1XSA6IFs1XSxcbiAgICAgICAgWzZdIDogWzIxXSxcbiAgICAgICAgWzddIDogWzZdLFxuICAgICAgICBbOF0gOiBbNl0sXG4gICAgICAgIFs5XSA6IFs3XSxcbiAgICAgICAgWzEwXSA6IFs3XSxcbiAgICAgICAgWzExXSA6IFs4XSxcbiAgICAgICAgWzEyXSA6IFs4XSxcbiAgICAgICAgWzEzXSA6IFsxMSwxOF0sXG4gICAgICAgIFsxNF0gOiBbMTMsMTddLFxuICAgICAgICBbMTVdIDogWzEyLDE2XSxcbiAgICAgICAgWzE2XSA6IFsxNCwyMF0sXG4gICAgICAgIFsxN10gOiBbMTUsMTldLFxuICAgIH1cbn07XG5tb2R1bGUuZXhwb3J0cyA9IEJhdHRsZUNvbnN0OyJdfQ==