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
 
                (function() {
                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
                    var __module = nodeEnv ? module : {exports:{}};
                    var __filename = 'preview-scripts/assets/Scripts/mod/chat/chat_item_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, '5cfb3xdItxGKKjOd3kfE5/Q', 'chat_item_controller');
// Scripts/mod/chat/chat_item_controller.js
 
"use strict";
 
var ChatConst = require("chat_const");
 
var ChatEvent = require("chat_event");
 
var BackPackConst = require("backpack_const");
 
var GoodsVo = require("goods_vo");
 
var HeroController = require("hero_controller");
 
var TipsController = require("tips_controller");
 
var PartnerConst = require("partner_const");
 
var FriendController = cc.Class({
  "extends": BaseController,
  ctor: function ctor() {},
  registerProtocals: function registerProtocals() {
    this.RegisterProtocal(12418, this.handle12418.bind(this)); // 发送任务到聊天
 
    this.RegisterProtocal(12419, this.handle12419.bind(this)); // 点击任务返回数据
 
    this.RegisterProtocal(11221, this.handle11221.bind(this)); // 发送伙伴到聊天
 
    this.RegisterProtocal(11222, this.handle11222.bind(this)); // 点击伙伴返回数据
 
    this.RegisterProtocal(10535, this.handle10535.bind(this));
    this.RegisterProtocal(10536, this.handle10536.bind(this)); // 点击物品返回数据  
  },
  // 生成item Text
  buildItemMsg: function buildItemMsg(item_bid, srv_id, share_id, count) {
    var config_data = Utils.getItemConfig(item_bid);
    count = count || 0;
    var item_name = config_data.name;
    if (count > 1) item_name = item_name + "x" + count;
 
    if (config_data) {
      // <div fontcolor=%s href=%s|%s|%s>[%s]</div>"
      return cc.js.formatStr("<color=%s><on click='handler' param='%s|%s|%s'>[%s]</on></color>", BackPackConst.quality_color(config_data.quality), ChatConst.Link.Item_Show, srv_id, share_id, item_name);
    }
  },
  relapceFaceIconTag: function relapceFaceIconTag(text) {
    var patt = /(#)\d+/g;
    var result = null;
 
    while ((result = patt.exec(text)) != null) {
      var face_id = result[0].slice(1, result[0].length);
      var face_cfg = Config.face_data.data_biaoqing[face_id];
      var replace_str = "";
      if (face_cfg) replace_str = cc.js.formatStr("<img src='emoji' emoji='%s'/>", face_cfg.name);
      text = text.replace(new RegExp(result[0], 'i'), replace_str);
    }
 
    return text;
  },
  analyzeMessage: function analyzeMessage(message) {
    var patt = /(src=)/g;
    var result = null;
 
    while ((result = patt.exec(message)) != null) {
      message += "**";
    }
 
    return message;
  },
  getImages: function getImages(message) {
    var img_ids = [];
    var emojis = message.match(/src='(\S*)'/g);
 
    for (var emoji_i in emojis) {
      var emoji = emojis[emoji_i];
      var emoji_info = emoji.match(/src='(\S*)'/);
      if (emoji_info[1] !== "emoji") img_ids.push(emoji_info[1]);
    }
 
    return img_ids;
  },
  getEmojis: function getEmojis(message) {
    var emoji_ids = [];
    var emojis = message.match(/emoji='(\S*)'/g);
 
    for (var emoji_i in emojis) {
      var emoji = emojis[emoji_i];
      var emoji_info = emoji.match(/emoji='(\S*)'/);
      emoji_ids.push(emoji_info[1]);
    }
 
    return emoji_ids;
  },
  handle12418: function handle12418(data) {},
  handle12419: function handle12419(data) {},
  handle11221: function handle11221(data) {},
  handle11222: function handle11222(data) {},
  send10535: function send10535(type, id, partner_id, code) {
    var protocal = {};
    protocal.type = type;
    protocal.id = id;
    protocal.partner_id = partner_id;
    protocal.code = code;
    this.SendProtocal(10535, protocal);
  },
  handle10535: function handle10535(data) {
    if (data.flag == 1) {
      gcore.GlobalEvent.fire(ChatEvent.CHAT_SELECT_ITEM, data);
    } else {
      message(data.msg);
    }
  },
  // 获取物品Tips
  sender10536: function sender10536(share_id, srv_id) {
    if (!share_id) return;
    var protocal = {};
    protocal.srv_id = srv_id;
    protocal.id = share_id;
    this.SendProtocal(10536, protocal);
  },
  // 显示物品Tips
  handle10536: function handle10536(data) {
    if (data) {
      var item_vo = new GoodsVo();
      item_vo.setBaseId(data.base_id);
      item_vo.initAttrData(data);
 
      if (!item_vo.config) {
        message(Utils.TI18N("数据异常"));
        return;
      }
 
      if (BackPackConst.checkIsEquip(item_vo.config.type)) {
        HeroController.getInstance().openEquipTips(true, item_vo, PartnerConst.EqmTips.other);
      } else if (BackPackConst.checkIsArtifact(item_vo.config.type)) {
        HeroController.getInstance().openArtifactTipsWindow(true, item_vo, PartnerConst.ArtifactTips.normal);
      } else {
        var TipsController = require("tips_controller");
 
        TipsController.getInstance().showGoodsTips(item_vo.config);
      }
    }
  }
});
 
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxjaGF0XFxjaGF0X2l0ZW1fY29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJDaGF0Q29uc3QiLCJyZXF1aXJlIiwiQ2hhdEV2ZW50IiwiQmFja1BhY2tDb25zdCIsIkdvb2RzVm8iLCJIZXJvQ29udHJvbGxlciIsIlRpcHNDb250cm9sbGVyIiwiUGFydG5lckNvbnN0IiwiRnJpZW5kQ29udHJvbGxlciIsImNjIiwiQ2xhc3MiLCJCYXNlQ29udHJvbGxlciIsImN0b3IiLCJyZWdpc3RlclByb3RvY2FscyIsIlJlZ2lzdGVyUHJvdG9jYWwiLCJoYW5kbGUxMjQxOCIsImJpbmQiLCJoYW5kbGUxMjQxOSIsImhhbmRsZTExMjIxIiwiaGFuZGxlMTEyMjIiLCJoYW5kbGUxMDUzNSIsImhhbmRsZTEwNTM2IiwiYnVpbGRJdGVtTXNnIiwiaXRlbV9iaWQiLCJzcnZfaWQiLCJzaGFyZV9pZCIsImNvdW50IiwiY29uZmlnX2RhdGEiLCJVdGlscyIsImdldEl0ZW1Db25maWciLCJpdGVtX25hbWUiLCJuYW1lIiwianMiLCJmb3JtYXRTdHIiLCJxdWFsaXR5X2NvbG9yIiwicXVhbGl0eSIsIkxpbmsiLCJJdGVtX1Nob3ciLCJyZWxhcGNlRmFjZUljb25UYWciLCJ0ZXh0IiwicGF0dCIsInJlc3VsdCIsImV4ZWMiLCJmYWNlX2lkIiwic2xpY2UiLCJsZW5ndGgiLCJmYWNlX2NmZyIsIkNvbmZpZyIsImZhY2VfZGF0YSIsImRhdGFfYmlhb3FpbmciLCJyZXBsYWNlX3N0ciIsInJlcGxhY2UiLCJSZWdFeHAiLCJhbmFseXplTWVzc2FnZSIsIm1lc3NhZ2UiLCJnZXRJbWFnZXMiLCJpbWdfaWRzIiwiZW1vamlzIiwibWF0Y2giLCJlbW9qaV9pIiwiZW1vamkiLCJlbW9qaV9pbmZvIiwicHVzaCIsImdldEVtb2ppcyIsImVtb2ppX2lkcyIsImRhdGEiLCJzZW5kMTA1MzUiLCJ0eXBlIiwiaWQiLCJwYXJ0bmVyX2lkIiwiY29kZSIsInByb3RvY2FsIiwiU2VuZFByb3RvY2FsIiwiZmxhZyIsImdjb3JlIiwiR2xvYmFsRXZlbnQiLCJmaXJlIiwiQ0hBVF9TRUxFQ1RfSVRFTSIsIm1zZyIsInNlbmRlcjEwNTM2IiwiaXRlbV92byIsInNldEJhc2VJZCIsImJhc2VfaWQiLCJpbml0QXR0ckRhdGEiLCJjb25maWciLCJUSTE4TiIsImNoZWNrSXNFcXVpcCIsImdldEluc3RhbmNlIiwib3BlbkVxdWlwVGlwcyIsIkVxbVRpcHMiLCJvdGhlciIsImNoZWNrSXNBcnRpZmFjdCIsIm9wZW5BcnRpZmFjdFRpcHNXaW5kb3ciLCJBcnRpZmFjdFRpcHMiLCJub3JtYWwiLCJzaG93R29vZHNUaXBzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUlBLFNBQVMsR0FBR0MsT0FBTyxDQUFDLFlBQUQsQ0FBdkI7O0FBQ0EsSUFBSUMsU0FBUyxHQUFHRCxPQUFPLENBQUMsWUFBRCxDQUF2Qjs7QUFDQSxJQUFJRSxhQUFhLEdBQUdGLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFDQSxJQUFJRyxPQUFPLEdBQUlILE9BQU8sQ0FBQyxVQUFELENBQXRCOztBQUNBLElBQUlJLGNBQWMsR0FBR0osT0FBTyxDQUFDLGlCQUFELENBQTVCOztBQUNBLElBQUlLLGNBQWMsR0FBR0wsT0FBTyxDQUFDLGlCQUFELENBQTVCOztBQUNBLElBQUlNLFlBQVksR0FBR04sT0FBTyxDQUFDLGVBQUQsQ0FBMUI7O0FBRUEsSUFBSU8sZ0JBQWdCLEdBQUdDLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBQzVCLGFBQVNDLGNBRG1CO0FBRzVCQyxFQUFBQSxJQUFJLEVBQUUsZ0JBQVcsQ0FFaEIsQ0FMMkI7QUFPNUJDLEVBQUFBLGlCQUFpQixFQUFFLDZCQUFXO0FBQzdCLFNBQUtDLGdCQUFMLENBQXNCLEtBQXRCLEVBQTZCLEtBQUtDLFdBQUwsQ0FBaUJDLElBQWpCLENBQXNCLElBQXRCLENBQTdCLEVBRDZCLENBQytCOztBQUM1RCxTQUFLRixnQkFBTCxDQUFzQixLQUF0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c3QgPSByZXF1aXJlKFwiY2hhdF9jb25zdFwiKTtcclxudmFyIENoYXRFdmVudCA9IHJlcXVpcmUoXCJjaGF0X2V2ZW50XCIpO1xyXG52YXIgQmFja1BhY2tDb25zdCA9IHJlcXVpcmUoXCJiYWNrcGFja19jb25zdFwiKTtcclxudmFyIEdvb2RzVm8gID0gcmVxdWlyZShcImdvb2RzX3ZvXCIpO1xyXG52YXIgSGVyb0NvbnRyb2xsZXIgPSByZXF1aXJlKFwiaGVyb19jb250cm9sbGVyXCIpO1xyXG52YXIgVGlwc0NvbnRyb2xsZXIgPSByZXF1aXJlKFwidGlwc19jb250cm9sbGVyXCIpO1xyXG52YXIgUGFydG5lckNvbnN0ID0gcmVxdWlyZShcInBhcnRuZXJfY29uc3RcIik7XHJcblxyXG52YXIgRnJpZW5kQ29udHJvbGxlciA9IGNjLkNsYXNzKHtcclxuICAgIGV4dGVuZHM6IEJhc2VDb250cm9sbGVyLFxyXG5cclxuICAgIGN0b3I6IGZ1bmN0aW9uKCkge1xyXG5cclxuICAgIH0sXHJcblxyXG4gICAgcmVnaXN0ZXJQcm90b2NhbHM6IGZ1bmN0aW9uKCkge1xyXG5cdCAgICB0aGlzLlJlZ2lzdGVyUHJvdG9jYWwoMTI0MTgsIHRoaXMuaGFuZGxlMTI0MTguYmluZCh0aGlzKSk7ICAvLyDlj5HpgIHku7vliqHliLDogYrlpKlcclxuXHQgICAgdGhpcy5SZWdpc3RlclByb3RvY2FsKDEyNDE5LCB0aGlzLmhhbmRsZTEyNDE5LmJpbmQodGhpcykpOyAgLy8g54K55Ye75Lu75Yqh6L+U5Zue5pWw5o2uXHJcblx0ICAgIHRoaXMuUmVnaXN0ZXJQcm90b2NhbCgxMTIyMSwgdGhpcy5oYW5kbGUxMTIyMS5iaW5kKHRoaXMpKTsgIC8vIOWPkemAgeS8meS8tOWIsOiBiuWkqVxyXG5cdCAgICB0aGlzLlJlZ2lzdGVyUHJvdG9jYWwoMTEyMjIsIHRoaXMuaGFuZGxlMTEyMjIuYmluZCh0aGlzKSk7ICAvLyDngrnlh7vkvJnkvLTov5Tlm57mlbDmja5cclxuXHQgICAgdGhpcy5SZWdpc3RlclByb3RvY2FsKDEwNTM1LCB0aGlzLmhhbmRsZTEwNTM1LmJpbmQodGhpcykpOyAgXHJcblx0ICAgIHRoaXMuUmVnaXN0ZXJQcm90b2NhbCgxMDUzNiwgdGhpcy5oYW5kbGUxMDUzNi5iaW5kKHRoaXMpKTsgIC8vIOeCueWHu+eJqeWTgei/lOWbnuaVsOaNriAgXHJcbiAgICB9LFxyXG5cclxuICAgIC8vIOeUn+aIkGl0ZW0gVGV4dFxyXG5cdGJ1aWxkSXRlbU1zZzogZnVuY3Rpb24oaXRlbV9iaWQsIHNydl9pZCwgc2hhcmVfaWQsIGNvdW50KSB7XHJcblx0ICAgIHZhciBjb25maWdfZGF0YSA9IFV0aWxzLmdldEl0ZW1Db25maWcoaXRlbV9iaWQpO1xyXG5cdCAgICBjb3VudCA9IGNvdW50IHx8IDA7XHJcblx0ICAgIHZhciBpdGVtX25hbWUgPSBjb25maWdfZGF0YS5uYW1lO1xyXG5cdCAgICBpZiAoY291bnQgPiAxKVxyXG5cdCAgICAgICAgaXRlbV9uYW1lID0gaXRlbV9uYW1lICsgXCJ4XCIgKyBjb3VudDtcclxuXHQgICAgaWYgKGNvbmZpZ19kYXRhKSB7XHJcblx0ICAgIFx0Ly8gPGRpdiBmb250Y29sb3I9JXMgaHJlZj0lc3wlc3wlcz5bJXNdPC9kaXY+XCJcclxuXHQgICAgICAgIHJldHVybiBjYy5qcy5mb3JtYXRTdHIoXCI8Y29sb3I9JXM+PG9uIGNsaWNrPSdoYW5kbGVyJyBwYXJhbT0nJXN8JXN8JXMnPlslc108L29uPjwvY29sb3I+XCIsXHJcblx0ICAgICAgICAgICAgICAgIEJhY2tQYWNrQ29uc3QucXVhbGl0eV9jb2xvcihjb25maWdfZGF0YS5xdWFsaXR5KSxcclxuXHQgICAgICAgICAgICAgICAgQ2hhdENvbnN0LkxpbmsuSXRlbV9TaG93LFxyXG5cdCAgICAgICAgICAgICAgICBzcnZfaWQsXHJcblx0ICAgICAgICAgICAgICAgIHNoYXJlX2lkLFxyXG5cdCAgICAgICAgICAgICAgICBpdGVtX25hbWUpO1xyXG5cdCAgICB9XHJcblx0fSxcclxuXHJcblx0cmVsYXBjZUZhY2VJY29uVGFnOiBmdW5jdGlvbih0ZXh0KSB7XHJcblx0XHR2YXIgcGF0dCA9IC8oIylcXGQrL2c7XHJcblx0XHR2YXIgcmVzdWx0ID0gbnVsbDtcclxuXHRcdHdoaWxlKChyZXN1bHQgPSBwYXR0LmV4ZWModGV4dCkpICE9IG51bGwpIHtcclxuXHRcdFx0dmFyIGZhY2VfaWQgPSByZXN1bHRbMF0uc2xpY2UoMSwgcmVzdWx0WzBdLmxlbmd0aCk7XHJcblx0XHRcdHZhciBmYWNlX2NmZyA9IENvbmZpZy5mYWNlX2RhdGEuZGF0YV9iaWFvcWluZ1tmYWNlX2lkXTtcclxuXHRcdFx0dmFyIHJlcGxhY2Vfc3RyID0gXCJcIjtcclxuXHRcdFx0aWYgKGZhY2VfY2ZnKVxyXG5cdFx0XHRcdHJlcGxhY2Vfc3RyID0gY2MuanMuZm9ybWF0U3RyKFwiPGltZyBzcmM9J2Vtb2ppJyBlbW9qaT0nJXMnLz5cIiwgZmFjZV9jZmcubmFtZSk7XHJcblx0XHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UobmV3IFJlZ0V4cChyZXN1bHRbMF0sICdpJyksIHJlcGxhY2Vfc3RyKVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRleHQ7XHJcblx0fSxcclxuXHJcblx0YW5hbHl6ZU1lc3NhZ2U6IGZ1bmN0aW9uKG1lc3NhZ2UpIHtcclxuXHRcdHZhciBwYXR0ID0gLyhzcmM9KS9nO1xyXG5cdFx0dmFyIHJlc3VsdCA9IG51bGw7XHJcblx0XHR3aGlsZSgocmVzdWx0ID0gcGF0dC5leGVjKG1lc3NhZ2UpKSAhPSBudWxsKSB7XHJcblx0XHRcdG1lc3NhZ2UgKz0gXCIqKlwiO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBtZXNzYWdlO1xyXG5cdH0sXHJcblxyXG5cdGdldEltYWdlczogZnVuY3Rpb24obWVzc2FnZSkge1xyXG5cdFx0dmFyIGltZ19pZHMgPSBbXTtcclxuXHRcdHZhciBlbW9qaXMgPSBtZXNzYWdlLm1hdGNoKC9zcmM9JyhcXFMqKScvZylcclxuXHRcdGZvciAodmFyIGVtb2ppX2kgaW4gZW1vamlzKSB7XHJcblx0XHRcdHZhciBlbW9qaSA9IGVtb2ppc1tlbW9qaV9pXTtcclxuXHRcdFx0dmFyIGVtb2ppX2luZm8gPSBlbW9qaS5tYXRjaCgvc3JjPScoXFxTKiknLyk7XHJcblx0XHRcdGlmIChlbW9qaV9pbmZvWzFdICE9PSBcImVtb2ppXCIpXHJcblx0XHRcdFx0aW1nX2lkcy5wdXNoKGVtb2ppX2luZm9bMV0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBpbWdfaWRzO1xyXG5cdH0sXHJcblxyXG5cdGdldEVtb2ppczogZnVuY3Rpb24obWVzc2FnZSkge1xyXG5cdFx0dmFyIGVtb2ppX2lkcyA9IFtdO1xyXG5cdFx0dmFyIGVtb2ppcyA9IG1lc3NhZ2UubWF0Y2goL2Vtb2ppPScoXFxTKiknL2cpXHJcblx0XHRmb3IgKHZhciBlbW9qaV9pIGluIGVtb2ppcykge1xyXG5cdFx0XHR2YXIgZW1vamkgPSBlbW9qaXNbZW1vamlfaV07XHJcblx0XHRcdHZhciBlbW9qaV9pbmZvID0gZW1vamkubWF0Y2goL2Vtb2ppPScoXFxTKiknLyk7XHJcblx0XHRcdGVtb2ppX2lkcy5wdXNoKGVtb2ppX2luZm9bMV0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBlbW9qaV9pZHM7XHJcblx0fSxcclxuXHJcbiAgICBoYW5kbGUxMjQxODogZnVuY3Rpb24oZGF0YSkge1xyXG5cclxuICAgIH0sXHJcblxyXG5cdGhhbmRsZTEyNDE5OiBmdW5jdGlvbihkYXRhKSB7XHJcblxyXG5cdH0sXHJcblxyXG5cdGhhbmRsZTExMjIxOiBmdW5jdGlvbihkYXRhKSB7XHJcblxyXG5cdH0sXHJcblxyXG5cdGhhbmRsZTExMjIyOiBmdW5jdGlvbihkYXRhKSB7XHJcblxyXG5cdH0sXHJcblxyXG5cdHNlbmQxMDUzNTogZnVuY3Rpb24odHlwZSwgaWQsIHBhcnRuZXJfaWQsIGNvZGUpIHtcclxuXHQgICAgdmFyIHByb3RvY2FsID0ge31cclxuXHQgICAgcHJvdG9jYWwudHlwZSA9IHR5cGU7XHJcblx0ICAgIHByb3RvY2FsLmlkID0gaWQ7XHJcblx0ICAgIHByb3RvY2FsLnBhcnRuZXJfaWQgPSBwYXJ0bmVyX2lkO1xyXG5cdCAgICBwcm90b2NhbC5jb2RlID0gY29kZTtcclxuXHQgICAgdGhpcy5TZW5kUHJvdG9jYWwoMTA1MzUsIHByb3RvY2FsKTtcdFxyXG5cdH0sXHJcblxyXG5cdGhhbmRsZTEwNTM1OiBmdW5jdGlvbihkYXRhKSB7XHJcblx0ICAgIGlmIChkYXRhLmZsYWcgPT0gMSkge1xyXG5cdCAgICAgICAgZ2NvcmUuR2xvYmFsRXZlbnQuZmlyZShDaGF0RXZlbnQuQ0hBVF9TRUxFQ1RfSVRFTSwgZGF0YSk7XHJcblx0ICAgIH0gZWxzZSB7XHJcblx0ICAgICAgICBtZXNzYWdlKGRhdGEubXNnKVxyXG5cdCAgICB9XHJcblx0fSxcclxuXHJcblx0Ly8g6I635Y+W54mp5ZOBVGlwc1xyXG5cdHNlbmRlcjEwNTM2OiBmdW5jdGlvbihzaGFyZV9pZCwgc3J2X2lkKSB7XHJcblx0ICAgIGlmICghc2hhcmVfaWQpIHJldHVybjtcclxuXHQgICAgdmFyIHByb3RvY2FsID0ge307XHJcblx0ICAgIHByb3RvY2FsLnNydl9pZCA9IHNydl9pZDtcclxuXHQgICAgcHJvdG9jYWwuaWQgPSBzaGFyZV9pZDtcclxuXHQgICAgdGhpcy5TZW5kUHJvdG9jYWwoMTA1MzYsIHByb3RvY2FsKTtcdFx0XHJcblx0fSxcclxuXHJcblx0Ly8g5pi+56S654mp5ZOBVGlwc1xyXG5cdGhhbmRsZTEwNTM2OiBmdW5jdGlvbihkYXRhKSB7XHJcblx0XHRpZiAoZGF0YSkge1xyXG5cdFx0XHR2YXIgaXRlbV92byA9IG5ldyBHb29kc1ZvKCk7XHJcblx0XHRcdGl0ZW1fdm8uc2V0QmFzZUlkKGRhdGEuYmFzZV9pZCk7XHJcblx0XHRcdGl0ZW1fdm8uaW5pdEF0dHJEYXRhKGRhdGEpO1xyXG5cdFx0XHRpZiAoIWl0ZW1fdm8uY29uZmlnKSB7XHJcblx0XHRcdFx0bWVzc2FnZShVdGlscy5USTE4TihcIuaVsOaNruW8guW4uFwiKSk7XHJcblx0XHRcdFx0cmV0dXJuXHJcblx0XHRcdH1cclxuXHJcblx0XHQgICAgaWYgKEJhY2tQYWNrQ29uc3QuY2hlY2tJc0VxdWlwKGl0ZW1fdm8uY29uZmlnLnR5cGUpKSB7XHJcblx0XHQgICAgICAgIEhlcm9Db250cm9sbGVyLmdldEluc3RhbmNlKCkub3BlbkVxdWlwVGlwcyh0cnVlLCBpdGVtX3ZvLCBQYXJ0bmVyQ29uc3QuRXFtVGlwcy5vdGhlcik7XHJcblx0XHQgICAgfSBlbHNlIGlmIChCYWNrUGFja0NvbnN0LmNoZWNrSXNBcnRpZmFjdChpdGVtX3ZvLmNvbmZpZy50eXBlKSkge1xyXG5cdFx0ICAgICAgICBIZXJvQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLm9wZW5BcnRpZmFjdFRpcHNXaW5kb3codHJ1ZSwgaXRlbV92bywgUGFydG5lckNvbnN0LkFydGlmYWN0VGlwcy5ub3JtYWwpO1xyXG5cdFx0ICAgIH0gZWxzZSB7XHJcblx0XHRcdFx0dmFyIFRpcHNDb250cm9sbGVyID0gcmVxdWlyZShcInRpcHNfY29udHJvbGxlclwiKTtcclxuXHRcdCAgICAgICAgVGlwc0NvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5zaG93R29vZHNUaXBzKGl0ZW1fdm8uY29uZmlnKTtcclxuXHRcdCAgICB9XHJcblx0XHR9XHJcblx0fSxcclxuXHJcbn0pIl19