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
 
                (function() {
                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
                    var __module = nodeEnv ? module : {exports:{}};
                    var __filename = 'preview-scripts/assets/Scripts/mod/prompt/prompt_model.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, '7ab42uMxktP54+bqyufoXdb', 'prompt_model');
// Scripts/mod/prompt/prompt_model.js
 
"use strict";
 
// --------------------------------------------------------------------
// @author: xxx@syg.com(必填, 创建模块的人员)
// @description:
//      这里填写详细说明,主要填写该模块的功能简要
// <br/>Create: 2019-04-16 15:45:17
// --------------------------------------------------------------------
var PromptEvent = require("prompt_event");
 
var PromptModel = cc.Class({
  "extends": BaseClass,
  ctor: function ctor() {},
  properties: {},
  initConfig: function initConfig() {
    this.prompt_list = [];
    this.auto_id = 0;
  },
  addPromptData: function addPromptData(data) {
    var config = Config.notice_data.data_get[data.type];
 
    if (config == null) {
      cc.log("==============> 添加小图标失败, 未配置该小图标数据, 类型为 ", data.type);
      return;
    }
 
    var prompt_vo = null;
    var obj = this.getSridByData(data);
    var cur_rid = obj.rid;
    var cur_srv_id = obj.srv_id;
    if (this.checkIsInList(data.type, cur_rid, cur_srv_id) == true) return;
    this.auto_id = this.auto_id + 1;
 
    var PromptVo = require("prompt_vo");
 
    if (config.can_overly == 1) {
      prompt_vo = this.getPromptVoByType(data.type);
 
      if (prompt_vo == null) {
        prompt_vo = new PromptVo(data.type, this.auto_id);
        this.prompt_list.push(prompt_vo);
      }
 
      prompt_vo.update(data);
    } else {
      prompt_vo = new PromptVo(data.type, this.auto_id);
      prompt_vo.update(data);
      this.prompt_list.push(prompt_vo);
    }
 
    gcore.GlobalEvent.fire(PromptEvent.ADD_PROMPT_DATA, prompt_vo);
  },
  getPromptVoByType: function getPromptVoByType(type) {
    for (var i = 0; i < this.prompt_list.length; ++i) {
      var v = this.prompt_list[i];
 
      if (v.type == type) {
        return v;
      }
    }
  },
  checkIsInList: function checkIsInList(type, rid, srv_id) {
    for (var i = 0; i < this.prompt_list.length; ++i) {
      var _vo = this.prompt_list[i];
 
      if (_vo.type == type) {
        for (var k = 0; k < _vo.list.length; ++k) {
          var v = _vo.list[k];
 
          var obj = _vo.getSridByData(v.data);
 
          var _rid = obj.rid;
          var _srv_id = obj.srv_id;
          var _rolename = obj.role_name;
 
          if (Utils.getNorKey(_rid, _srv_id) == Utils.getNorKey(rid, srv_id)) {
            return true;
          }
        }
      }
    }
 
    return false;
  },
  getSridByData: function getSridByData(data) {
    var rid = 0,
        srv_id = "",
        role_name = "";
    var bbs_id = 0;
 
    if (data && data.arg_uint32 && data.arg_uint32.length > 0) {
      for (var i = 0; i < data.arg_uint32.length; ++i) {
        var temp = data.arg_uint32[i];
 
        if (temp) {
          if (temp.key == 1) {
            rid = temp.value;
          } else if (temp.key == 2) {
            bbs_id = temp.value; //留言板那边的..表示留言id
          }
        }
      }
    }
 
    if (data && data.arg_str && data.arg_str.length > 0) {
      for (var _i = 0; _i < data.arg_str.length; ++_i) {
        var _temp = data.arg_str[_i];
 
        if (_temp) {
          if (_temp.key == 1) {
            srv_id = _temp.value;
          } else if (_temp.key == 2) {
            role_name = _temp.value;
          }
        }
      }
    }
 
    return {
      rid: rid,
      srv_id: srv_id,
      role_name: role_name,
      bbs_id: bbs_id
    };
  },
  getPromptList: function getPromptList() {
    return this.prompt_list;
  },
  // -- 获取列表中是否有未气泡提示的消息
  getNotBubblePrompt: function getNotBubblePrompt() {
    for (var k = 0; k < this.prompt_list.length; ++k) {
      var data = this.prompt_list[k];
 
      if (data.is_show_bubble == false) {
        return data;
      }
    }
  },
  //移除一个提示数据,根据类型和id移除
  removePromptData: function removePromptData(type, id) {
    if (this.prompt_list.length > 0) {
      for (var i = 0; i < this.prompt_list.length; ++i) {
        if (vo.type == type && vo.id == id) {
          this.prompt_list.splice(i, 1);
          break;
        }
      }
 
      gcore.GlobalEvent.fire(PromptEvent.REMOVE_PROMPT_DATA);
    }
  },
  //根据类型去删除提示数据【例如通过好友图标打开好友界面时候去清理提示数据】
  removePromptDataByTpye: function removePromptDataByTpye(_type) {
    if (this.prompt_list.length > 0) {
      for (var i = 0; i < this.prompt_list.length; ++i) {
        var _vo2 = this.prompt_list[i];
 
        if (_vo2.type == _type) {
          this.prompt_list.splice(i, 1);
          break;
        }
      }
 
      gcore.GlobalEvent.fire(PromptEvent.REMOVE_PROMPT_DATA);
    }
  },
  //检测类型是有灯泡
  checkPromptDataByTpye: function checkPromptDataByTpye(_type) {
    if (this.prompt_list.length > 0) {
      for (var i = 0; i < this.prompt_list.length; ++i) {
        var _vo3 = this.prompt_list[i];
 
        if (_vo3.type == _type) {
          return true;
        }
      }
    }
 
    return false;
  }
});
 
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxwcm9tcHRcXHByb21wdF9tb2RlbC5qcyJdLCJuYW1lcyI6WyJQcm9tcHRFdmVudCIsInJlcXVpcmUiLCJQcm9tcHRNb2RlbCIsImNjIiwiQ2xhc3MiLCJCYXNlQ2xhc3MiLCJjdG9yIiwicHJvcGVydGllcyIsImluaXRDb25maWciLCJwcm9tcHRfbGlzdCIsImF1dG9faWQiLCJhZGRQcm9tcHREYXRhIiwiZGF0YSIsImNvbmZpZyIsIkNvbmZpZyIsIm5vdGljZV9kYXRhIiwiZGF0YV9nZXQiLCJ0eXBlIiwibG9nIiwicHJvbXB0X3ZvIiwib2JqIiwiZ2V0U3JpZEJ5RGF0YSIsImN1cl9yaWQiLCJyaWQiLCJjdXJfc3J2X2lkIiwic3J2X2lkIiwiY2hlY2tJc0luTGlzdCIsIlByb21wdFZvIiwiY2FuX292ZXJseSIsImdldFByb21wdFZvQnlUeXBlIiwicHVzaCIsInVwZGF0ZSIsImdjb3JlIiwiR2xvYmFsRXZlbnQiLCJmaXJlIiwiQUREX1BST01QVF9EQVRBIiwiaSIsImxlbmd0aCIsInYiLCJ2byIsImsiLCJsaXN0IiwiX3JpZCIsIl9zcnZfaWQiLCJfcm9sZW5hbWUiLCJyb2xlX25hbWUiLCJVdGlscyIsImdldE5vcktleSIsImJic19pZCIsImFyZ191aW50MzIiLCJ0ZW1wIiwia2V5IiwidmFsdWUiLCJhcmdfc3RyIiwiZ2V0UHJvbXB0TGlzdCIsImdldE5vdEJ1YmJsZVByb21wdCIsImlzX3Nob3dfYnViYmxlIiwicmVtb3ZlUHJvbXB0RGF0YSIsImlkIiwic3BsaWNlIiwiUkVNT1ZFX1BST01QVF9EQVRBIiwicmVtb3ZlUHJvbXB0RGF0YUJ5VHB5ZSIsIl90eXBlIiwiY2hlY2tQcm9tcHREYXRhQnlUcHllIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUlBLFdBQVcsR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBekI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHQyxFQUFFLENBQUNDLEtBQUgsQ0FBUztBQUN2QixhQUFTQyxTQURjO0FBRXZCQyxFQUFBQSxJQUFJLEVBQUUsZ0JBQVksQ0FDakIsQ0FIc0I7QUFLdkJDLEVBQUFBLFVBQVUsRUFBRSxFQUxXO0FBUXZCQyxFQUFBQSxVQUFVLEVBQUUsc0JBQVk7QUFDcEIsU0FBS0MsV0FBTCxHQUFtQixFQUFuQjtBQUNBLFNBQUtDLE9BQUwsR0FBZSxDQUFmO0FBQ0gsR0FYc0I7QUFZdkJDLEVBQUFBLGFBWnVCLHlCQVlUQyxJQVpTLEVBWUo7QUFDZixRQUFJQyxNQUFNLEdBQUdDLE1BQU0sQ0FBQ0MsV0FBUCxDQUFtQkMsUUFBbkIsQ0FBNEJKLElBQUksQ0FBQ0ssSUFBakMsQ0FBYjs7QUFDQSxRQUFHSixNQUFNLElBQUksSUFBYixFQUFrQjtBQUNkVixNQUFBQSxFQUFFLENBQUNlLEdBQUgsQ0FBTywwQ0FBUCxFQUFtRE4sSUFBSSxDQUFDSyxJQUF4RDtBQUNBO0FBQ0g7O0FBQ0QsUUFBSUUsU0FBUyxHQUFHLElBQWhCO0FBQ0EsUUFBSUMsR0FBRyxHQUFHLEtBQUtDLGFBQUwsQ0FBbUJULElBQW5CLENBQVY7QUFDQSxRQUFJVSxPQUFPLEdBQUdGLEdBQUcsQ0FBQ0csR0FBbEI7QUFDQSxRQUFJQyxVQUFVLEdBQUdKLEdBQUcsQ0FBQ0ssTUFBckI7QUFDQSxRQUFHLEtBQUtDLGFBQUwsQ0FBbUJkLElBQUksQ0FBQ0ssSUFBeEIsRUFBOEJLLE9BQTlCLEVBQXVDRSxVQUF2QyxLQUFzRCxJQUF6RCxFQUErRDtBQUMvRCxTQUFLZCxPQUFMLEdBQWUsS0FBS0EsT0FBTCxHQUFlLENBQTlCOztBQUNBLFFBQUlpQixRQUFRLEdBQUcxQixPQUFPLENBQUMsV0FBRCxDQUF0Qjs7QUFDQSxRQUFHWSxNQUFNLENBQUNlLFVBQVAsSUFBcUIsQ0FBeEIsRUFBMEI7QUFDdEJULE1BQUFBLFNBQVMsR0FBRyxLQUFLVSxpQkFBTCxDQUF1QmpCLElBQUksQ0FBQ0ssSUFBNUIsQ0FBWjs7QUFDQSxVQUFHRSxTQUFTLElBQUksSUFBaEIsRUFBcUI7QUFDakJBLFFBQUFBLFNBQVMsR0FBRyxJQUFJUSxRQUFKLENBQWFmLElBQUksQ0FBQ0ssSUFBbEIsRUFBd0IsS0FBS1AsT0FBN0IsQ0FBWjtBQUNBLGFBQUtELFdBQUwsQ0FBaUJxQixJQUFqQixDQUFzQlgsU0FBdEI7QUFDSDs7QUFDREEsTUFBQUEsU0FBUyxDQUFDWSxNQUFWLENBQWlCbkIsSUFBakI7QUFDSCxLQVBELE1BT0s7QUFDRE8sTUFBQUEsU0FBUyxHQUFHLElBQUlRLFFBQUosQ0FBYWYsSUFBSSxDQUFDSyxJQUFsQixFQUF3QixLQUFLUCxPQUE3QixDQUFaO0FBQ0FTLE1BQUFBLFNBQVMsQ0FBQ1ksTUFBVixDQUFpQm5CLElBQWpCO0FBQ0EsV0FBS0gsV0FBTCxDQUFpQnFCLElBQWpCLENBQXNCWCxTQUF0QjtBQUNIOztBQUNEYSxJQUFBQSxLQUFLLENBQUNDLFdBQU4sQ0FBa0JDLElBQWxCLENBQXVCbEMsV0FBVyxDQUFDbUMsZUFBbkMsRUFBb0RoQixTQUFwRDtBQUNILEdBdENzQjtBQXVDdkJVLEVBQUFBLGlCQXZDdUIsNkJBdUNMWixJQXZDSyxFQXVDQTtBQUNuQixTQUFJLElBQUltQixDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUMsS0FBSzNCLFdBQUwsQ0FBaUI0QixNQUEvQixFQUFzQyxFQUFFRCxDQUF4QyxFQUEwQztBQUN0QyxVQUFJRSxDQUFDLEdBQUcsS0FBSzdCLFdBQUwsQ0FBaUIyQixDQUFqQixDQUFSOztBQUNBLFVBQUdFLENBQUMsQ0FBQ3JCLElBQUYsSUFBVUEsSUFBYixFQUFrQjtBQUNkLGVBQU9xQixDQUFQO0FBQ0g7QUFDSjtBQUNKLEdBOUNzQjtBQStDdkJaLEVBQUFBLGFBL0N1Qix5QkErQ1RULElBL0NTLEVBK0NITSxHQS9DRyxFQStDRUUsTUEvQ0YsRUErQ1M7QUFDNUIsU0FBSSxJQUFJVyxDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUMsS0FBSzNCLFdBQUwsQ0FBaUI0QixNQUEvQixFQUFzQyxFQUFFRCxDQUF4QyxFQUEwQztBQUN0QyxVQUFJRyxHQUFFLEdBQUcsS0FBSzlCLFdBQUwsQ0FBaUIyQixDQUFqQixDQUFUOztBQUNBLFVBQUdHLEdBQUUsQ0FBQ3RCLElBQUgsSUFBV0EsSUFBZCxFQUFtQjtBQUNmLGFBQUksSUFBSXVCLENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQ0QsR0FBRSxDQUFDRSxJQUFILENBQVFKLE1BQXRCLEVBQTZCLEVBQUVHLENBQS9CLEVBQWlDO0FBQzdCLGNBQUlGLENBQUMsR0FBR0MsR0FBRSxDQUFDRSxJQUFILENBQVFELENBQVIsQ0FBUjs7QUFDQSxjQUFJcEIsR0FBRyxHQUFHbUIsR0FBRSxDQUFDbEIsYUFBSCxDQUFpQmlCLENBQUMsQ0FBQzFCLElBQW5CLENBQVY7O0FBQ0EsY0FBSThCLElBQUksR0FBR3RCLEdBQUcsQ0FBQ0csR0FBZjtBQUNBLGNBQUlvQixPQUFPLEdBQUd2QixHQUFHLENBQUNLLE1BQWxCO0FBQ0EsY0FBSW1CLFNBQVMsR0FBR3hCLEdBQUcsQ0FBQ3lCLFNBQXBCOztBQUNBLGNBQUdDLEtBQUssQ0FBQ0MsU0FBTixDQUFnQkwsSUFBaEIsRUFBc0JDLE9BQXRCLEtBQWtDRyxLQUFLLENBQUNDLFNBQU4sQ0FBZ0J4QixHQUFoQixFQUFxQkUsTUFBckIsQ0FBckMsRUFBa0U7QUFDOUQsbUJBQU8sSUFBUDtBQUNIO0FBQ0o7QUFDSjtBQUNKOztBQUNELFdBQU8sS0FBUDtBQUNILEdBaEVzQjtBQWlFdkJKLEVBQUFBLGFBakV1Qix5QkFpRVRULElBakVTLEVBaUVKO0FBQ2YsUUFBSVcsR0FBRyxHQUFHLENBQVY7QUFBQSxRQUFhRSxNQUFNLEdBQUcsRUFBdEI7QUFBQSxRQUEwQm9CLFNBQVMsR0FBRyxFQUF0QztBQUNBLFFBQUlHLE1BQU0sR0FBRyxDQUFiOztBQUNBLFFBQUdwQyxJQUFJLElBQUlBLElBQUksQ0FBQ3FDLFVBQWIsSUFBMkJyQyxJQUFJLENBQUNxQyxVQUFMLENBQWdCWixNQUFoQixHQUF5QixDQUF2RCxFQUF5RDtBQUNyRCxXQUFJLElBQUlELENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQ3hCLElBQUksQ0FBQ3FDLFVBQUwsQ0FBZ0JaLE1BQTlCLEVBQXFDLEVBQUVELENBQXZDLEVBQXlDO0FBQ3JDLFlBQUljLElBQUksR0FBR3RDLElBQUksQ0FBQ3FDLFVBQUwsQ0FBZ0JiLENBQWhCLENBQVg7O0FBQ0EsWUFBR2MsSUFBSCxFQUFRO0FBQ0osY0FBR0EsSUFBSSxDQUFDQyxHQUFMLElBQVksQ0FBZixFQUFpQjtBQUNiNUIsWUFBQUEsR0FBRyxHQUFHMkIsSUFBSSxDQUFDRSxLQUFYO0FBQ0gsV0FGRCxNQUVNLElBQUdGLElBQUksQ0FBQ0MsR0FBTCxJQUFZLENBQWYsRUFBaUI7QUFDbkJILFlBQUFBLE1BQU0sR0FBR0UsSUFBSSxDQUFDRSxLQUFkLENBRG1CLENBQ0M7QUFDdkI7QUFDSjtBQUNKO0FBQ0o7O0FBRUQsUUFBR3hDLElBQUksSUFBSUEsSUFBSSxDQUFDeUMsT0FBYixJQUF3QnpDLElBQUksQ0FBQ3lDLE9BQUwsQ0FBYWhCLE1BQWIsR0FBc0IsQ0FBakQsRUFBbUQ7QUFDL0MsV0FBSSxJQUFJRCxFQUFDLEdBQUMsQ0FBVixFQUFZQSxFQUFDLEdBQUN4QixJQUFJLENBQUN5QyxPQUFMLENBQWFoQixNQUEzQixFQUFrQyxFQUFFRCxFQUFwQyxFQUFzQztBQUNsQyxZQUFJYyxLQUFJLEdBQUd0QyxJQUFJLENBQUN5QyxPQUFMLENBQWFqQixFQUFiLENBQVg7O0FBQ0EsWUFBR2MsS0FBSCxFQUFRO0FBQ0osY0FBR0EsS0FBSSxDQUFDQyxHQUFMLElBQVksQ0FBZixFQUFpQjtBQUNiMUIsWUFBQUEsTUFBTSxHQUFHeUIsS0FBSSxDQUFDRSxLQUFkO0FBQ0gsV0FGRCxNQUVNLElBQUdGLEtBQUksQ0FBQ0MsR0FBTCxJQUFZLENBQWYsRUFBaUI7QUFDbkJOLFlBQUFBLFNBQVMsR0FBR0ssS0FBSSxDQUFDRSxLQUFqQjtBQUNIO0FBQ0o7QUFDSjtBQUNKOztBQUNELFdBQU87QUFBQzdCLE1BQUFBLEdBQUcsRUFBQ0EsR0FBTDtBQUFVRSxNQUFBQSxNQUFNLEVBQUNBLE1BQWpCO0FBQXlCb0IsTUFBQUEsU0FBUyxFQUFDQSxTQUFuQztBQUE4Q0csTUFBQUEsTUFBTSxFQUFDQTtBQUFyRCxLQUFQO0FBQ0gsR0E5RnNCO0FBK0Z2Qk0sRUFBQUEsYUEvRnVCLDJCQStGUjtBQUNYLFdBQU8sS0FBSzdDLFdBQVo7QUFDSCxHQWpHc0I7QUFrR3ZCO0FBQ0E4QyxFQUFBQSxrQkFuR3VCLGdDQW1HRDtBQUNsQixTQUFJLElBQUlmLENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQyxLQUFLL0IsV0FBTCxDQUFpQjRCLE1BQS9CLEVBQXNDLEVBQUVHLENBQXhDLEVBQTBDO0FBQ3RDLFVBQUk1QixJQUFJLEdBQUcsS0FBS0gsV0FBTCxDQUFpQitCLENBQWpCLENBQVg7O0FBQ0EsVUFBRzVCLElBQUksQ0FBQzRDLGNBQUwsSUFBdUIsS0FBMUIsRUFBZ0M7QUFDNUIsZUFBTzVDLElBQVA7QUFDSDtBQUNKO0FBQ0osR0ExR3NCO0FBMkd2QjtBQUNBNkMsRUFBQUEsZ0JBNUd1Qiw0QkE0R054QyxJQTVHTSxFQTRHQXlDLEVBNUdBLEVBNEdHO0FBQ3RCLFFBQUcsS0FBS2pELFdBQUwsQ0FBaUI0QixNQUFqQixHQUEwQixDQUE3QixFQUErQjtBQUMzQixXQUFJLElBQUlELENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQyxLQUFLM0IsV0FBTCxDQUFpQjRCLE1BQS9CLEVBQXNDLEVBQUVELENBQXhDLEVBQTBDO0FBQ3RDLFlBQUdHLEVBQUUsQ0FBQ3RCLElBQUgsSUFBV0EsSUFBWCxJQUFtQnNCLEVBQUUsQ0FBQ21CLEVBQUgsSUFBU0EsRUFBL0IsRUFBa0M7QUFDOUIsZUFBS2pELFdBQUwsQ0FBaUJrRCxNQUFqQixDQUF3QnZCLENBQXhCLEVBQTBCLENBQTFCO0FBQ0E7QUFDSDtBQUNKOztBQUNESixNQUFBQSxLQUFLLENBQUNDLFdBQU4sQ0FBa0JDLElBQWxCLENBQXVCbEMsV0FBVyxDQUFDNEQsa0JBQW5DO0FBQ0g7QUFDSixHQXRIc0I7QUF1SHZCO0FBQ0FDLEVBQUFBLHNCQXhIdUIsa0NBd0hBQyxLQXhIQSxFQXdITTtBQUN6QixRQUFHLEtBQUtyRCxXQUFMLENBQWlCNEIsTUFBakIsR0FBMEIsQ0FBN0IsRUFBK0I7QUFDM0IsV0FBSSxJQUFJRCxDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUMsS0FBSzNCLFdBQUwsQ0FBaUI0QixNQUEvQixFQUFzQyxFQUFFRCxDQUF4QyxFQUEwQztBQUN0QyxZQUFJRyxJQUFFLEdBQUcsS0FBSzlCLFdBQUwsQ0FBaUIyQixDQUFqQixDQUFUOztBQUNBLFlBQUdHLElBQUUsQ0FBQ3RCLElBQUgsSUFBVzZDLEtBQWQsRUFBb0I7QUFDaEIsZUFBS3JELFdBQUwsQ0FBaUJrRCxNQUFqQixDQUF3QnZCLENBQXhCLEVBQTBCLENBQTFCO0FBQ0E7QUFDSDtBQUNKOztBQUNESixNQUFBQSxLQUFLLENBQUNDLFdBQU4sQ0FBa0JDLElBQWxCLENBQXVCbEMsV0FBVyxDQUFDNEQsa0JBQW5DO0FBQ0g7QUFDSixHQW5Jc0I7QUFxSXZCO0FBQ0FHLEVBQUFBLHFCQXRJdUIsaUNBc0lERCxLQXRJQyxFQXNJSztBQUN4QixRQUFHLEtBQUtyRCxXQUFMLENBQWlCNEIsTUFBakIsR0FBMEIsQ0FBN0IsRUFBK0I7QUFDM0IsV0FBSSxJQUFJRCxDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUMsS0FBSzNCLFdBQUwsQ0FBaUI0QixNQUEvQixFQUFzQyxFQUFFRCxDQUF4QyxFQUEwQztBQUN0QyxZQUFJRyxJQUFFLEdBQUcsS0FBSzlCLFdBQUwsQ0FBaUIyQixDQUFqQixDQUFUOztBQUNBLFlBQUdHLElBQUUsQ0FBQ3RCLElBQUgsSUFBVzZDLEtBQWQsRUFBb0I7QUFDaEIsaUJBQU8sSUFBUDtBQUNIO0FBQ0o7QUFDSjs7QUFDRCxXQUFPLEtBQVA7QUFDSDtBQWhKc0IsQ0FBVCxDQUFsQiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBhdXRob3I6IHh4eEBzeWcuY29tKOW/heWhqywg5Yib5bu65qih5Z2X55qE5Lq65ZGYKVxuLy8gQGRlc2NyaXB0aW9uOlxuLy8gICAgICDov5nph4zloavlhpnor6bnu4bor7TmmI4s5Li76KaB5aGr5YaZ6K+l5qih5Z2X55qE5Yqf6IO9566A6KaBXG4vLyA8YnIvPkNyZWF0ZTogMjAxOS0wNC0xNiAxNTo0NToxN1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnZhciBQcm9tcHRFdmVudCA9IHJlcXVpcmUoXCJwcm9tcHRfZXZlbnRcIilcbnZhciBQcm9tcHRNb2RlbCA9IGNjLkNsYXNzKHtcbiAgICBleHRlbmRzOiBCYXNlQ2xhc3MsXG4gICAgY3RvcjogZnVuY3Rpb24gKCkge1xuICAgIH0sXG5cbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgfSxcblxuICAgIGluaXRDb25maWc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wcm9tcHRfbGlzdCA9IFtdO1xuICAgICAgICB0aGlzLmF1dG9faWQgPSAwO1xuICAgIH0sXG4gICAgYWRkUHJvbXB0RGF0YShkYXRhKXtcbiAgICAgICAgbGV0IGNvbmZpZyA9IENvbmZpZy5ub3RpY2VfZGF0YS5kYXRhX2dldFtkYXRhLnR5cGVdXG4gICAgICAgIGlmKGNvbmZpZyA9PSBudWxsKXtcbiAgICAgICAgICAgIGNjLmxvZyhcIj09PT09PT09PT09PT09PiDmt7vliqDlsI/lm77moIflpLHotKUsIOacqumFjee9ruivpeWwj+Wbvuagh+aVsOaNriwg57G75Z6L5Li6IFwiLCBkYXRhLnR5cGUpXG4gICAgICAgICAgICByZXR1cm4gXG4gICAgICAgIH1cbiAgICAgICAgbGV0IHByb21wdF92byA9IG51bGxcbiAgICAgICAgbGV0IG9iaiA9IHRoaXMuZ2V0U3JpZEJ5RGF0YShkYXRhKVxuICAgICAgICBsZXQgY3VyX3JpZCA9IG9iai5yaWQgXG4gICAgICAgIGxldCBjdXJfc3J2X2lkID0gb2JqLnNydl9pZFxuICAgICAgICBpZih0aGlzLmNoZWNrSXNJbkxpc3QoZGF0YS50eXBlLCBjdXJfcmlkLCBjdXJfc3J2X2lkKSA9PSB0cnVlKSByZXR1cm47XG4gICAgICAgIHRoaXMuYXV0b19pZCA9IHRoaXMuYXV0b19pZCArIDFcbiAgICAgICAgbGV0IFByb21wdFZvID0gcmVxdWlyZShcInByb21wdF92b1wiKVxuICAgICAgICBpZihjb25maWcuY2FuX292ZXJseSA9PSAxKXtcbiAgICAgICAgICAgIHByb21wdF92byA9IHRoaXMuZ2V0UHJvbXB0Vm9CeVR5cGUoZGF0YS50eXBlKVxuICAgICAgICAgICAgaWYocHJvbXB0X3ZvID09IG51bGwpe1xuICAgICAgICAgICAgICAgIHByb21wdF92byA9IG5ldyBQcm9tcHRWbyhkYXRhLnR5cGUsIHRoaXMuYXV0b19pZClcbiAgICAgICAgICAgICAgICB0aGlzLnByb21wdF9saXN0LnB1c2gocHJvbXB0X3ZvKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJvbXB0X3ZvLnVwZGF0ZShkYXRhKVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHByb21wdF92byA9IG5ldyBQcm9tcHRWbyhkYXRhLnR5cGUsIHRoaXMuYXV0b19pZClcbiAgICAgICAgICAgIHByb21wdF92by51cGRhdGUoZGF0YSlcbiAgICAgICAgICAgIHRoaXMucHJvbXB0X2xpc3QucHVzaChwcm9tcHRfdm8pXG4gICAgICAgIH1cbiAgICAgICAgZ2NvcmUuR2xvYmFsRXZlbnQuZmlyZShQcm9tcHRFdmVudC5BRERfUFJPTVBUX0RBVEEsIHByb21wdF92byk7XG4gICAgfSxcbiAgICBnZXRQcm9tcHRWb0J5VHlwZSh0eXBlKXtcbiAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLnByb21wdF9saXN0Lmxlbmd0aDsrK2kpe1xuICAgICAgICAgICAgbGV0IHYgPSB0aGlzLnByb21wdF9saXN0W2ldXG4gICAgICAgICAgICBpZih2LnR5cGUgPT0gdHlwZSl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgY2hlY2tJc0luTGlzdCh0eXBlLCByaWQsIHNydl9pZCl7XG4gICAgICAgIGZvcihsZXQgaT0wO2k8dGhpcy5wcm9tcHRfbGlzdC5sZW5ndGg7KytpKXtcbiAgICAgICAgICAgIGxldCB2byA9IHRoaXMucHJvbXB0X2xpc3RbaV1cbiAgICAgICAgICAgIGlmKHZvLnR5cGUgPT0gdHlwZSl7XG4gICAgICAgICAgICAgICAgZm9yKGxldCBrPTA7azx2by5saXN0Lmxlbmd0aDsrK2spe1xuICAgICAgICAgICAgICAgICAgICBsZXQgdiA9IHZvLmxpc3Rba11cbiAgICAgICAgICAgICAgICAgICAgbGV0IG9iaiA9IHZvLmdldFNyaWRCeURhdGEodi5kYXRhKVxuICAgICAgICAgICAgICAgICAgICBsZXQgX3JpZCA9IG9iai5yaWRcbiAgICAgICAgICAgICAgICAgICAgbGV0IF9zcnZfaWQgPSBvYmouc3J2X2lkXG4gICAgICAgICAgICAgICAgICAgIGxldCBfcm9sZW5hbWUgPSBvYmoucm9sZV9uYW1lXG4gICAgICAgICAgICAgICAgICAgIGlmKFV0aWxzLmdldE5vcktleShfcmlkLCBfc3J2X2lkKSA9PSBVdGlscy5nZXROb3JLZXkocmlkLCBzcnZfaWQpKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSxcbiAgICBnZXRTcmlkQnlEYXRhKGRhdGEpe1xuICAgICAgICBsZXQgcmlkID0gMCwgc3J2X2lkID0gXCJcIiwgcm9sZV9uYW1lID0gXCJcIjtcbiAgICAgICAgbGV0IGJic19pZCA9IDBcbiAgICAgICAgaWYoZGF0YSAmJiBkYXRhLmFyZ191aW50MzIgJiYgZGF0YS5hcmdfdWludDMyLmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgZm9yKGxldCBpPTA7aTxkYXRhLmFyZ191aW50MzIubGVuZ3RoOysraSl7XG4gICAgICAgICAgICAgICAgbGV0IHRlbXAgPSBkYXRhLmFyZ191aW50MzJbaV1cbiAgICAgICAgICAgICAgICBpZih0ZW1wKXtcbiAgICAgICAgICAgICAgICAgICAgaWYodGVtcC5rZXkgPT0gMSl7XG4gICAgICAgICAgICAgICAgICAgICAgICByaWQgPSB0ZW1wLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmKHRlbXAua2V5ID09IDIpe1xuICAgICAgICAgICAgICAgICAgICAgICAgYmJzX2lkID0gdGVtcC52YWx1ZSAvL+eVmeiogOadv+mCo+i+ueeahC4u6KGo56S655WZ6KiAaWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gICAgXG4gICAgICAgIH1cblxuICAgICAgICBpZihkYXRhICYmIGRhdGEuYXJnX3N0ciAmJiBkYXRhLmFyZ19zdHIubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICBmb3IobGV0IGk9MDtpPGRhdGEuYXJnX3N0ci5sZW5ndGg7KytpKXtcbiAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IGRhdGEuYXJnX3N0cltpXVxuICAgICAgICAgICAgICAgIGlmKHRlbXApe1xuICAgICAgICAgICAgICAgICAgICBpZih0ZW1wLmtleSA9PSAxKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNydl9pZCA9IHRlbXAudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYodGVtcC5rZXkgPT0gMil7XG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlX25hbWUgPSB0ZW1wLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtyaWQ6cmlkLCBzcnZfaWQ6c3J2X2lkLCByb2xlX25hbWU6cm9sZV9uYW1lLCBiYnNfaWQ6YmJzX2lkfVxuICAgIH0sXG4gICAgZ2V0UHJvbXB0TGlzdCgpe1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9tcHRfbGlzdFxuICAgIH0sXG4gICAgLy8gLS0g6I635Y+W5YiX6KGo5Lit5piv5ZCm5pyJ5pyq5rCU5rOh5o+Q56S655qE5raI5oGvXG4gICAgZ2V0Tm90QnViYmxlUHJvbXB0KCAgKXtcbiAgICAgICAgZm9yKGxldCBrPTA7azx0aGlzLnByb21wdF9saXN0Lmxlbmd0aDsrK2spe1xuICAgICAgICAgICAgbGV0IGRhdGEgPSB0aGlzLnByb21wdF9saXN0W2tdXG4gICAgICAgICAgICBpZihkYXRhLmlzX3Nob3dfYnViYmxlID09IGZhbHNlKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICAvL+enu+mZpOS4gOS4quaPkOekuuaVsOaNrizmoLnmja7nsbvlnovlkoxpZOenu+mZpFxuICAgIHJlbW92ZVByb21wdERhdGEodHlwZSwgaWQpe1xuICAgICAgICBpZih0aGlzLnByb21wdF9saXN0Lmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLnByb21wdF9saXN0Lmxlbmd0aDsrK2kpe1xuICAgICAgICAgICAgICAgIGlmKHZvLnR5cGUgPT0gdHlwZSAmJiB2by5pZCA9PSBpZCl7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvbXB0X2xpc3Quc3BsaWNlKGksMSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBnY29yZS5HbG9iYWxFdmVudC5maXJlKFByb21wdEV2ZW50LlJFTU9WRV9QUk9NUFRfREFUQSlcbiAgICAgICAgfVxuICAgIH0sXG4gICAgLy/moLnmja7nsbvlnovljrvliKDpmaTmj5DnpLrmlbDmja7jgJDkvovlpoLpgJrov4flpb3lj4vlm77moIfmiZPlvIDlpb3lj4vnlYzpnaLml7blgJnljrvmuIXnkIbmj5DnpLrmlbDmja7jgJFcbiAgICByZW1vdmVQcm9tcHREYXRhQnlUcHllKF90eXBlKXtcbiAgICAgICAgaWYodGhpcy5wcm9tcHRfbGlzdC5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgIGZvcihsZXQgaT0wO2k8dGhpcy5wcm9tcHRfbGlzdC5sZW5ndGg7KytpKXtcbiAgICAgICAgICAgICAgICBsZXQgdm8gPSB0aGlzLnByb21wdF9saXN0W2ldXG4gICAgICAgICAgICAgICAgaWYodm8udHlwZSA9PSBfdHlwZSl7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvbXB0X2xpc3Quc3BsaWNlKGksMSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBnY29yZS5HbG9iYWxFdmVudC5maXJlKFByb21wdEV2ZW50LlJFTU9WRV9QUk9NUFRfREFUQSlcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvL+ajgOa1i+exu+Wei+aYr+acieeBr+azoVxuICAgIGNoZWNrUHJvbXB0RGF0YUJ5VHB5ZShfdHlwZSl7XG4gICAgICAgIGlmKHRoaXMucHJvbXB0X2xpc3QubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMucHJvbXB0X2xpc3QubGVuZ3RoOysraSl7XG4gICAgICAgICAgICAgICAgbGV0IHZvID0gdGhpcy5wcm9tcHRfbGlzdFtpXVxuICAgICAgICAgICAgICAgIGlmKHZvLnR5cGUgPT0gX3R5cGUpe1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9LFxufSk7Il19