|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/mod/vip/view/daily_gift_item.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, '04caazCG7lJIZULGOmH8ubn', 'daily_gift_item');
|
// Scripts/mod/vip/view/daily_gift_item.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 这里是描述这个窗体的作用的
|
// <br/>Create: 2019-03-02 11:36:56
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var CommonScrollView = require("common_scrollview");
|
|
var VipController = require("vip_controller");
|
|
var RoleController = require("role_controller");
|
|
var Daily_gift_itemPanel = cc.Class({
|
"extends": BasePanel,
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("vip", "daily_gift_item");
|
},
|
// 可以初始化声明一些变量的
|
initConfig: function initConfig() {
|
this.ctrl = VipController.getInstance();
|
this.model = this.ctrl.getModel();
|
this.role_vo = RoleController.getInstance().getRoleVo();
|
this.limit_num = 0;
|
},
|
// 初始化一些配置数据,可以用于声明一些变量之类的
|
initPanel: function initPanel() {
|
this.container_nd = this.seekChild("container");
|
this.image_bg_sp = this.seekChild("image_bg", cc.Sprite);
|
this.title_txt_lb = this.seekChild("title_txt", cc.Label);
|
this.buy_btn = this.seekChild("buy_btn", cc.Button);
|
this.buy_btn_lb = this.seekChild(this.buy_btn.node, "Label", cc.Label);
|
this.gift_desc_rt = this.seekChild("gift_desc_txt", cc.RichText);
|
this.left_num_lb = this.seekChild("left_num", cc.Label);
|
var good_list_nd = this.seekChild("good_list");
|
var tab_size = good_list_nd.getContentSize();
|
var setting = {
|
item_class: "backpack_item",
|
// 单元类
|
start_x: 0,
|
// 第一个单元的X起点
|
space_x: 25,
|
// x方向的间隔
|
start_y: 0,
|
// 第一个单元的Y起点
|
space_y: 0,
|
// y方向的间隔
|
item_width: BackPackItem.Width * 0.7,
|
// 单元的尺寸width
|
item_height: BackPackItem.Width * 0.7,
|
// 单元的尺寸height
|
row: 1,
|
// 行数,作用于水平滚动类型
|
col: 1,
|
// 列数,作用于垂直滚动类型
|
// need_dynamic: true
|
scale: 0.7
|
};
|
this.item_scrollview = new CommonScrollView();
|
this.item_scrollview.createScroll(good_list_nd, cc.v2(0, 0), ScrollViewDir.horizontal, ScrollViewStartPos.top, tab_size, setting, cc.v2(0.5, 0.5));
|
},
|
// 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent
|
registerEvent: function registerEvent() {
|
Utils.onTouchEnd(this.buy_btn.node, function () {
|
if (this.limit_num > 0) {
|
this._onClickBuyBtn();
|
}
|
}.bind(this), 1);
|
},
|
//点击购买
|
_onClickBuyBtn: function _onClickBuyBtn() {
|
if (this.gift_config) {
|
var limit_vip = this.gift_config.limit_vip;
|
|
if (this.role_vo.vip_lev >= limit_vip) {
|
var charge_id = this.gift_config.charge_id;
|
var charge_config = gdata("charge_data", "data_charge_data", [charge_id || 0]);
|
|
if (charge_config) {
|
SDK.pay(charge_config.val, null, charge_config.id, charge_config.name, charge_config.name, null, null);
|
}
|
} else {
|
message(cc.js.formatStr(Utils.TI18N("VIP%d可购买"), limit_vip));
|
}
|
}
|
},
|
setData: function setData(data) {
|
this.data = data;
|
if (this.root_wnd) this.onShow();
|
},
|
// 预制体加载完成之后,添加到对应主节点之后的回调可以设置一些数据了
|
onShow: function onShow() {
|
if (this.data == null) return;
|
this.gift_config = this.data;
|
var data = this.data;
|
var gift_bid = data.id;
|
var buy_count = this.model.getDailyGiftBuyCountById(gift_bid);
|
var gift_res = PathTool.getBigBg(this.gift_config.bg_res);
|
this.loadRes(gift_res, function (sf_obj) {
|
this.image_bg_sp.spriteFrame = sf_obj;
|
}.bind(this));
|
this.title_txt_lb.string = this.gift_config.name || "";
|
|
if (this.gift_config.limit_count <= buy_count) {
|
Utils.setGreyButton(this.buy_btn, true);
|
this.buy_btn_lb.string = Utils.TI18N("今日已购");
|
this.buy_btn_lb.node.color = new cc.Color(255, 255, 255);
|
} else {
|
Utils.setGreyButton(this.buy_btn, false);
|
this.buy_btn_lb.string = cc.js.formatStr(Utils.TI18N("%d元"), this.gift_config.val || 0);
|
this.buy_btn_lb.node.color = new cc.Color(113, 40, 4);
|
}
|
|
this.left_num_lb.string = cc.js.formatStr(Utils.TI18N("限购:%d次"), this.gift_config.limit_count - buy_count);
|
this.limit_num = this.gift_config.limit_count - buy_count; //描述内容
|
|
var desc = StringUtil.parse(this.gift_config.desc);
|
var res_str = cc.js.formatStr("<img src='%s' /></img>", 3);
|
var str_ = cc.js.formatStr(desc, res_str, res_str);
|
this.gift_desc_rt.string = str_;
|
this.loadRes(PathTool.getItemRes(3), function (resObject) {
|
this.gift_desc_rt.addSpriteFrame(resObject);
|
}.bind(this)); //奖励物品
|
|
var gift_award_cfg = gdata("charge_data", "data_daily_gift_award", [gift_bid]);
|
|
if (gift_award_cfg) {
|
var award_data = {};
|
|
for (var k in gift_award_cfg) {
|
var v = gift_award_cfg[k];
|
|
if (v.min <= this.role_vo.lev && v.max >= this.role_vo.lev) {
|
award_data = Utils.deepCopy(v.reward);
|
break;
|
}
|
}
|
|
var item_list = [];
|
|
for (var k in award_data) {
|
var v = award_data[k];
|
var vo = Utils.deepCopy(Utils.getItemConfig(v[0]));
|
|
if (vo) {
|
vo.num = v[1];
|
vo.bid = v[0];
|
vo.quantity = v[1];
|
item_list.push(vo);
|
}
|
}
|
|
var is_show_double = false;
|
|
if (this.gift_config && this.gift_config.is_double && this.gift_config.is_double == 1) {
|
is_show_double = true;
|
}
|
|
this.item_scrollview.setData(item_list);
|
this.item_scrollview.addEndCallBack(function () {
|
var list = this.item_scrollview.getItemList();
|
|
for (var k = 0; k < list.length; ++k) {
|
if (is_show_double) {
|
//显示双倍
|
var item_cfg = list[k].getData();
|
|
if (item_cfg && item_cfg.id == 3) {
|
list[k].setDoubleIcon(true);
|
} else {
|
list[k].setDoubleIcon(false);
|
}
|
}
|
|
if (list[k]) {
|
list[k].setDefaultTip();
|
}
|
}
|
}.bind(this));
|
}
|
},
|
// 面板设置不可见的回调,这里做一些不可见的屏蔽处理
|
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFx2aXBcXHZpZXdcXGRhaWx5X2dpZnRfaXRlbS5qcyJdLCJuYW1lcyI6WyJQYXRoVG9vbCIsInJlcXVpcmUiLCJDb21tb25TY3JvbGxWaWV3IiwiVmlwQ29udHJvbGxlciIsIlJvbGVDb250cm9sbGVyIiwiRGFpbHlfZ2lmdF9pdGVtUGFuZWwiLCJjYyIsIkNsYXNzIiwiQmFzZVBhbmVsIiwiY3RvciIsInByZWZhYlBhdGgiLCJnZXRQcmVmYWJQYXRoIiwiaW5pdENvbmZpZyIsImN0cmwiLCJnZXRJbnN0YW5jZSIsIm1vZGVsIiwiZ2V0TW9kZWwiLCJyb2xlX3ZvIiwiZ2V0Um9sZVZvIiwibGltaXRfbnVtIiwiaW5pdFBhbmVsIiwiY29udGFpbmVyX25kIiwic2Vla0NoaWxkIiwiaW1hZ2VfYmdfc3AiLCJTcHJpdGUiLCJ0aXRsZV90eHRfbGIiLCJMYWJlbCIsImJ1eV9idG4iLCJCdXR0b24iLCJidXlfYnRuX2xiIiwibm9kZSIsImdpZnRfZGVzY19ydCIsIlJpY2hUZXh0IiwibGVmdF9udW1fbGIiLCJnb29kX2xpc3RfbmQiLCJ0YWJfc2l6ZSIsImdldENvbnRlbnRTaXplIiwic2V0dGluZyIsIml0ZW1fY2xhc3MiLCJzdGFydF94Iiwic3BhY2VfeCIsInN0YXJ0X3kiLCJzcGFjZV95IiwiaXRlbV93aWR0aCIsIkJhY2tQYWNrSXRlbSIsIldpZHRoIiwiaXRlbV9oZWlnaHQiLCJyb3ciLCJjb2wiLCJzY2FsZSIsIml0ZW1fc2Nyb2xsdmlldyIsImNyZWF0ZVNjcm9sbCIsInYyIiwiU2Nyb2xsVmlld0RpciIsImhvcml6b250YWwiLCJTY3JvbGxWaWV3U3RhcnRQb3MiLCJ0b3AiLCJyZWdpc3RlckV2ZW50IiwiVXRpbHMiLCJvblRvdWNoRW5kIiwiX29uQ2xpY2tCdXlCdG4iLCJiaW5kIiwiZ2lmdF9jb25maWciLCJsaW1pdF92aXAiLCJ2aXBfbGV2IiwiY2hhcmdlX2lkIiwiY2hhcmdlX2NvbmZpZyIsImdkYXRhIiwiU0RLIiwicGF5IiwidmFsIiwiaWQiLCJuYW1lIiwibWVzc2FnZSIsImpzIiwiZm9ybWF0U3RyIiwiVEkxOE4iLCJzZXREYXRhIiwiZGF0YSIsInJvb3Rfd25kIiwib25TaG93IiwiZ2lmdF9iaWQiLCJidXlfY291bnQiLCJnZXREYWlseUdpZnRCdXlDb3VudEJ5SWQiLCJnaWZ0X3JlcyIsImdldEJpZ0JnIiwiYmdfcmVzIiwibG9hZFJlcyIsInNmX29iaiIsInNwcml0ZUZyYW1lIiwic3RyaW5nIiwibGltaXRfY291bnQiLCJzZXRHcmV5QnV0dG9uIiwiY29sb3IiLCJDb2xvciIsImRlc2MiLCJTdHJpbmdVdGlsIiwicGFyc2UiLCJyZXNfc3RyIiwic3RyXyIsImdldEl0ZW1SZXMiLCJyZXNPYmplY3QiLCJhZGRTcHJpdGVGcmFtZSIsImdpZnRfYXdhcmRfY2ZnIiwiYXdhcmRfZGF0YSIsImsiLCJ2IiwibWluIiwibGV2IiwibWF4IiwiZGVlcENvcHkiLCJyZXdhcmQiLCJpdGVtX2xpc3QiLCJ2byIsImdldEl0ZW1Db25maWciLCJudW0iLCJiaWQiLCJxdWFudGl0eSIsInB1c2giLCJpc19zaG93X2RvdWJsZSIsImlzX2RvdWJsZSIsImFkZEVuZENhbGxCYWNrIiwibGlzdCIsImdldEl0ZW1MaXN0IiwibGVuZ3RoIiwiaXRlbV9jZmciLCJnZXREYXRhIiwic2V0RG91YmxlSWNvbiIsInNldERlZmF1bHRUaXAiLCJvbkhpZGUiLCJvbkRlbGV0ZSIsImRlbGV0ZU1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUlBLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBQ0EsSUFBSUMsZ0JBQWdCLEdBQUdELE9BQU8sQ0FBQyxtQkFBRCxDQUE5Qjs7QUFDQSxJQUFJRSxhQUFhLEdBQUdGLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFDQSxJQUFJRyxjQUFjLEdBQUdILE9BQU8sQ0FBQyxpQkFBRCxDQUE1Qjs7QUFF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RSxJQWhCa0MsQ0FnQjdCLElBaEI2QixDQUFwQztBQWlCSDtBQUNKLEdBN0orQjtBQStKaEM7QUFDQW9FLEVBQUFBLE1BQU0sRUFBRSxrQkFBWSxDQUVuQixDQWxLK0I7QUFvS2hDO0FBQ0FDLEVBQUFBLFFBQVEsRUFBRSxvQkFBWTtBQUNsQixRQUFJLEtBQUtoRixlQUFULEVBQTBCO0FBQ3RCLFdBQUtBLGVBQUwsQ0FBcUJpRixRQUFyQjtBQUNBLFdBQUtqRixlQUFMLEdBQXVCLElBQXZCO0FBQ0g7QUFFSjtBQTNLK0IsQ0FBVCxDQUEzQiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBhdXRob3I6IHh4eEBzeWcuY29tKOW/heWhqywg5Yib5bu65qih5Z2X55qE5Lq65ZGYKVxuLy8gQGRlc2NyaXB0aW9uOlxuLy8gICAgIOi/memHjOaYr+aPj+i/sOi/meS4queql+S9k+eahOS9nOeUqOeahFxuLy8gPGJyLz5DcmVhdGU6IDIwMTktMDMtMDIgMTE6MzY6NTZcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG52YXIgUGF0aFRvb2wgPSByZXF1aXJlKFwicGF0aHRvb2xcIik7XG52YXIgQ29tbW9uU2Nyb2xsVmlldyA9IHJlcXVpcmUoXCJjb21tb25fc2Nyb2xsdmlld1wiKTtcbnZhciBWaXBDb250cm9sbGVyID0gcmVxdWlyZShcInZpcF9jb250cm9sbGVyXCIpO1xudmFyIFJvbGVDb250cm9sbGVyID0gcmVxdWlyZShcInJvbGVfY29udHJvbGxlclwiKTtcblxudmFyIERhaWx5X2dpZnRfaXRlbVBhbmVsID0gY2MuQ2xhc3Moe1xuICAgIGV4dGVuZHM6IEJhc2VQYW5lbCxcbiAgICBjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucHJlZmFiUGF0aCA9IFBhdGhUb29sLmdldFByZWZhYlBhdGgoXCJ2aXBcIiwgXCJkYWlseV9naWZ0X2l0ZW1cIik7XG4gICAgfSxcblxuICAgIC8vIOWPr+S7peWIneWni+WMluWjsOaYjuS4gOS6m+WPmOmHj+eahFxuICAgIGluaXRDb25maWc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5jdHJsID0gVmlwQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpO1xuICAgICAgICB0aGlzLm1vZGVsID0gdGhpcy5jdHJsLmdldE1vZGVsKCk7XG4gICAgICAgIHRoaXMucm9sZV92byA9IFJvbGVDb250cm9sbGVyLmdldEluc3RhbmNlKCkuZ2V0Um9sZVZvKCk7XG4gICAgICAgIHRoaXMubGltaXRfbnVtID0gMDtcbiAgICB9LFxuXG4gICAgLy8g5Yid5aeL5YyW5LiA5Lqb6YWN572u5pWw5o2uLOWPr+S7peeUqOS6juWjsOaYjuS4gOS6m+WPmOmHj+S5i+exu+eahFxuICAgIGluaXRQYW5lbDogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmNvbnRhaW5lcl9uZCA9IHRoaXMuc2Vla0NoaWxkKFwiY29udGFpbmVyXCIpO1xuICAgICAgICB0aGlzLmltYWdlX2JnX3NwID0gdGhpcy5zZWVrQ2hpbGQoXCJpbWFnZV9iZ1wiLCBjYy5TcHJpdGUpO1xuICAgICAgICB0aGlzLnRpdGxlX3R4dF9sYiA9IHRoaXMuc2Vla0NoaWxkKFwidGl0bGVfdHh0XCIsIGNjLkxhYmVsKTtcbiAgICAgICAgdGhpcy5idXlfYnRuID0gdGhpcy5zZWVrQ2hpbGQoXCJidXlfYnRuXCIsIGNjLkJ1dHRvbik7XG4gICAgICAgIHRoaXMuYnV5X2J0bl9sYiA9IHRoaXMuc2Vla0NoaWxkKHRoaXMuYnV5X2J0bi5ub2RlLCBcIkxhYmVsXCIsIGNjLkxhYmVsKTtcbiAgICAgICAgdGhpcy5naWZ0X2Rlc2NfcnQgPSB0aGlzLnNlZWtDaGlsZChcImdpZnRfZGVzY190eHRcIiwgY2MuUmljaFRleHQpO1xuXG4gICAgICAgIHRoaXMubGVmdF9udW1fbGIgPSB0aGlzLnNlZWtDaGlsZChcImxlZnRfbnVtXCIsIGNjLkxhYmVsKTtcblxuICAgICAgICB2YXIgZ29vZF9saXN0X25kID0gdGhpcy5zZWVrQ2hpbGQoXCJnb29kX2xpc3RcIik7XG4gICAgICAgIHZhciB0YWJfc2l6ZSA9IGdvb2RfbGlzdF9uZC5nZXRDb250ZW50U2l6ZSgpO1xuICAgICAgICB2YXIgc2V0dGluZyA9IHtcbiAgICAgICAgICAgIGl0ZW1fY2xhc3M6IFwiYmFja3BhY2tfaXRlbVwiLCAgICAgIC8vIOWNleWFg+exu1xuICAgICAgICAgICAgc3RhcnRfeDogMCwgICAgICAgICAgICAgICAgICAgIC8vIOesrOS4gOS4quWNleWFg+eahFjotbfngrlcbiAgICAgICAgICAgIHNwYWNlX3g6IDI1LCAgICAgICAgICAgICAgICAgICAgLy8geOaWueWQkeeahOmXtOmalFxuICAgICAgICAgICAgc3RhcnRfeTogMCwgICAgICAgICAgICAgICAgICAgIC8vIOesrOS4gOS4quWNleWFg+eahFnotbfngrlcbiAgICAgICAgICAgIHNwYWNlX3k6IDAsICAgICAgICAgICAgICAgICAgIC8vIHnmlrnlkJHnmoTpl7TpmpRcbiAgICAgICAgICAgIGl0ZW1fd2lkdGg6IEJhY2tQYWNrSXRlbS5XaWR0aCAqIDAuNywgICAgICAgICAgICAgICAvLyDljZXlhYPnmoTlsLrlr7h3aWR0aFxuICAgICAgICAgICAgaXRlbV9oZWlnaHQ6IEJhY2tQYWNrSXRlbS5XaWR0aCAqIDAuNywgICAgICAgICAgICAgIC8vIOWNleWFg+eahOWwuuWvuGhlaWdodFxuICAgICAgICAgICAgcm93OiAxLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIOihjOaVsO+8jOS9nOeUqOS6juawtOW5s+a7muWKqOexu+Wei1xuICAgICAgICAgICAgY29sOiAxLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWIl+aVsO+8jOS9nOeUqOS6juWeguebtOa7muWKqOexu+Wei1xuICAgICAgICAgICAgLy8gbmVlZF9keW5hbWljOiB0cnVlXG4gICAgICAgICAgICBzY2FsZTogMC43XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pdGVtX3Njcm9sbHZpZXcgPSBuZXcgQ29tbW9uU2Nyb2xsVmlldygpO1xuICAgICAgICB0aGlzLml0ZW1fc2Nyb2xsdmlldy5jcmVhdGVTY3JvbGwoZ29vZF9saXN0X25kLCBjYy52MigwLCAwKSwgU2Nyb2xsVmlld0Rpci5ob3Jpem9udGFsLCBTY3JvbGxWaWV3U3RhcnRQb3MudG9wLCB0YWJfc2l6ZSwgc2V0dGluZywgY2MudjIoMC41LCAwLjUpKVxuICAgIH0sXG5cbiAgICAvLyDms6jlhozkuovku7bnm5HlkKznmoTmjqXlj6Ms5LiN6ZyA6KaB5omL5Yqo6LCD55SoLOWmguaenOaYr+S9v+eUqGdjb3JlLkdsb2JhbEV2ZW5055uR5ZCsLOWPr+S7peebtOaOpeiwg+eUqGFkZEdsb2JhbEV2ZW50XG4gICAgcmVnaXN0ZXJFdmVudDogZnVuY3Rpb24gKCkge1xuICAgICAgICBVdGlscy5vblRvdWNoRW5kKHRoaXMuYnV5X2J0bi5ub2RlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5saW1pdF9udW0gPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25DbGlja0J1eUJ0bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LmJpbmQodGhpcyksIDEpXG4gICAgfSxcblxuICAgIC8v54K55Ye76LSt5LmwXG4gICAgX29uQ2xpY2tCdXlCdG46IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ2lmdF9jb25maWcpIHtcbiAgICAgICAgICAgIHZhciBsaW1pdF92aXAgPSB0aGlzLmdpZnRfY29uZmlnLmxpbWl0X3ZpcDtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvbGVfdm8udmlwX2xldiA+PSBsaW1pdF92aXApIHtcbiAgICAgICAgICAgICAgICB2YXIgY2hhcmdlX2lkID0gdGhpcy5naWZ0X2NvbmZpZy5jaGFyZ2VfaWQ7XG4gICAgICAgICAgICAgICAgdmFyIGNoYXJnZV9jb25maWcgPSBnZGF0YShcImNoYXJnZV9kYXRhXCIsIFwiZGF0YV9jaGFyZ2VfZGF0YVwiLCBbY2hhcmdlX2lkIHx8IDBdKTtcbiAgICAgICAgICAgICAgICBpZiAoY2hhcmdlX2NvbmZpZykge1xuICAgICAgICAgICAgICAgICAgICBTREsucGF5KGNoYXJnZV9jb25maWcudmFsLCBudWxsLCBjaGFyZ2VfY29uZmlnLmlkLCBjaGFyZ2VfY29uZmlnLm5hbWUsIGNoYXJnZV9jb25maWcubmFtZSwgbnVsbCwgbnVsbClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2UoY2MuanMuZm9ybWF0U3RyKFV0aWxzLlRJMThOKFwiVklQJWTlj6/otK3kubBcIiksIGxpbWl0X3ZpcCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIHNldERhdGE6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gICAgICAgIGlmICh0aGlzLnJvb3Rfd25kKVxuICAgICAgICAgICAgdGhpcy5vblNob3coKTtcbiAgICB9LFxuXG4gICAgLy8g6aKE5Yi25L2T5Yqg6L295a6M5oiQ5LmL5ZCOLOa3u+WKoOWIsOWvueW6lOS4u+iKgueCueS5i+WQjueahOWbnuiwg+WPr+S7peiuvue9ruS4gOS6m+aVsOaNruS6hlxuICAgIG9uU2hvdzogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5kYXRhID09IG51bGwpIHJldHVyblxuICAgICAgICB0aGlzLmdpZnRfY29uZmlnID0gdGhpcy5kYXRhO1xuICAgICAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YTtcbiAgICAgICAgdmFyIGdpZnRfYmlkID0gZGF0YS5pZDtcbiAgICAgICAgdmFyIGJ1eV9jb3VudCA9IHRoaXMubW9kZWwuZ2V0RGFpbHlHaWZ0QnV5Q291bnRCeUlkKGdpZnRfYmlkKTtcbiAgICAgICAgdmFyIGdpZnRfcmVzID0gUGF0aFRvb2wuZ2V0QmlnQmcodGhpcy5naWZ0X2NvbmZpZy5iZ19yZXMpO1xuICAgICAgICB0aGlzLmxvYWRSZXMoZ2lmdF9yZXMsIGZ1bmN0aW9uIChzZl9vYmopIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VfYmdfc3Auc3ByaXRlRnJhbWUgPSBzZl9vYmo7XG4gICAgICAgIH0uYmluZCh0aGlzKSlcblxuICAgICAgICB0aGlzLnRpdGxlX3R4dF9sYi5zdHJpbmcgPSB0aGlzLmdpZnRfY29uZmlnLm5hbWUgfHwgXCJcIjtcblxuICAgICAgICBpZiAodGhpcy5naWZ0X2NvbmZpZy5saW1pdF9jb3VudCA8PSBidXlfY291bnQpIHtcbiAgICAgICAgICAgIFV0aWxzLnNldEdyZXlCdXR0b24odGhpcy5idXlfYnRuLCB0cnVlKVxuICAgICAgICAgICAgdGhpcy5idXlfYnRuX2xiLnN0cmluZyA9IFV0aWxzLlRJMThOKFwi5LuK5pel5bey6LStXCIpO1xuICAgICAgICAgICAgdGhpcy5idXlfYnRuX2xiLm5vZGUuY29sb3IgPSBuZXcgY2MuQ29sb3IoMjU1LCAyNTUsIDI1NSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBVdGlscy5zZXRHcmV5QnV0dG9uKHRoaXMuYnV5X2J0biwgZmFsc2UpXG4gICAgICAgICAgICB0aGlzLmJ1eV9idG5fbGIuc3RyaW5nID0gY2MuanMuZm9ybWF0U3RyKFV0aWxzLlRJMThOKFwiJWTlhYNcIiksIHRoaXMuZ2lmdF9jb25maWcudmFsIHx8IDApO1xuICAgICAgICAgICAgdGhpcy5idXlfYnRuX2xiLm5vZGUuY29sb3IgPSBuZXcgY2MuQ29sb3IoMTEzLCA0MCwgNCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxlZnRfbnVtX2xiLnN0cmluZyA9IGNjLmpzLmZvcm1hdFN0cihVdGlscy5USTE4TihcIumZkOi0rTolZOasoVwiKSwgdGhpcy5naWZ0X2NvbmZpZy5saW1pdF9jb3VudCAtIGJ1eV9jb3VudCk7XG4gICAgICAgIHRoaXMubGltaXRfbnVtID0gdGhpcy5naWZ0X2NvbmZpZy5saW1pdF9jb3VudCAtIGJ1eV9jb3VudFxuXG4gICAgICAgIC8v5o+P6L+w5YaF5a65XG4gICAgICAgIHZhciBkZXNjID0gU3RyaW5nVXRpbC5wYXJzZSh0aGlzLmdpZnRfY29uZmlnLmRlc2MpXG4gICAgICAgIHZhciByZXNfc3RyID0gY2MuanMuZm9ybWF0U3RyKFwiPGltZyBzcmM9JyVzJyAvPjwvaW1nPlwiLCAzKVxuICAgICAgICB2YXIgc3RyXyA9IGNjLmpzLmZvcm1hdFN0cihkZXNjLCByZXNfc3RyLCByZXNfc3RyKTtcbiAgICAgICAgdGhpcy5naWZ0X2Rlc2NfcnQuc3RyaW5nID0gc3RyX1xuXG4gICAgICAgIHRoaXMubG9hZFJlcyhQYXRoVG9vbC5nZXRJdGVtUmVzKDMpLCAoZnVuY3Rpb24gKHJlc09iamVjdCkge1xuICAgICAgICAgICAgdGhpcy5naWZ0X2Rlc2NfcnQuYWRkU3ByaXRlRnJhbWUocmVzT2JqZWN0KTtcbiAgICAgICAgfSkuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgLy/lpZblirHnianlk4FcbiAgICAgICAgdmFyIGdpZnRfYXdhcmRfY2ZnID0gZ2RhdGEoXCJjaGFyZ2VfZGF0YVwiLCBcImRhdGFfZGFpbHlfZ2lmdF9hd2FyZFwiLCBbZ2lmdF9iaWRdKTtcbiAgICAgICAgaWYgKGdpZnRfYXdhcmRfY2ZnKSB7XG4gICAgICAgICAgICB2YXIgYXdhcmRfZGF0YSA9IHt9O1xuICAgICAgICAgICAgZm9yICh2YXIgayBpbiBnaWZ0X2F3YXJkX2NmZykge1xuICAgICAgICAgICAgICAgIHZhciB2ID0gZ2lmdF9hd2FyZF9jZmdba107XG4gICAgICAgICAgICAgICAgaWYgKHYubWluIDw9IHRoaXMucm9sZV92by5sZXYgJiYgdi5tYXggPj0gdGhpcy5yb2xlX3ZvLmxldikge1xuICAgICAgICAgICAgICAgICAgICBhd2FyZF9kYXRhID0gVXRpbHMuZGVlcENvcHkodi5yZXdhcmQpO1xuICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBpdGVtX2xpc3QgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGsgaW4gYXdhcmRfZGF0YSkge1xuICAgICAgICAgICAgICAgIHZhciB2ID0gYXdhcmRfZGF0YVtrXTtcbiAgICAgICAgICAgICAgICB2YXIgdm8gPSBVdGlscy5kZWVwQ29weShVdGlscy5nZXRJdGVtQ29uZmlnKHZbMF0pKTtcbiAgICAgICAgICAgICAgICBpZiAodm8pIHtcbiAgICAgICAgICAgICAgICAgICAgdm8ubnVtID0gdlsxXTtcbiAgICAgICAgICAgICAgICAgICAgdm8uYmlkID0gdlswXTtcbiAgICAgICAgICAgICAgICAgICAgdm8ucXVhbnRpdHkgPSB2WzFdO1xuICAgICAgICAgICAgICAgICAgICBpdGVtX2xpc3QucHVzaCh2byk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGlzX3Nob3dfZG91YmxlID0gZmFsc2VcbiAgICAgICAgICAgIGlmICh0aGlzLmdpZnRfY29uZmlnICYmIHRoaXMuZ2lmdF9jb25maWcuaXNfZG91YmxlICYmIHRoaXMuZ2lmdF9jb25maWcuaXNfZG91YmxlID09IDEpIHtcbiAgICAgICAgICAgICAgICBpc19zaG93X2RvdWJsZSA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaXRlbV9zY3JvbGx2aWV3LnNldERhdGEoaXRlbV9saXN0KTtcbiAgICAgICAgICAgIHRoaXMuaXRlbV9zY3JvbGx2aWV3LmFkZEVuZENhbGxCYWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IHRoaXMuaXRlbV9zY3JvbGx2aWV3LmdldEl0ZW1MaXN0KCk7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBsaXN0Lmxlbmd0aDsgKytrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc19zaG93X2RvdWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy/mmL7npLrlj4zlgI1cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtX2NmZyA9IGxpc3Rba10uZ2V0RGF0YSgpXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbV9jZmcgJiYgaXRlbV9jZmcuaWQgPT0gMykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Rba10uc2V0RG91YmxlSWNvbih0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0W2tdLnNldERvdWJsZUljb24oZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGxpc3Rba10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Rba10uc2V0RGVmYXVsdFRpcCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfS5iaW5kKHRoaXMpKVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8vIOmdouadv+iuvue9ruS4jeWPr+ingeeahOWbnuiwgyzov5nph4zlgZrkuIDkupvkuI3lj6/op4HnmoTlsY/olL3lpITnkIZcbiAgICBvbkhpZGU6IGZ1bmN0aW9uICgpIHtcblxuICAgIH0sXG5cbiAgICAvLyDlvZPpnaLmnb/ku47kuLvoioLngrnph4rmlL7mjonnmoTosIPnlKjmjqXlj6Ms6ZyA6KaB5omL5Yqo6LCD55SoLOiAjOS4lOS5n+S4gOWumuimgeiwg+eUqFxuICAgIG9uRGVsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLml0ZW1fc2Nyb2xsdmlldykge1xuICAgICAgICAgICAgdGhpcy5pdGVtX3Njcm9sbHZpZXcuZGVsZXRlTWUoKTtcbiAgICAgICAgICAgIHRoaXMuaXRlbV9zY3JvbGx2aWV3ID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgfSxcbn0pIl19
|