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
 
                (function() {
                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
                    var __module = nodeEnv ? module : {exports:{}};
                    var __filename = 'preview-scripts/assets/Scripts/mod/welfare/view/sign_panel.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, '00acdMJC4tMtqMvBfKNOA3e', 'sign_panel');
// Scripts/mod/welfare/view/sign_panel.js
 
"use strict";
 
// --------------------------------------------------------------------
// @author: xxx@syg.com(必填, 创建模块的人员)
// @description:
//     这里是描述这个窗体的作用的
// <br/>Create: 2019-03-06 11:27:30
// --------------------------------------------------------------------
var PathTool = require("pathtool");
 
var RoleController = require("role_controller");
 
var WelfareController = require("welfare_controller");
 
var CommonScrollView = require("common_scrollview");
 
var Timetool = require("timetool");
 
var SignItem = require("sign_item");
 
var WelfareEvent = require("welfare_event");
 
var SignPanel = cc.Class({
  "extends": BasePanel,
  ctor: function ctor() {
    this.prefabPath = PathTool.getPrefabPath("welfare", "sign_panel");
  },
  // 可以初始化声明一些变量的
  initConfig: function initConfig() {
    this.ctrl = WelfareController.getInstance();
    this.model = this.ctrl.getModel();
    this.role_vo = RoleController.getInstance().getRoleVo();
  },
  // 初始化一些配置数据,可以用于声明一些变量之类的
  initPanel: function initPanel() {
    this.main_container_nd = this.seekChild("main_container");
    this.title_con_nd = this.seekChild("title_con");
    this.tips_btn_nd = this.seekChild("tips_btn");
    this.goods_con_nd = this.seekChild("goods_con");
    var img = this.title_con_nd.getChildByName("title_img").getComponent(cc.Sprite);
    this.loadRes(PathTool.getIconPath("welfare/welfare_banner", "txt_cn_welfare_banner2"), function (res) {
      img.spriteFrame = res;
    }.bind(this));
    var tab_size = this.goods_con_nd.getContentSize();
    var setting = {
      item_class: SignItem,
      // 单元类
      start_x: 25,
      // 第一个单元的X起点
      space_x: 28,
      // x方向的间隔
      start_y: 20,
      // 第一个单元的Y起点
      space_y: 30,
      // y方向的间隔
      item_width: 107,
      // 单元的尺寸width
      item_height: 107,
      // 单元的尺寸height
      row: 0,
      // 行数,作用于水平滚动类型
      col: 5,
      // 列数,作用于垂直滚动类型
      need_dynamic: true
    };
    this.item_scrollview = new CommonScrollView();
    this.item_scrollview.createScroll(this.goods_con_nd, cc.v2(0, 0), ScrollViewDir.vertical, ScrollViewStartPos.top, tab_size, setting, cc.v2(0.5, 0.5));
  },
  // 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent
  registerEvent: function registerEvent() {
    this.addGlobalEvent(WelfareEvent.Update_Sign_Info, function (data) {
      this.createList(data);
    }, this);
    this.addGlobalEvent(WelfareEvent.Sign_Success, function (data) {
      this.createList(data);
    }, this);
    this.tips_btn_nd.on(cc.Node.EventType.TOUCH_END, function (event) {
      Utils.playButtonSound(1);
      var pos = event.touch.getLocation();
      var desc = StringUtil.parse(Config.checkin_data.data_const.checkin_rules.desc);
 
      require("tips_controller").getInstance().showCommonTips(desc, pos);
    });
    this.ctrl.sender14100();
  },
  createList: function createList(data) {
    var config = Config.checkin_data.data_award;
    var now_time = gcore.SmartSocket.getTime();
    var month = Number(Timetool.dateFtt("MM", now_time));
    var data_list = Utils.deepCopy(config[month]);
    var has_day = data.day;
    var now_day = 0;
    var list = [];
 
    for (var k in data_list) {
      var v = data_list[k];
 
      if (data.status > 0) {
        if (k < has_day) {
          //累计的
          v.status = 2; //已领取全部奖励
        } else if (k == has_day) {
          //今天
          v.status = data.status;
        } else {
          //之后的
          v.status = 0;
        }
 
        v.now_day = has_day;
        now_day = has_day;
      } else if (data.status == 0) {
        if (k <= has_day) {
          //累计的
          v.status = 2; //已领取全部奖励
        } else if (k == has_day + 1) {
          //今天
          v.status = data.status;
        } else {
          //之后的
          v.status = 0;
        }
 
        v.now_day = has_day + 1;
        now_day = has_day + 1;
      }
 
      list.push(v);
    }
 
    list.sort(Utils.tableLowerSorter(["day"]));
    this.item_scrollview.setData(list, function (cell) {
      var data = cell.getData();
 
      if (data.status == 1 && data.now_day == data.day && this.model.getRechargeCount() == 0) {
        var str = Utils.TI18N("当天充值<color=#289b14>任意金额</c>可<color=#289b14>额外</c>获得一次奖励");
 
        var fun = function fun() {
          require("vip_controller").getInstance().openVipMainWindow(true, VIPTABCONST.CHARGE);
        };
 
        var CommonAlert = require("commonalert");
 
        CommonAlert.show(str, Utils.TI18N("确认"), fun, Utils.TI18N("取消"), null, 2);
      } else if (data.day > data.now_day) {
        message(Utils.TI18N("未达到签到天数"));
      } else {
        this.ctrl.sender14101();
      }
    }.bind(this));
    this.item_scrollview.addEndCallBack(function () {
      var list = this.item_scrollview.getItemList();
      var pos = null;
 
      for (var k in list) {
        var vo = list[k].getData();
 
        if (vo.day == 26) {
          pos = list[k].getItemPosition();
        }
      }
 
      if (now_day >= 25) {
        this.item_scrollview.jumpToMove(cc.v2(pos.x, pos.y + this.item_scrollview.getContentSize().height / 2), 0.1);
      }
    }.bind(this));
  },
  // 预制体加载完成之后,添加到对应主节点之后的回调可以设置一些数据了
  onShow: function onShow(params) {},
  // 面板设置不可见的回调,这里做一些不可见的屏蔽处理
  onHide: function onHide() {},
  // 当面板从主节点释放掉的调用接口,需要手动调用,而且也一定要调用
  onDelete: function onDelete() {
    if (this.item_scrollview) {
      this.item_scrollview.deleteMe();
      this.item_scrollview = null;
    }
  }
});
 
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFx3ZWxmYXJlXFx2aWV3XFxzaWduX3BhbmVsLmpzIl0sIm5hbWVzIjpbIlBhdGhUb29sIiwicmVxdWlyZSIsIlJvbGVDb250cm9sbGVyIiwiV2VsZmFyZUNvbnRyb2xsZXIiLCJDb21tb25TY3JvbGxWaWV3IiwiVGltZXRvb2wiLCJTaWduSXRlbSIsIldlbGZhcmVFdmVudCIsIlNpZ25QYW5lbCIsImNjIiwiQ2xhc3MiLCJCYXNlUGFuZWwiLCJjdG9yIiwicHJlZmFiUGF0aCIsImdldFByZWZhYlBhdGgiLCJpbml0Q29uZmlnIiwiY3RybCIsImdldEluc3RhbmNlIiwibW9kZWwiLCJnZXRNb2RlbCIsInJvbGVfdm8iLCJnZXRSb2xlVm8iLCJpbml0UGFuZWwiLCJtYWluX2NvbnRhaW5lcl9uZCIsInNlZWtDaGlsZCIsInRpdGxlX2Nvbl9uZCIsInRpcHNfYnRuX25kIiwiZ29vZHNfY29uX25kIiwiaW1nIiwiZ2V0Q2hpbGRCeU5hbWUiLCJnZXRDb21wb25lbnQiLCJTcHJpdGUiLCJsb2FkUmVzIiwiZ2V0SWNvblBhdGgiLCJyZXMiLCJzcHJpdGVGcmFtZSIsImJpbmQiLCJ0YWJfc2l6ZSIsImdldENvbnRlbnRTaXplIiwic2V0dGluZyIsIml0ZW1fY2xhc3MiLCJzdGFydF94Iiwic3BhY2VfeCIsInN0YXJ0X3kiLCJzcGFjZV95IiwiaXRlbV93aWR0aCIsIml0ZW1faGVpZ2h0Iiwicm93IiwiY29sIiwibmVlZF9keW5hbWljIiwiaXRlbV9zY3JvbGx2aWV3IiwiY3JlYXRlU2Nyb2xsIiwidjIiLCJTY3JvbGxWaWV3RGlyIiwidmVydGljYWwiLCJTY3JvbGxWaWV3U3RhcnRQb3MiLCJ0b3AiLCJyZWdpc3RlckV2ZW50IiwiYWRkR2xvYmFsRXZlbnQiLCJVcGRhdGVfU2lnbl9JbmZvIiwiZGF0YSIsImNyZWF0ZUxpc3QiLCJTaWduX1N1Y2Nlc3MiLCJvbiIsIk5vZGUiLCJFdmVudFR5cGUiLCJUT1VDSF9FTkQiLCJldmVudCIsIlV0aWxzIiwicGxheUJ1dHRvblNvdW5kIiwicG9zIiwidG91Y2giLCJnZXRMb2NhdGlvbiIsImRlc2MiLCJTdHJpbmdVdGlsIiwicGFyc2UiLCJDb25maWciLCJjaGVja2luX2RhdGEiLCJkYXRhX2NvbnN0IiwiY2hlY2tpbl9ydWxlcyIsInNob3dDb21tb25UaXBzIiwic2VuZGVyMTQxMDAiLCJjb25maWciLCJkYXRhX2F3YXJkIiwibm93X3RpbWUiLCJnY29yZSIsIlNtYXJ0U29ja2V0IiwiZ2V0VGltZSIsIm1vbnRoIiwiTnVtYmVyIiwiZGF0ZUZ0dCIsImRhdGFfbGlzdCIsImRlZXBDb3B5IiwiaGFzX2RheSIsImRheSIsIm5vd19kYXkiLCJsaXN0IiwiayIsInYiLCJzdGF0dXMiLCJwdXNoIiwic29ydCIsInRhYmxlTG93ZXJTb3J0ZXIiLCJzZXREYXRhIiwiY2VsbCIsImdldERhdGEiLCJnZXRSZWNoYXJnZUNvdW50Iiwic3RyIiwiVEkxOE4iLCJmdW4iLCJvcGVuVmlwTWFpbldpbmRvdyIsIlZJUFRBQkNPTlNUIiwiQ0hBUkdFIiwiQ29tbW9uQWxlcnQiLCJzaG93IiwibWVzc2FnZSIsInNlbmRlcjE0MTAxIiwiYWRkRW5kQ2FsbEJhY2siLCJnZXRJdGVtTGlzdCIsInZvIiwiZ2V0SXRlbVBvc2l0aW9uIiwianVtcFRvTW92ZSIsIngiLCJ5IiwiaGVpZ2h0Iiwib25TaG93IiwicGFyYW1zIiwib25IaWRlIiwib25EZWxldGUiLCJkZWxldGVNZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxVQUFELENBQXRCOztBQUNBLElBQUlDLGNBQWMsR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQTVCOztBQUNBLElBQUlFLGlCQUFpQixHQUFHRixPQUFPLENBQUMsb0JBQUQsQ0FBL0I7O0FBQ0EsSUFBSUcsZ0JBQWdCLEdBQUdILE9BQU8sQ0FBQyxtQkFBRCxDQUE5Qjs7QUFD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QUFFLGtCQUFZLENBRW5CLENBOUlvQjtBQWdKckI7QUFDQUMsRUFBQUEsUUFBUSxFQUFFLG9CQUFZO0FBQ2xCLFFBQUksS0FBSzlFLGVBQVQsRUFBMEI7QUFDdEIsV0FBS0EsZUFBTCxDQUFxQitFLFFBQXJCO0FBQ0EsV0FBSy9FLGVBQUwsR0FBdUIsSUFBdkI7QUFDSDtBQUNKO0FBdEpvQixDQUFULENBQWhCIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGF1dGhvcjogeHh4QHN5Zy5jb20o5b+F5aGrLCDliJvlu7rmqKHlnZfnmoTkurrlkZgpXG4vLyBAZGVzY3JpcHRpb246XG4vLyAgICAg6L+Z6YeM5piv5o+P6L+w6L+Z5Liq56qX5L2T55qE5L2c55So55qEXG4vLyA8YnIvPkNyZWF0ZTogMjAxOS0wMy0wNiAxMToyNzozMFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnZhciBQYXRoVG9vbCA9IHJlcXVpcmUoXCJwYXRodG9vbFwiKTtcbnZhciBSb2xlQ29udHJvbGxlciA9IHJlcXVpcmUoXCJyb2xlX2NvbnRyb2xsZXJcIik7XG52YXIgV2VsZmFyZUNvbnRyb2xsZXIgPSByZXF1aXJlKFwid2VsZmFyZV9jb250cm9sbGVyXCIpO1xudmFyIENvbW1vblNjcm9sbFZpZXcgPSByZXF1aXJlKFwiY29tbW9uX3Njcm9sbHZpZXdcIik7XG52YXIgVGltZXRvb2wgPSByZXF1aXJlKFwidGltZXRvb2xcIik7XG52YXIgU2lnbkl0ZW0gPSByZXF1aXJlKFwic2lnbl9pdGVtXCIpO1xudmFyIFdlbGZhcmVFdmVudCA9IHJlcXVpcmUoXCJ3ZWxmYXJlX2V2ZW50XCIpO1xuXG52YXIgU2lnblBhbmVsID0gY2MuQ2xhc3Moe1xuICAgIGV4dGVuZHM6IEJhc2VQYW5lbCxcbiAgICBjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucHJlZmFiUGF0aCA9IFBhdGhUb29sLmdldFByZWZhYlBhdGgoXCJ3ZWxmYXJlXCIsIFwic2lnbl9wYW5lbFwiKTtcbiAgICB9LFxuXG4gICAgLy8g5Y+v5Lul5Yid5aeL5YyW5aOw5piO5LiA5Lqb5Y+Y6YeP55qEXG4gICAgaW5pdENvbmZpZzogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmN0cmwgPSBXZWxmYXJlQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpO1xuICAgICAgICB0aGlzLm1vZGVsID0gdGhpcy5jdHJsLmdldE1vZGVsKCk7XG4gICAgICAgIHRoaXMucm9sZV92byA9IFJvbGVDb250cm9sbGVyLmdldEluc3RhbmNlKCkuZ2V0Um9sZVZvKCk7XG4gICAgfSxcblxuICAgIC8vIOWIneWni+WMluS4gOS6m+mFjee9ruaVsOaNrizlj6/ku6XnlKjkuo7lo7DmmI7kuIDkupvlj5jph4/kuYvnsbvnmoRcbiAgICBpbml0UGFuZWw6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5tYWluX2NvbnRhaW5lcl9uZCA9IHRoaXMuc2Vla0NoaWxkKFwibWFpbl9jb250YWluZXJcIik7XG4gICAgICAgIHRoaXMudGl0bGVfY29uX25kID0gdGhpcy5zZWVrQ2hpbGQoXCJ0aXRsZV9jb25cIik7XG4gICAgICAgIHRoaXMudGlwc19idG5fbmQgPSB0aGlzLnNlZWtDaGlsZChcInRpcHNfYnRuXCIpO1xuXG4gICAgICAgIHRoaXMuZ29vZHNfY29uX25kID0gdGhpcy5zZWVrQ2hpbGQoXCJnb29kc19jb25cIik7XG5cbiAgICAgICAgbGV0IGltZyA9IHRoaXMudGl0bGVfY29uX25kLmdldENoaWxkQnlOYW1lKFwidGl0bGVfaW1nXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpXG4gICAgICAgIHRoaXMubG9hZFJlcyhQYXRoVG9vbC5nZXRJY29uUGF0aChcIndlbGZhcmUvd2VsZmFyZV9iYW5uZXJcIixcInR4dF9jbl93ZWxmYXJlX2Jhbm5lcjJcIiksZnVuY3Rpb24ocmVzKXtcbiAgICAgICAgICAgIGltZy5zcHJpdGVGcmFtZSA9IHJlc1xuICAgICAgICB9LmJpbmQodGhpcykpXG4gICAgICAgIHZhciB0YWJfc2l6ZSA9IHRoaXMuZ29vZHNfY29uX25kLmdldENvbnRlbnRTaXplKCk7XG4gICAgICAgIHZhciBzZXR0aW5nID0ge1xuICAgICAgICAgICAgaXRlbV9jbGFzczogU2lnbkl0ZW0sICAgICAgLy8g5Y2V5YWD57G7XG4gICAgICAgICAgICBzdGFydF94OiAyNSwgICAgICAgICAgICAgICAgICAgIC8vIOesrOS4gOS4quWNleWFg+eahFjotbfngrlcbiAgICAgICAgICAgIHNwYWNlX3g6IDI4LCAgICAgICAgICAgICAgICAgICAgLy8geOaWueWQkeeahOmXtOmalFxuICAgICAgICAgICAgc3RhcnRfeTogMjAsICAgICAgICAgICAgICAgICAgICAvLyDnrKzkuIDkuKrljZXlhYPnmoRZ6LW354K5XG4gICAgICAgICAgICBzcGFjZV95OiAzMCwgICAgICAgICAgICAgICAgICAgLy8geeaWueWQkeeahOmXtOmalFxuICAgICAgICAgICAgaXRlbV93aWR0aDogMTA3LCAgICAgICAgICAgICAgIC8vIOWNleWFg+eahOWwuuWvuHdpZHRoXG4gICAgICAgICAgICBpdGVtX2hlaWdodDogMTA3LCAgICAgICAgICAgICAgLy8g5Y2V5YWD55qE5bC65a+4aGVpZ2h0XG4gICAgICAgICAgICByb3c6IDAsICAgICAgICAgICAgICAgICAgICAgICAgLy8g6KGM5pWw77yM5L2c55So5LqO5rC05bmz5rua5Yqo57G75Z6LXG4gICAgICAgICAgICBjb2w6IDUsICAgICAgICAgICAgICAgICAgICAgICAgLy8g5YiX5pWw77yM5L2c55So5LqO5Z6C55u05rua5Yqo57G75Z6LXG4gICAgICAgICAgICBuZWVkX2R5bmFtaWM6IHRydWVcbiAgICAgICAgfVxuICAgICAgICB0aGlzLml0ZW1fc2Nyb2xsdmlldyA9IG5ldyBDb21tb25TY3JvbGxWaWV3KClcbiAgICAgICAgdGhpcy5pdGVtX3Njcm9sbHZpZXcuY3JlYXRlU2Nyb2xsKHRoaXMuZ29vZHNfY29uX25kLCBjYy52MigwLCAwKSwgU2Nyb2xsVmlld0Rpci52ZXJ0aWNhbCxcbiAgICAgICAgICAgIFNjcm9sbFZpZXdTdGFydFBvcy50b3AsIHRhYl9zaXplLCBzZXR0aW5nLCBjYy52MigwLjUsIDAuNSkpO1xuXG4gICAgfSxcblxuICAgIC8vIOazqOWGjOS6i+S7tuebkeWQrOeahOaOpeWPoyzkuI3pnIDopoHmiYvliqjosIPnlKgs5aaC5p6c5piv5L2/55SoZ2NvcmUuR2xvYmFsRXZlbnTnm5HlkKws5Y+v5Lul55u05o6l6LCD55SoYWRkR2xvYmFsRXZlbnRcbiAgICByZWdpc3RlckV2ZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuYWRkR2xvYmFsRXZlbnQoV2VsZmFyZUV2ZW50LlVwZGF0ZV9TaWduX0luZm8sIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUxpc3QoZGF0YSlcbiAgICAgICAgfSwgdGhpcylcblxuICAgICAgICB0aGlzLmFkZEdsb2JhbEV2ZW50KFdlbGZhcmVFdmVudC5TaWduX1N1Y2Nlc3MsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUxpc3QoZGF0YSk7XG4gICAgICAgIH0sIHRoaXMpXG5cblxuICAgICAgICB0aGlzLnRpcHNfYnRuX25kLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0VORCwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBVdGlscy5wbGF5QnV0dG9uU291bmQoMSk7XG4gICAgICAgICAgICB2YXIgcG9zID0gZXZlbnQudG91Y2guZ2V0TG9jYXRpb24oKTtcbiAgICAgICAgICAgIHZhciBkZXNjID0gU3RyaW5nVXRpbC5wYXJzZShDb25maWcuY2hlY2tpbl9kYXRhLmRhdGFfY29uc3QuY2hlY2tpbl9ydWxlcy5kZXNjKVxuICAgICAgICAgICAgcmVxdWlyZShcInRpcHNfY29udHJvbGxlclwiKS5nZXRJbnN0YW5jZSgpLnNob3dDb21tb25UaXBzKGRlc2MsIHBvcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY3RybC5zZW5kZXIxNDEwMCgpO1xuXG4gICAgfSxcblxuICAgIGNyZWF0ZUxpc3Q6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHZhciBjb25maWcgPSBDb25maWcuY2hlY2tpbl9kYXRhLmRhdGFfYXdhcmQ7XG4gICAgICAgIHZhciBub3dfdGltZSA9IGdjb3JlLlNtYXJ0U29ja2V0LmdldFRpbWUoKTtcbiAgICAgICAgdmFyIG1vbnRoID0gTnVtYmVyKFRpbWV0b29sLmRhdGVGdHQoXCJNTVwiLCBub3dfdGltZSkpO1xuICAgICAgICB2YXIgZGF0YV9saXN0ID0gVXRpbHMuZGVlcENvcHkoY29uZmlnW21vbnRoXSk7XG4gICAgICAgIHZhciBoYXNfZGF5ID0gZGF0YS5kYXk7XG4gICAgICAgIHZhciBub3dfZGF5ID0gMDtcbiAgICAgICAgdmFyIGxpc3QgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgayBpbiBkYXRhX2xpc3QpIHtcbiAgICAgICAgICAgIHZhciB2ID0gZGF0YV9saXN0W2tdO1xuICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzID4gMCkge1xuICAgICAgICAgICAgICAgIGlmIChrIDwgaGFzX2RheSkgeyAgICAgICAgLy/ntK/orqHnmoRcbiAgICAgICAgICAgICAgICAgICAgdi5zdGF0dXMgPSAyOyAgICAgICAvL+W3sumihuWPluWFqOmDqOWlluWKsVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSBoYXNfZGF5KSB7ICAgIC8v5LuK5aSpXG4gICAgICAgICAgICAgICAgICAgIHYuc3RhdHVzID0gZGF0YS5zdGF0dXM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHsgICAgLy/kuYvlkI7nmoRcbiAgICAgICAgICAgICAgICAgICAgdi5zdGF0dXMgPSAwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHYubm93X2RheSA9IGhhc19kYXlcbiAgICAgICAgICAgICAgICBub3dfZGF5ID0gaGFzX2RheTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5zdGF0dXMgPT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChrIDw9IGhhc19kYXkpIHsgICAgICAgLy/ntK/orqHnmoRcbiAgICAgICAgICAgICAgICAgICAgdi5zdGF0dXMgPSAyOyAgICAgICAvL+W3sumihuWPluWFqOmDqOWlluWKsVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSBoYXNfZGF5ICsgMSkgeyAgICAvL+S7iuWkqVxuICAgICAgICAgICAgICAgICAgICB2LnN0YXR1cyA9IGRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgLy/kuYvlkI7nmoRcbiAgICAgICAgICAgICAgICAgICAgdi5zdGF0dXMgPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2Lm5vd19kYXkgPSBoYXNfZGF5ICsgMTtcbiAgICAgICAgICAgICAgICBub3dfZGF5ID0gaGFzX2RheSArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaXN0LnB1c2godik7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGxpc3Quc29ydChVdGlscy50YWJsZUxvd2VyU29ydGVyKFtcImRheVwiXSkpXG5cblxuICAgICAgICB0aGlzLml0ZW1fc2Nyb2xsdmlldy5zZXREYXRhKGxpc3QsIGZ1bmN0aW9uIChjZWxsKSB7XG4gICAgICAgICAgICB2YXIgZGF0YSA9IGNlbGwuZ2V0RGF0YSgpO1xuICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzID09IDEgJiYgZGF0YS5ub3dfZGF5ID09IGRhdGEuZGF5ICYmIHRoaXMubW9kZWwuZ2V0UmVjaGFyZ2VDb3VudCgpID09IDApIHtcbiAgICAgICAgICAgICAgICB2YXIgc3RyID0gVXRpbHMuVEkxOE4oXCLlvZPlpKnlhYXlgLw8Y29sb3I9IzI4OWIxND7ku7vmhI/ph5Hpop08L2M+5Y+vPGNvbG9yPSMyODliMTQ+6aKd5aSWPC9jPuiOt+W+l+S4gOasoeWlluWKsVwiKTtcbiAgICAgICAgICAgICAgICB2YXIgZnVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlKFwidmlwX2NvbnRyb2xsZXJcIikuZ2V0SW5zdGFuY2UoKS5vcGVuVmlwTWFpbldpbmRvdyh0cnVlLCBWSVBUQUJDT05TVC5DSEFSR0UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgQ29tbW9uQWxlcnQgPSByZXF1aXJlKFwiY29tbW9uYWxlcnRcIik7XG4gICAgICAgICAgICAgICAgQ29tbW9uQWxlcnQuc2hvdyhzdHIsIFV0aWxzLlRJMThOKFwi56Gu6K6kXCIpLCBmdW4sIFV0aWxzLlRJMThOKFwi5Y+W5raIXCIpLCBudWxsLCAyKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5kYXkgPiBkYXRhLm5vd19kYXkpIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlKFV0aWxzLlRJMThOKFwi5pyq6L6+5Yiw562+5Yiw5aSp5pWwXCIpKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN0cmwuc2VuZGVyMTQxMDEoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfS5iaW5kKHRoaXMpKVxuXG4gICAgICAgIHRoaXMuaXRlbV9zY3JvbGx2aWV3LmFkZEVuZENhbGxCYWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBsaXN0ID0gdGhpcy5pdGVtX3Njcm9sbHZpZXcuZ2V0SXRlbUxpc3QoKTtcbiAgICAgICAgICAgIHZhciBwb3MgPSBudWxsO1xuICAgICAgICAgICAgZm9yICh2YXIgayBpbiBsaXN0KSB7XG4gICAgICAgICAgICAgICAgdmFyIHZvID0gbGlzdFtrXS5nZXREYXRhKCk7XG4gICAgICAgICAgICAgICAgaWYgKHZvLmRheSA9PSAyNikge1xuICAgICAgICAgICAgICAgICAgICBwb3MgPSBsaXN0W2tdLmdldEl0ZW1Qb3NpdGlvbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChub3dfZGF5ID49IDI1KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtX3Njcm9sbHZpZXcuanVtcFRvTW92ZShjYy52Mihwb3MueCwgcG9zLnkgKyB0aGlzLml0ZW1fc2Nyb2xsdmlldy5nZXRDb250ZW50U2l6ZSgpLmhlaWdodCAvIDIpLCAwLjEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LmJpbmQodGhpcykpXG4gICAgfSxcblxuICAgIC8vIOmihOWItuS9k+WKoOi9veWujOaIkOS5i+WQjizmt7vliqDliLDlr7nlupTkuLvoioLngrnkuYvlkI7nmoTlm57osIPlj6/ku6Xorr7nva7kuIDkupvmlbDmja7kuoZcbiAgICBvblNob3c6IGZ1bmN0aW9uIChwYXJhbXMpIHtcblxuICAgIH0sXG5cbiAgICAvLyDpnaLmnb/orr7nva7kuI3lj6/op4HnmoTlm57osIMs6L+Z6YeM5YGa5LiA5Lqb5LiN5Y+v6KeB55qE5bGP6JS95aSE55CGXG4gICAgb25IaWRlOiBmdW5jdGlvbiAoKSB7XG5cbiAgICB9LFxuXG4gICAgLy8g5b2T6Z2i5p2/5LuO5Li76IqC54K56YeK5pS+5o6J55qE6LCD55So5o6l5Y+jLOmcgOimgeaJi+WKqOiwg+eUqCzogIzkuJTkuZ/kuIDlrpropoHosIPnlKhcbiAgICBvbkRlbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5pdGVtX3Njcm9sbHZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbV9zY3JvbGx2aWV3LmRlbGV0ZU1lKCk7XG4gICAgICAgICAgICB0aGlzLml0ZW1fc2Nyb2xsdmlldyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9LFxufSkiXX0=