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
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
 
                (function() {
                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
                    var __module = nodeEnv ? module : {exports:{}};
                    var __filename = 'preview-scripts/assets/Scripts/mod/stronger/stronger_controller.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, '1d70awzjyFOELEx5kpJ0r1p', 'stronger_controller');
// Scripts/mod/stronger/stronger_controller.js
 
"use strict";
 
// --------------------------------------------------------------------
// @author: xxx@syg.com(必填, 创建模块的人员)
// @description:
//      这里填写详细说明,主要填写该模块的功能简要
// <br/>Create: 2019-03-29 11:43:16
// --------------------------------------------------------------------
var JumpController = require("jump_controller");
 
var StrongerEvent = require("stronger_event");
 
var StrongerController = cc.Class({
  "extends": BaseController,
  ctor: function ctor() {},
  // 初始化配置数据
  initConfig: function initConfig() {
    var StrongerModel = require("stronger_model");
 
    this.model = new StrongerModel();
    this.model.initConfig();
    this.is_first = true;
  },
  // 返回当前的model
  getModel: function getModel() {
    return this.model;
  },
  // 注册监听事件
  registerEvents: function registerEvents() {},
  // 注册协议接受事件
  registerProtocals: function registerProtocals() {
    this.RegisterProtocal(11070, this.on11070.bind(this)); // -- 全服最强数据
  },
  on11070: function on11070(data) {
    this.model.setDataByBid(data);
    gcore.GlobalEvent.fire(StrongerEvent.UPDATE_SCROE, data);
  },
  //--打开我要变强主界面
  openMainWin: function openMainWin(status, index, partner_id) {
    var self = this;
 
    if (status) {
      if (!self.main_win) {
        var StrongerMainWindow = require("strong_main_window");
 
        self.main_win = new StrongerMainWindow(partner_id);
      }
 
      self.main_win.open(index);
    } else {
      if (self.main_win) {
        self.main_win.close();
        self.main_win = null;
      }
    }
  },
  setIsFirst: function setIsFirst(bool) {
    this.is_first = bool;
  },
  sender11070: function sender11070(partner_bid) {
    var protocal = {};
    protocal.partner_bid = partner_bid;
    this.SendProtocal(11070, protocal);
  },
  getStrongerRoot: function getStrongerRoot() {
    if (this.main_win) return this.main_win.root_wnd;
  },
  clickCallBack: function clickCallBack(evt_type) {
    if (evt_type) {
      if (evt_type == 200) {
        //英雄背包
        JumpController.getInstance().jumpViewByEvtData([19]);
      } else if (evt_type == 201) {
        //神器升级
        JumpController.getInstance().jumpViewByEvtData([20]);
      } else if (evt_type == 202) {
        //联盟技能界面
        JumpController.getInstance().jumpViewByEvtData([32]);
      } else if (evt_type == 203) {
        //玩家英雄信息界面
        if (this.main_win && this.main_win.view_list[1]) {
          var cur_hero_item = this.main_win.view_list[1].getCurHero();
 
          if (cur_hero_item) {
            var hero_vo = cur_hero_item.getData();
 
            var HeroController = require("hero_controller");
 
            var HeroConst = require("hero_const");
 
            var all_role_list = HeroController.getInstance().getModel().getAllHeroArray();
            HeroController.getInstance().openHeroMainInfoWindow(true, hero_vo, all_role_list, {
              show_model_type: HeroConst.BagTab.eBagHero
            });
          }
        }
      } else if (evt_type == 204) {
        //先知殿
        JumpController.getInstance().jumpViewByEvtData([24]);
      } else if (evt_type == 100) {
        //布阵阵法
        JumpController.getInstance().jumpViewByEvtData([30]);
      } else if (evt_type == 120) {
        //召唤
        JumpController.getInstance().jumpViewByEvtData([1]);
      } else if (evt_type == 121) {
        //背包 碎片
        var BackPackConst = require("backpack_const");
 
        JumpController.getInstance().jumpViewByEvtData([8, BackPackConst.item_tab_type.HERO]);
      } else if (evt_type == 122) {
        //英雄商城
        var MallConst = require("mall_const");
 
        JumpController.getInstance().jumpViewByEvtData([15, MallConst.MallType.Recovery]);
      } else if (evt_type == 123 || evt_type == 162) {
        //金币兑换
        JumpController.getInstance().jumpViewByEvtData([35]);
      } else if (evt_type == 125) {//金币出售
      } else if (evt_type == 126) {
        //远航
        JumpController.getInstance().jumpViewByEvtData([18]);
      } else if (evt_type == 128) {//银币摆摊
      } else if (evt_type == 129) {
        JumpController.getInstance().jumpViewByEvtData([41]);
      } else if (evt_type == 130) {
        //成就
        var TaskConst = require("task_const");
 
        JumpController.getInstance().jumpViewByEvtData([41, TaskConst.type.feat]);
      } else if (evt_type == 131) {
        //充值
        JumpController.getInstance().jumpViewByEvtData([7]);
      } else if (evt_type == 132) {
        //快速作战
        JumpController.getInstance().jumpViewByEvtData([11]);
      } else if (evt_type == 134) {
        //杂货店
        JumpController.getInstance().jumpViewByEvtData([6]);
      } else if (evt_type == 135) {//金币市场 突破
      } else if (evt_type == 138) {
        //钻石商城
        var MallConst = require("mall_const");
 
        JumpController.getInstance().jumpViewByEvtData([15, MallConst.MallType.GodShop]);
      } else if (evt_type == 144) {
        //道具背包
        var BackPackConst = require("backpack_const");
 
        JumpController.getInstance().jumpViewByEvtData([8, BackPackConst.item_tab_type.PROPS]);
      } else if (evt_type == 145) {
        //联盟捐献
        var RoleController = require("role_controller");
 
        var role_vo = RoleController.getInstance().getRoleVo();
 
        if (role_vo.isHasGuild()) {
          JumpController.getInstance().jumpViewByEvtData([13]);
        } else {
          var MainuiController = require("mainui_controller");
 
          var MainUiConst = require("mainui_const");
 
          MainuiController.getInstance().changeMainUIStatus(MainUiConst.btn_index.guild);
        }
      } else if (evt_type == 146) {
        //公会副本
        var RoleController = require("role_controller");
 
        var role_vo = RoleController.getInstance().getRoleVo();
 
        if (role_vo.isHasGuild()) {
          JumpController.getInstance().jumpViewByEvtData([31]);
        } else {
          var MainuiController = require("mainui_controller");
 
          var MainUiConst = require("mainui_const");
 
          MainuiController.getInstance().changeMainUIStatus(MainUiConst.btn_index.guild);
        }
      } else if (evt_type == 150) {
        //星河神殿
        JumpController.getInstance().jumpViewByEvtData([27]);
      } else if (evt_type == 151) {
        //英雄远征
        JumpController.getInstance().jumpViewByEvtData([25]);
      } else if (evt_type == 152) {
        //日常副本
        JumpController.getInstance().jumpViewByEvtData([17]);
      } else if (evt_type == 153) {
        //无尽试炼
        var open_data = Config.dailyplay_data.data_exerciseactivity[2];
 
        if (open_data == null) {
          message(Utils.TI18N("无尽试炼数据异常"));
          return;
        }
 
        var MainuiController = require("mainui_controller");
 
        var bool = MainuiController.getInstance().checkIsOpenByActivate(open_data.activate);
 
        if (bool == false) {
          message(open_data.lock_desc);
          return;
        }
 
        var Endless_trailController = require("endless_trail_controller");
 
        var is_open = Endless_trailController.getInstance().checkIsOpen();
 
        if (is_open) {
          JumpController.getInstance().jumpViewByEvtData([43]);
        }
      } else if (evt_type == 154) {
        //锻造屋
        JumpController.getInstance().jumpViewByEvtData([26]);
      } else if (evt_type == 155) {
        //融合祭坛
        JumpController.getInstance().jumpViewByEvtData([23]);
      } else if (evt_type == 156) {
        //祭祀小屋
        JumpController.getInstance().jumpViewByEvtData([22]);
      } else if (evt_type == 157) {
        //剧情副本
        JumpController.getInstance().jumpViewByEvtData([5]);
      } else if (evt_type == 158) {
        //竞技场
        JumpController.getInstance().jumpViewByEvtData([3]);
      } else if (evt_type == 159) {
        //冠军赛
        JumpController.getInstance().jumpViewByEvtData([36]);
      } else if (evt_type == 160) {
        //试练塔
        JumpController.getInstance().jumpViewByEvtData([12]);
      } else if (evt_type == 402) {
        //好友
        JumpController.getInstance().jumpViewByEvtData([4]);
      } else if (evt_type == 404) {
        //英雄界面
        JumpController.getInstance().jumpViewByEvtData([19]);
      } else if (evt_type == 405) {
        //幸运探宝
        JumpController.getInstance().jumpViewByEvtData([40]);
      } else if (evt_type == 406) {
        //探宝商店
        var MallConst = require("mall_const");
 
        JumpController.getInstance().jumpViewByEvtData([15, MallConst.MallType.GuessShop]);
      } else if (evt_type == 407) {
        //冒险
        JumpController.getInstance().jumpViewByEvtData([34]);
      } else if (evt_type == 408 || evt_type == 161) {
        //锻造坊的符文
        var ForgeHouseConst = require("forgehouse_const");
 
        JumpController.getInstance().jumpViewByEvtData([26, ForgeHouseConst.Tab_Index.Artifact]);
      } else if (evt_type == 409) {
        JumpController.getInstance().jumpViewByEvtData([20]);
      } else if (evt_type == 410) {
        //精英段位赛商店
        var MallConst = require("mall_const");
 
        JumpController.getInstance().jumpViewByEvtData([15, MallConst.MallType.EliteShop]);
      } else if (evt_type == 411) {
        var ActionConst = require("action_const");
 
        JumpController.getInstance().jumpViewByEvtData([45, ActionConst.ActionRankCommonType.time_summon]);
      } else if (evt_type == 412) {
        //打开录像馆
        require("vedio_controller").getInstance().openVedioMainWindow(true);
      } else if (evt_type == 413) {
        //打开录像馆个人记录
        require("vedio_controller").getInstance().openVedioMyselfWindow(true);
      }
    }
  }
});
module.exports = StrongerController;
 
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxzdHJvbmdlclxcc3Ryb25nZXJfY29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJKdW1wQ29udHJvbGxlciIsInJlcXVpcmUiLCJTdHJvbmdlckV2ZW50IiwiU3Ryb25nZXJDb250cm9sbGVyIiwiY2MiLCJDbGFzcyIsIkJhc2VDb250cm9sbGVyIiwiY3RvciIsImluaXRDb25maWciLCJTdHJvbmdlck1vZGVsIiwibW9kZWwiLCJpc19maXJzdCIsImdldE1vZGVsIiwicmVnaXN0ZXJFdmVudHMiLCJyZWdpc3RlclByb3RvY2FscyIsIlJlZ2lzdGVyUHJvdG9jYWwiLCJvbjExMDcwIiwiYmluZCIsImRhdGEiLCJzZXREYXRhQnlCaWQiLCJnY29yZSIsIkdsb2JhbEV2ZW50IiwiZmlyZSIsIlVQREFURV9TQ1JPRSIsIm9wZW5NYWluV2luIiwic3RhdHVzIiwiaW5kZXgiLCJwYXJ0bmVyX2lkIiwic2VsZiIsIm1haW5fd2luIiwiU3Ryb25nZXJNYWluV2luZG93Iiwib3BlbiIsImNsb3NlIiwic2V0SXNGaXJzdCIsImJvb2wiLCJzZW5kZXIxMTA3MCIsInBhcnRuZXJfYmlkIiwicHJvdG9jYWwiLCJTZW5kUHJvdG9jYWwiLCJnZXRTdHJvbmdlclJvb3QiLCJyb290X3duZCIsImNsaWNrQ2FsbEJhY2siLCJldnRfdHlwZSIsImdldEluc3RhbmNlIiwianVtcFZpZXdCeUV2dERhdGEiLCJ2aWV3X2xpc3QiLCJjdXJfaGVyb19pdGVtIiwiZ2V0Q3VySGVybyIsImhlcm9fdm8iLCJnZXREYXRhIiwiSGVyb0NvbnRyb2xsZXIiLCJIZXJvQ29uc3QiLCJhbGxfcm9sZV9saXN0IiwiZ2V0QWxsSGVyb0FycmF5Iiwib3Blbkhlcm9NYWluSW5mb1dpbmRvdyIsInNob3dfbW9kZWxfdHlwZSIsIkJhZ1RhYiIsImVCYWdIZXJvIiwiQmFja1BhY2tDb25zdCIsIml0ZW1fdGFiX3R5cGUiLCJIRVJPIiwiTWFsbENvbnN0IiwiTWFsbFR5cGUiLCJSZWNvdmVyeSIsIlRhc2tDb25zdCIsInR5cGUiLCJmZWF0IiwiR29kU2hvcCIsIlBST1BTIiwiUm9sZUNvbnRyb2xsZXIiLCJyb2xlX3ZvIiwiZ2V0Um9sZVZvIiwiaXNIYXNHdWlsZCIsIk1haW51aUNvbnRyb2xsZXIiLCJNYWluVWlDb25zdCIsImNoYW5nZU1haW5VSVN0YXR1cyIsImJ0bl9pbmRleCIsImd1aWxkIiwib3Blbl9kYXRhIiwiQ29uZmlnIiwiZGFpbHlwbGF5X2RhdGEiLCJkYXRhX2V4ZXJjaXNlYWN0aXZpdHkiLCJtZXNzYWdlIiwiVXRpbHMiLCJUSTE4TiIsImNoZWNrSXNPcGVuQnlBY3RpdmF0ZSIsImFjdGl2YXRlIiwibG9ja19kZXNjIiwiRW5kbGVzc190cmFpbENvbnRyb2xsZXIiLCJpc19vcGVuIiwiY2hlY2tJc09wZW4iLCJHdWVzc1Nob3AiLCJGb3JnZUhvdXNlQ29uc3QiLCJUYWJfSW5kZXgiLCJBcnRpZmFjdCIsIkVsaXRlU2hvcCIsIkFjdGlvbkNvbnN0IiwiQWN0aW9uUmFua0NvbW1vblR5cGUiLCJ0aW1lX3N1bW1vbiIsIm9wZW5WZWRpb01haW5XaW5kb3ciLCJvcGVuVmVkaW9NeXNlbGZXaW5kb3ciLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUlBLGNBQWMsR0FBR0MsT0FBTyxDQUFDLGlCQUFELENBQTVCOztBQUNBLElBQUlDLGFBQWEsR0FBR0QsT0FBTyxDQUFDLGdCQUFELENBQTNCOztBQUNBLElBQUlFLGtCQUFrQixHQUFHQyxFQUFFLENBQUNDLEtBQUgsQ0FBUztBQUM5QixhQUFTQyxjQURxQjtBQUU5QkMsRUFBQUEsSUFBSSxFQUFFLGdCQUFZLENBQ2pCLENBSDZCO0FBSzlCO0FBQ0FDLEVBQUFBLFVBQVUsRUFBRSxzQkFBWTtBQUNwQixRQUFJQyxhQUFhLEdBQUdSLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFFQSxTQUFLUyxLQUFMLEdB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SUFBR3BELFFBQVEsSUFBSSxHQUFmLEVBQW1CO0FBQ3JCMUMsUUFBQUEsY0FBYyxDQUFDMkMsV0FBZixHQUE2QkMsaUJBQTdCLENBQStDLENBQUMsRUFBRCxDQUEvQztBQUNILE9BRkssTUFFQSxJQUFHRixRQUFRLElBQUksR0FBZixFQUFtQjtBQUFDO0FBQ3RCLFlBQUltQixTQUFTLEdBQVE1RCxPQUFPLENBQUMsWUFBRCxDQUE1Qjs7QUFDQUQsUUFBQUEsY0FBYyxDQUFDMkMsV0FBZixHQUE2QkMsaUJBQTdCLENBQStDLENBQUMsRUFBRCxFQUFJaUIsU0FBUyxDQUFDQyxRQUFWLENBQW1CaUMsU0FBdkIsQ0FBL0M7QUFDSCxPQUhLLE1BR0EsSUFBR3JELFFBQVEsSUFBSSxHQUFmLEVBQW1CO0FBQ3JCLFlBQUlzRCxXQUFXLEdBQUcvRixPQUFPLENBQUMsY0FBRCxDQUF6Qjs7QUFDQUQsUUFBQUEsY0FBYyxDQUFDMkMsV0FBZixHQUE2QkMsaUJBQTdCLENBQStDLENBQUMsRUFBRCxFQUFJb0QsV0FBVyxDQUFDQyxvQkFBWixDQUFpQ0MsV0FBckMsQ0FBL0M7QUFDSCxPQUhLLE1BR0EsSUFBR3hELFFBQVEsSUFBSSxHQUFmLEVBQW1CO0FBQUM7QUFDdEJ6QyxRQUFBQSxPQUFPLENBQUMsa0JBQUQsQ0FBUCxDQUE0QjBDLFdBQTVCLEdBQTBDd0QsbUJBQTFDLENBQThELElBQTlEO0FBQ0gsT0FGSyxNQUVBLElBQUd6RCxRQUFRLElBQUksR0FBZixFQUFtQjtBQUFDO0FBQ3RCekMsUUFBQUEsT0FBTyxDQUFDLGtCQUFELENBQVAsQ0FBNEIwQyxXQUE1QixHQUEwQ3lELHFCQUExQyxDQUFnRSxJQUFoRTtBQUNIO0FBQ0o7QUFFSjtBQTlNNkIsQ0FBVCxDQUF6QjtBQWlOQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCbkcsa0JBQWpCIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGF1dGhvcjogeHh4QHN5Zy5jb20o5b+F5aGrLCDliJvlu7rmqKHlnZfnmoTkurrlkZgpXG4vLyBAZGVzY3JpcHRpb246XG4vLyAgICAgIOi/memHjOWhq+WGmeivpue7huivtOaYjizkuLvopoHloavlhpnor6XmqKHlnZfnmoTlip/og73nroDopoFcbi8vIDxici8+Q3JlYXRlOiAyMDE5LTAzLTI5IDExOjQzOjE2XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudmFyIEp1bXBDb250cm9sbGVyID0gcmVxdWlyZShcImp1bXBfY29udHJvbGxlclwiKTtcbnZhciBTdHJvbmdlckV2ZW50ID0gcmVxdWlyZShcInN0cm9uZ2VyX2V2ZW50XCIpXG52YXIgU3Ryb25nZXJDb250cm9sbGVyID0gY2MuQ2xhc3Moe1xuICAgIGV4dGVuZHM6IEJhc2VDb250cm9sbGVyLFxuICAgIGN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICB9LFxuXG4gICAgLy8g5Yid5aeL5YyW6YWN572u5pWw5o2uXG4gICAgaW5pdENvbmZpZzogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgU3Ryb25nZXJNb2RlbCA9IHJlcXVpcmUoXCJzdHJvbmdlcl9tb2RlbFwiKTtcblxuICAgICAgICB0aGlzLm1vZGVsID0gbmV3IFN0cm9uZ2VyTW9kZWwoKTtcbiAgICAgICAgdGhpcy5tb2RlbC5pbml0Q29uZmlnKCk7XG4gICAgICAgIHRoaXMuaXNfZmlyc3QgPSB0cnVlXG4gICAgfSwgIFxuXG4gICAgLy8g6L+U5Zue5b2T5YmN55qEbW9kZWxcbiAgICBnZXRNb2RlbDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbDtcbiAgICB9LFxuXG4gICAgLy8g5rOo5YaM55uR5ZCs5LqL5Lu2XG4gICAgcmVnaXN0ZXJFdmVudHM6IGZ1bmN0aW9uICgpIHtcblxuICAgIH0sXG5cbiAgICAvLyDms6jlhozljY/orq7mjqXlj5fkuovku7ZcbiAgICByZWdpc3RlclByb3RvY2FsczogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLlJlZ2lzdGVyUHJvdG9jYWwoMTEwNzAsdGhpcy5vbjExMDcwLmJpbmQodGhpcykpICAvLyAtLSDlhajmnI3mnIDlvLrmlbDmja5cbiAgICB9LFxuICAgIG9uMTEwNzAoIGRhdGEgKXtcbiAgICAgICAgdGhpcy5tb2RlbC5zZXREYXRhQnlCaWQoZGF0YSlcbiAgICAgICAgZ2NvcmUuR2xvYmFsRXZlbnQuZmlyZShTdHJvbmdlckV2ZW50LlVQREFURV9TQ1JPRSxkYXRhKVxuICAgIH0sXG4gICAgLy8tLeaJk+W8gOaIkeimgeWPmOW8uuS4u+eVjOmdolxuICAgIG9wZW5NYWluV2luKHN0YXR1cyxpbmRleCxwYXJ0bmVyX2lkKXtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzXG4gICAgICAgIGlmIChzdGF0dXMpIHsgXG4gICAgICAgICAgICBpZiAoIXNlbGYubWFpbl93aW4pIHtcbiAgICAgICAgICAgICAgICB2YXIgU3Ryb25nZXJNYWluV2luZG93ID0gcmVxdWlyZShcInN0cm9uZ19tYWluX3dpbmRvd1wiKVxuICAgICAgICAgICAgICAgIHNlbGYubWFpbl93aW4gPSBuZXcgU3Ryb25nZXJNYWluV2luZG93KHBhcnRuZXJfaWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLm1haW5fd2luLm9wZW4oaW5kZXgpXG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgaWYgKHNlbGYubWFpbl93aW4peyBcbiAgICAgICAgICAgICAgICBzZWxmLm1haW5fd2luLmNsb3NlKClcbiAgICAgICAgICAgICAgICBzZWxmLm1haW5fd2luID0gbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBzZXRJc0ZpcnN0KCBib29sICl7XG4gICAgICAgIHRoaXMuaXNfZmlyc3QgPSBib29sXG4gICAgfSxcbiAgICBzZW5kZXIxMTA3MChwYXJ0bmVyX2JpZCl7XG4gICAgICAgIGxldCBwcm90b2NhbCA9IHt9XG4gICAgICAgIHByb3RvY2FsLnBhcnRuZXJfYmlkID0gcGFydG5lcl9iaWRcbiAgICAgICAgdGhpcy5TZW5kUHJvdG9jYWwoMTEwNzAsIHByb3RvY2FsKVxuICAgIH0sXG5cbiAgICBnZXRTdHJvbmdlclJvb3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5tYWluX3dpbilcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1haW5fd2luLnJvb3Rfd25kO1xuICAgIH0sXG4gICAgXG4gICAgY2xpY2tDYWxsQmFjayhldnRfdHlwZSl7XG4gICAgICAgIGlmKGV2dF90eXBlKXtcbiAgICAgICAgICAgIGlmKGV2dF90eXBlID09IDIwMCl7Ly/oi7Hpm4Tog4zljIVcbiAgICAgICAgICAgICAgICBKdW1wQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmp1bXBWaWV3QnlFdnREYXRhKFsxOV0pO1xuICAgICAgICAgICAgfWVsc2UgaWYoZXZ0X3R5cGUgPT0gMjAxKXsvL+elnuWZqOWNh+e6p1xuICAgICAgICAgICAgICAgIEp1bXBDb250cm9sbGVyLmdldEluc3RhbmNlKCkuanVtcFZpZXdCeUV2dERhdGEoWzIwXSk7XG4gICAgICAgICAgICB9ZWxzZSBpZihldnRfdHlwZSA9PSAyMDIpey8v6IGU55uf5oqA6IO955WM6Z2iXG4gICAgICAgICAgICAgICAgSnVtcENvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5qdW1wVmlld0J5RXZ0RGF0YShbMzJdKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDIwMyl7Ly/njqnlrrboi7Hpm4Tkv6Hmga/nlYzpnaJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm1haW5fd2luICYmIHRoaXMubWFpbl93aW4udmlld19saXN0WzFdKXtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGN1cl9oZXJvX2l0ZW0gPSB0aGlzLm1haW5fd2luLnZpZXdfbGlzdFsxXS5nZXRDdXJIZXJvKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmKGN1cl9oZXJvX2l0ZW0pe1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhlcm9fdm8gPSBjdXJfaGVyb19pdGVtLmdldERhdGEoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBIZXJvQ29udHJvbGxlciA9IHJlcXVpcmUoXCJoZXJvX2NvbnRyb2xsZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgSGVyb0NvbnN0ICAgICAgPSByZXF1aXJlKFwiaGVyb19jb25zdFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhbGxfcm9sZV9saXN0ID0gSGVyb0NvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5nZXRNb2RlbCgpLmdldEFsbEhlcm9BcnJheSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgSGVyb0NvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5vcGVuSGVyb01haW5JbmZvV2luZG93KHRydWUsIGhlcm9fdm8sIGFsbF9yb2xlX2xpc3QsIHtzaG93X21vZGVsX3R5cGU6IEhlcm9Db25zdC5CYWdUYWIuZUJhZ0hlcm99KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfWVsc2UgaWYoZXZ0X3R5cGUgPT0gMjA0KXsvL+WFiOefpeauv1xuICAgICAgICAgICAgICAgIEp1bXBDb250cm9sbGVyLmdldEluc3RhbmNlKCkuanVtcFZpZXdCeUV2dERhdGEoWzI0XSk7XG4gICAgICAgICAgICB9ZWxzZSBpZihldnRfdHlwZSA9PSAxMDApey8v5biD6Zi16Zi15rOVXG4gICAgICAgICAgICAgICAgSnVtcENvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5qdW1wVmlld0J5RXZ0RGF0YShbMzBdKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDEyMCl7Ly/lj6zllKRcbiAgICAgICAgICAgICAgICBKdW1wQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmp1bXBWaWV3QnlFdnREYXRhKFsxXSk7XG4gICAgICAgICAgICB9ZWxzZSBpZihldnRfdHlwZSA9PSAxMjEpey8v6IOM5YyFIOeijueJh1xuICAgICAgICAgICAgICAgIHZhciBCYWNrUGFja0NvbnN0ID0gcmVxdWlyZShcImJhY2twYWNrX2NvbnN0XCIpO1xuICAgICAgICAgICAgICAgIEp1bXBDb250cm9sbGVyLmdldEluc3RhbmNlKCkuanVtcFZpZXdCeUV2dERhdGEoWzgsIEJhY2tQYWNrQ29uc3QuaXRlbV90YWJfdHlwZS5IRVJPXSlcbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDEyMil7Ly/oi7Hpm4TllYbln45cbiAgICAgICAgICAgICAgICB2YXIgTWFsbENvbnN0ICAgICAgPSByZXF1aXJlKFwibWFsbF9jb25zdFwiKTtcbiAgICAgICAgICAgICAgICBKdW1wQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmp1bXBWaWV3QnlFdnREYXRhKFsxNSwgTWFsbENvbnN0Lk1hbGxUeXBlLlJlY292ZXJ5XSlcbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDEyMyB8fCBldnRfdHlwZSA9PSAxNjIpey8v6YeR5biB5YWR5o2iXG4gICAgICAgICAgICAgICAgSnVtcENvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5qdW1wVmlld0J5RXZ0RGF0YShbMzVdKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDEyNSl7Ly/ph5HluIHlh7rllK5cblxuICAgICAgICAgICAgfWVsc2UgaWYoZXZ0X3R5cGUgPT0gMTI2KXsvL+i/nOiIqlxuICAgICAgICAgICAgICAgIEp1bXBDb250cm9sbGVyLmdldEluc3RhbmNlKCkuanVtcFZpZXdCeUV2dERhdGEoWzE4XSk7XG4gICAgICAgICAgICB9ZWxzZSBpZihldnRfdHlwZSA9PSAxMjgpey8v6ZO25biB5pGG5pGKXG5cbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDEyOSl7XG4gICAgICAgICAgICAgICAgSnVtcENvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5qdW1wVmlld0J5RXZ0RGF0YShbNDFdKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDEzMCl7Ly/miJDlsLFcbiAgICAgICAgICAgICAgICB2YXIgVGFza0NvbnN0ID0gcmVxdWlyZShcInRhc2tfY29uc3RcIik7XG4gICAgICAgICAgICAgICAgSnVtcENvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5qdW1wVmlld0J5RXZ0RGF0YShbNDEsVGFza0NvbnN0LnR5cGUuZmVhdF0pO1xuICAgICAgICAgICAgfWVsc2UgaWYoZXZ0X3R5cGUgPT0gMTMxKXsvL+WFheWAvFxuICAgICAgICAgICAgICAgIEp1bXBDb250cm9sbGVyLmdldEluc3RhbmNlKCkuanVtcFZpZXdCeUV2dERhdGEoWzddKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDEzMil7Ly/lv6vpgJ/kvZzmiJhcbiAgICAgICAgICAgICAgICBKdW1wQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmp1bXBWaWV3QnlFdnREYXRhKFsxMV0pO1xuICAgICAgICAgICAgfWVsc2UgaWYoZXZ0X3R5cGUgPT0gMTM0KXsvL+adgui0p+W6l1xuICAgICAgICAgICAgICAgIEp1bXBDb250cm9sbGVyLmdldEluc3RhbmNlKCkuanVtcFZpZXdCeUV2dERhdGEoWzZdKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDEzNSl7Ly/ph5HluIHluILlnLog56qB56C0XG5cbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDEzOCl7Ly/pkrvnn7PllYbln45cbiAgICAgICAgICAgICAgICB2YXIgTWFsbENvbnN0ICAgICAgPSByZXF1aXJlKFwibWFsbF9jb25zdFwiKTtcbiAgICAgICAgICAgICAgICBKdW1wQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmp1bXBWaWV3QnlFdnREYXRhKFsxNSxNYWxsQ29uc3QuTWFsbFR5cGUuR29kU2hvcF0pO1xuICAgICAgICAgICAgfWVsc2UgaWYoZXZ0X3R5cGUgPT0gMTQ0KXsvL+mBk+WFt+iDjOWMhVxuICAgICAgICAgICAgICAgIHZhciBCYWNrUGFja0NvbnN0ID0gcmVxdWlyZShcImJhY2twYWNrX2NvbnN0XCIpO1xuICAgICAgICAgICAgICAgIEp1bXBDb250cm9sbGVyLmdldEluc3RhbmNlKCkuanVtcFZpZXdCeUV2dERhdGEoWzgsQmFja1BhY2tDb25zdC5pdGVtX3RhYl90eXBlLlBST1BTXSk7XG4gICAgICAgICAgICB9ZWxzZSBpZihldnRfdHlwZSA9PSAxNDUpey8v6IGU55uf5o2Q54yuXG4gICAgICAgICAgICAgICAgdmFyIFJvbGVDb250cm9sbGVyID0gcmVxdWlyZShcInJvbGVfY29udHJvbGxlclwiKVxuICAgICAgICAgICAgICAgIHZhciByb2xlX3ZvID0gUm9sZUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5nZXRSb2xlVm8oKTtcbiAgICAgICAgICAgICAgICBpZihyb2xlX3ZvLmlzSGFzR3VpbGQoKSl7XG4gICAgICAgICAgICAgICAgICAgIEp1bXBDb250cm9sbGVyLmdldEluc3RhbmNlKCkuanVtcFZpZXdCeUV2dERhdGEoWzEzXSk7XG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIHZhciBNYWludWlDb250cm9sbGVyID0gcmVxdWlyZShcIm1haW51aV9jb250cm9sbGVyXCIpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgTWFpblVpQ29uc3QgPSByZXF1aXJlKFwibWFpbnVpX2NvbnN0XCIpO1xuICAgICAgICAgICAgICAgICAgICBNYWludWlDb250cm9sbGVyLmdldEluc3RhbmNlKCkuY2hhbmdlTWFpblVJU3RhdHVzKE1haW5VaUNvbnN0LmJ0bl9pbmRleC5ndWlsZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfWVsc2UgaWYoZXZ0X3R5cGUgPT0gMTQ2KXsvL+WFrOS8muWJr+acrFxuICAgICAgICAgICAgICAgIHZhciBSb2xlQ29udHJvbGxlciA9IHJlcXVpcmUoXCJyb2xlX2NvbnRyb2xsZXJcIilcbiAgICAgICAgICAgICAgICB2YXIgcm9sZV92byA9IFJvbGVDb250cm9sbGVyLmdldEluc3RhbmNlKCkuZ2V0Um9sZVZvKCk7XG4gICAgICAgICAgICAgICAgaWYocm9sZV92by5pc0hhc0d1aWxkKCkpe1xuICAgICAgICAgICAgICAgICAgICBKdW1wQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmp1bXBWaWV3QnlFdnREYXRhKFszMV0pO1xuICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICB2YXIgTWFpbnVpQ29udHJvbGxlciA9IHJlcXVpcmUoXCJtYWludWlfY29udHJvbGxlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIE1haW5VaUNvbnN0ID0gcmVxdWlyZShcIm1haW51aV9jb25zdFwiKTtcbiAgICAgICAgICAgICAgICAgICAgTWFpbnVpQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmNoYW5nZU1haW5VSVN0YXR1cyhNYWluVWlDb25zdC5idG5faW5kZXguZ3VpbGQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDE1MCl7Ly/mmJ/msrPnpZ7mrr9cbiAgICAgICAgICAgICAgICBKdW1wQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmp1bXBWaWV3QnlFdnREYXRhKFsyN10pO1xuICAgICAgICAgICAgfWVsc2UgaWYoZXZ0X3R5cGUgPT0gMTUxKXsvL+iLsembhOi/nOW+gVxuICAgICAgICAgICAgICAgIEp1bXBDb250cm9sbGVyLmdldEluc3RhbmNlKCkuanVtcFZpZXdCeUV2dERhdGEoWzI1XSk7XG4gICAgICAgICAgICB9ZWxzZSBpZihldnRfdHlwZSA9PSAxNTIpey8v5pel5bi45Ymv5pysXG4gICAgICAgICAgICAgICAgSnVtcENvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5qdW1wVmlld0J5RXZ0RGF0YShbMTddKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDE1Myl7Ly/ml6DlsL3or5XngrxcbiAgICAgICAgICAgICAgICB2YXIgb3Blbl9kYXRhID0gQ29uZmlnLmRhaWx5cGxheV9kYXRhLmRhdGFfZXhlcmNpc2VhY3Rpdml0eVsyXTtcbiAgICAgICAgICAgICAgICBpZihvcGVuX2RhdGEgPT0gbnVsbCl7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UoVXRpbHMuVEkxOE4oXCLml6DlsL3or5XngrzmlbDmja7lvILluLhcIikpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBNYWludWlDb250cm9sbGVyID0gcmVxdWlyZShcIm1haW51aV9jb250cm9sbGVyXCIpO1xuICAgICAgICAgICAgICAgIHZhciBib29sID0gTWFpbnVpQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmNoZWNrSXNPcGVuQnlBY3RpdmF0ZShvcGVuX2RhdGEuYWN0aXZhdGUpO1xuICAgICAgICAgICAgICAgIGlmKGJvb2wgPT0gZmFsc2Upe1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlKG9wZW5fZGF0YS5sb2NrX2Rlc2MpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBFbmRsZXNzX3RyYWlsQ29udHJvbGxlciA9IHJlcXVpcmUoXCJlbmRsZXNzX3RyYWlsX2NvbnRyb2xsZXJcIik7XG4gICAgICAgICAgICAgICAgdmFyIGlzX29wZW4gPSBFbmRsZXNzX3RyYWlsQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmNoZWNrSXNPcGVuKCk7XG4gICAgICAgICAgICAgICAgaWYoaXNfb3Blbil7XG4gICAgICAgICAgICAgICAgICAgIEp1bXBDb250cm9sbGVyLmdldEluc3RhbmNlKCkuanVtcFZpZXdCeUV2dERhdGEoWzQzXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfWVsc2UgaWYoZXZ0X3R5cGUgPT0gMTU0KXsvL+mUu+mAoOWxi1xuICAgICAgICAgICAgICAgIEp1bXBDb250cm9sbGVyLmdldEluc3RhbmNlKCkuanVtcFZpZXdCeUV2dERhdGEoWzI2XSk7XG4gICAgICAgICAgICB9ZWxzZSBpZihldnRfdHlwZSA9PSAxNTUpey8v6J6N5ZCI56Wt5Z2bXG4gICAgICAgICAgICAgICAgSnVtcENvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5qdW1wVmlld0J5RXZ0RGF0YShbMjNdKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDE1Nil7Ly/npa3npYDlsI/lsYtcbiAgICAgICAgICAgICAgICBKdW1wQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmp1bXBWaWV3QnlFdnREYXRhKFsyMl0pO1xuICAgICAgICAgICAgfWVsc2UgaWYoZXZ0X3R5cGUgPT0gMTU3KXsvL+WJp+aDheWJr+acrFxuICAgICAgICAgICAgICAgIEp1bXBDb250cm9sbGVyLmdldEluc3RhbmNlKCkuanVtcFZpZXdCeUV2dERhdGEoWzVdKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDE1OCl7Ly/nq57mioDlnLpcbiAgICAgICAgICAgICAgICBKdW1wQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmp1bXBWaWV3QnlFdnREYXRhKFszXSk7XG4gICAgICAgICAgICB9ZWxzZSBpZihldnRfdHlwZSA9PSAxNTkpey8v5Yag5Yab6LWbXG4gICAgICAgICAgICAgICAgSnVtcENvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5qdW1wVmlld0J5RXZ0RGF0YShbMzZdKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDE2MCl7Ly/or5Xnu4PloZRcbiAgICAgICAgICAgICAgICBKdW1wQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmp1bXBWaWV3QnlFdnREYXRhKFsxMl0pO1xuICAgICAgICAgICAgfWVsc2UgaWYoZXZ0X3R5cGUgPT0gNDAyKXsvL+WlveWPi1xuICAgICAgICAgICAgICAgIEp1bXBDb250cm9sbGVyLmdldEluc3RhbmNlKCkuanVtcFZpZXdCeUV2dERhdGEoWzRdKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDQwNCl7Ly/oi7Hpm4TnlYzpnaJcbiAgICAgICAgICAgICAgICBKdW1wQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmp1bXBWaWV3QnlFdnREYXRhKFsxOV0pO1xuICAgICAgICAgICAgfWVsc2UgaWYoZXZ0X3R5cGUgPT0gNDA1KXsvL+W5uOi/kOaOouWunVxuICAgICAgICAgICAgICAgIEp1bXBDb250cm9sbGVyLmdldEluc3RhbmNlKCkuanVtcFZpZXdCeUV2dERhdGEoWzQwXSk7XG4gICAgICAgICAgICB9ZWxzZSBpZihldnRfdHlwZSA9PSA0MDYpey8v5o6i5a6d5ZWG5bqXXG4gICAgICAgICAgICAgICAgdmFyIE1hbGxDb25zdCA9IHJlcXVpcmUoXCJtYWxsX2NvbnN0XCIpO1xuICAgICAgICAgICAgICAgIEp1bXBDb250cm9sbGVyLmdldEluc3RhbmNlKCkuanVtcFZpZXdCeUV2dERhdGEoWzE1LE1hbGxDb25zdC5NYWxsVHlwZS5HdWVzc1Nob3BdKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDQwNyl7Ly/lhpLpmalcbiAgICAgICAgICAgICAgICBKdW1wQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmp1bXBWaWV3QnlFdnREYXRhKFszNF0pO1xuICAgICAgICAgICAgfWVsc2UgaWYoZXZ0X3R5cGUgPT0gNDA4IHx8IGV2dF90eXBlID09IDE2MSl7Ly/plLvpgKDlnYrnmoTnrKbmlodcbiAgICAgICAgICAgICAgICB2YXIgRm9yZ2VIb3VzZUNvbnN0ID0gcmVxdWlyZShcImZvcmdlaG91c2VfY29uc3RcIik7XG4gICAgICAgICAgICAgICAgSnVtcENvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5qdW1wVmlld0J5RXZ0RGF0YShbMjYsRm9yZ2VIb3VzZUNvbnN0LlRhYl9JbmRleC5BcnRpZmFjdF0pO1xuICAgICAgICAgICAgfWVsc2UgaWYoZXZ0X3R5cGUgPT0gNDA5KXtcbiAgICAgICAgICAgICAgICBKdW1wQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmp1bXBWaWV3QnlFdnREYXRhKFsyMF0pO1xuICAgICAgICAgICAgfWVsc2UgaWYoZXZ0X3R5cGUgPT0gNDEwKXsvL+eyvuiLseauteS9jei1m+WVhuW6l1xuICAgICAgICAgICAgICAgIHZhciBNYWxsQ29uc3QgICAgICA9IHJlcXVpcmUoXCJtYWxsX2NvbnN0XCIpO1xuICAgICAgICAgICAgICAgIEp1bXBDb250cm9sbGVyLmdldEluc3RhbmNlKCkuanVtcFZpZXdCeUV2dERhdGEoWzE1LE1hbGxDb25zdC5NYWxsVHlwZS5FbGl0ZVNob3BdKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDQxMSl7XG4gICAgICAgICAgICAgICAgdmFyIEFjdGlvbkNvbnN0ID0gcmVxdWlyZShcImFjdGlvbl9jb25zdFwiKTtcbiAgICAgICAgICAgICAgICBKdW1wQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmp1bXBWaWV3QnlFdnREYXRhKFs0NSxBY3Rpb25Db25zdC5BY3Rpb25SYW5rQ29tbW9uVHlwZS50aW1lX3N1bW1vbl0pO1xuICAgICAgICAgICAgfWVsc2UgaWYoZXZ0X3R5cGUgPT0gNDEyKXsvL+aJk+W8gOW9leWDj+mmhlxuICAgICAgICAgICAgICAgIHJlcXVpcmUoXCJ2ZWRpb19jb250cm9sbGVyXCIpLmdldEluc3RhbmNlKCkub3BlblZlZGlvTWFpbldpbmRvdyh0cnVlKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGV2dF90eXBlID09IDQxMyl7Ly/miZPlvIDlvZXlg4/ppobkuKrkurrorrDlvZVcbiAgICAgICAgICAgICAgICByZXF1aXJlKFwidmVkaW9fY29udHJvbGxlclwiKS5nZXRJbnN0YW5jZSgpLm9wZW5WZWRpb015c2VsZldpbmRvdyh0cnVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgIH0sXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBTdHJvbmdlckNvbnRyb2xsZXI7Il19