|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/mod/rank/view/rank_reward_window.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, '20a3fnCjSRE36pqctfvN54A', 'rank_reward_window');
|
// Scripts/mod/rank/view/rank_reward_window.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 这里是描述这个窗体的作用的
|
// <br/>Create: 2019-04-23 20:35:06
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var CommonScrollView = require("common_scrollview");
|
|
var RankRewardItem = require("rank_reward_item");
|
|
var ActionEvent = require("action_event");
|
|
var Rank_rewardWindow = cc.Class({
|
"extends": BaseView,
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("rank", "rank_reward_panel");
|
this.viewTag = SCENE_TAG.dialogue; //该窗体所属ui层级,全屏ui需要在ui层,非全屏ui在dialogue层,这个要注意
|
|
this.win_type = WinType.Big; //是否是全屏窗体 WinType.Full, WinType.Big, WinType.Mini, WinType.Tips
|
},
|
// 初始化一些配置数据,可以用于声明一些变量之类的
|
initConfig: function initConfig() {
|
this.ctrl = require("rank_controller").getInstance();
|
this.item_list = [];
|
},
|
// 预制体加载完成之后的回调,可以在这里捕获相关节点或者组件
|
openCallBack: function openCallBack() {
|
this.background = this.seekChild("background");
|
this.background.scale = FIT_SCALE;
|
this.main_container = this.seekChild("main_container");
|
this.rank_panel = this.seekChild("rank_panel");
|
this.my_rank_nd = this.seekChild("my_rank");
|
this.rank_index_lb = this.seekChild(this.my_rank_nd, "rank_id", cc.Label);
|
this.label_tips_lb = this.seekChild(this.my_rank_nd, "label_tips", cc.Label);
|
this.item_scrollview_nd = this.seekChild(this.my_rank_nd, "item_scrollview");
|
this.item_scrollview_size = this.item_scrollview_nd.getContentSize();
|
this.item_scrollview_sv = this.item_scrollview_nd.getComponent(cc.ScrollView);
|
this.item_content_nd = this.seekChild(this.item_scrollview_nd, "content");
|
},
|
// 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent
|
registerEvent: function registerEvent() {
|
Utils.onTouchEnd(this.background, function () {
|
this.ctrl.openRankRewardPanel(false);
|
}.bind(this), 2);
|
this.addGlobalEvent(ActionEvent.RANK_REWARD_LIST, function (data) {
|
if (!data) return;
|
this.cell_data_list = data.rank_award;
|
this.cell_data_list.sort(function (a, b) {
|
if (a.rank1 < b.rank2) {
|
return -1;
|
} else {
|
return 1;
|
}
|
});
|
|
if (this.cell_data_list == 0) {
|
this.showEmptyIcon();
|
} else {
|
this.updateRankList();
|
}
|
|
this.updateMyRankInfo(data.rank);
|
}, this);
|
},
|
// 预制体加载完成之后,添加到对应主节点之后的回调,也就是一个窗体的正式入口,可以设置一些数据了
|
openRootWnd: function openRootWnd(params) {
|
this.rank_reward_type = params || 1;
|
|
require("action_controller").getInstance().send16650(this.rank_reward_type);
|
},
|
//更新我的排行信息
|
updateMyRankInfo: function updateMyRankInfo(my_rank) {
|
if (!this.cell_data_list) return;
|
|
if (my_rank == null || my_rank == 0) {
|
this.rank_index_lb.string = "";
|
this.label_tips_lb.string = Utils.TI18N("未上榜");
|
return;
|
}
|
|
this.rank_index_lb.string = my_rank;
|
var cell_data = null;
|
|
for (var i in this.cell_data_list) {
|
var data = this.cell_data_list[i];
|
|
if (data.rank1 && data.rank2) {
|
if (my_rank >= data.rank1 && my_rank <= data.rank2) {
|
cell_data = data;
|
}
|
} else if (data.rank1) {
|
if (my_rank <= data.rank1) {
|
cell_data = data;
|
}
|
}
|
}
|
|
if (!cell_data) return;
|
var scale = 0.8;
|
var offsetX = 10;
|
var item_count = Utils.getArrLen(cell_data.award);
|
var item_width = BackPackItem.Width * scale;
|
var total_width = (item_width + offsetX) * item_count;
|
var max_width = Math.max(this.item_scrollview_size.width, total_width);
|
this.item_content_nd.setContentSize(max_width, this.item_scrollview_size.height);
|
this.item_content_nd.x = 0;
|
var index = 0;
|
|
for (var i in cell_data.award) {
|
var v = cell_data.award[i];
|
|
if (!this.item_list[i]) {
|
var item = ItemsPool.getInstance().getItem("backpack_item");
|
item.initConfig(false, scale, false, true);
|
item.show();
|
item.setParent(this.item_content_nd);
|
item.setData({
|
bid: v.bid,
|
num: v.num
|
});
|
item.setPosition(index * (item_width + offsetX) + 60, 0);
|
this.item_list[i] = item;
|
index = index + 1;
|
}
|
}
|
},
|
updateRankList: function updateRankList() {
|
if (this.common_scrollview) {
|
this.common_scrollview.setData(this.cell_data_list);
|
return;
|
}
|
|
var lay_scrollview = this.seekChild(this.main_container, "lay_scrollview");
|
var bgSize = lay_scrollview.getContentSize();
|
var tab_size = cc.size(bgSize.width, bgSize.height);
|
var setting = {
|
item_class: RankRewardItem,
|
// 单元类
|
start_x: 0,
|
// 第一个单元的X起点
|
space_x: 0,
|
// x方向的间隔
|
start_y: 0,
|
// 第一个单元的Y起点
|
space_y: 0,
|
// y方向的间隔
|
item_width: 634,
|
// 单元的尺寸width
|
item_height: 142,
|
// 单元的尺寸height
|
row: 0,
|
// 行数,作用于水平滚动类型
|
col: 1,
|
// 列数,作用于垂直滚动类型
|
need_dynamic: true
|
};
|
this.common_scrollview = new CommonScrollView();
|
this.common_scrollview.createScroll(lay_scrollview, cc.v2(0, 0), ScrollViewDir.vertical, ScrollViewStartPos.top, tab_size, setting, cc.v2(0.5, 0.5));
|
this.common_scrollview.setData(this.cell_data_list);
|
},
|
showEmptyIcon: function showEmptyIcon(bool) {
|
if (!this.empty_con && bool == false) return;
|
|
if (!this.empty_con) {
|
var size = cc.size(200, 200);
|
this.empty_con = new cc.Node();
|
this.empty_con.setContentSize(size);
|
this.empty_con.setAnchorPoint(cc.v2(0.5, 0.5));
|
this.empty_con.setPosition(cc.v2(0, 0));
|
this.main_panel.addChild(this.empty_con);
|
var res = PathTool.getBigBg("bigbg_3");
|
this.empty_bg = Utils.createImage(this.empty_con, null, 0, 0, cc.v2(0.5, 0.5), false);
|
this.loadRes(res, function (sf_obj) {
|
this.empty_bg.spriteFrame = sf_obj;
|
}.bind(this));
|
this.empty_label = Utils.createLabel(26, new cc.Color(0x68, 0x45, 0x2a, 0xff), null, 0, -100, "", this.empty_con, 0, cc.v2(0.5, 0.5));
|
}
|
|
var str = Utils.TI18N("暂无奖励数据");
|
this.empty_label.string = str;
|
this.empty_con.active = bool;
|
},
|
// 关闭窗体回调,需要在这里调用该窗体所属controller的close方法没用于置空该窗体实例对象
|
closeCallBack: function closeCallBack() {
|
if (this.common_scrollview) {
|
this.common_scrollview.deleteMe();
|
this.common_scrollview = null;
|
}
|
|
if (this.item_list) {
|
for (var k in this.item_list) {
|
this.item_list[k].deleteMe();
|
this.item_list[k] = null;
|
}
|
|
this.item_list = null;
|
}
|
|
if (this.empty_con) {
|
this.empty_con.destroy();
|
this.empty_label.destroy();
|
this.empty_bg.destroy();
|
this.empty_con = null;
|
this.empty_bg = null;
|
this.empty_label = null;
|
}
|
|
this.ctrl.openRankRewardPanel(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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxyYW5rXFx2aWV3XFxyYW5rX3Jld2FyZF93aW5kb3cuanMiXSwibmFtZXMiOlsiUGF0aFRvb2wiLCJyZXF1aXJlIiwiQ29tbW9uU2Nyb2xsVmlldyIsIlJhbmtSZXdhcmRJdGVtIiwiQWN0aW9uRXZlbnQiLCJSYW5rX3Jld2FyZFdpbmRvdyIsImNjIiwiQ2xhc3MiLCJCYXNlVmlldyIsImN0b3IiLCJwcmVmYWJQYXRoIiwiZ2V0UHJlZmFiUGF0aCIsInZpZXdUYWciLCJTQ0VORV9UQUciLCJkaWFsb2d1ZSIsIndpbl90eXBlIiwiV2luVHlwZSIsIkJpZyIsImluaXRDb25maWciLCJjdHJsIiwiZ2V0SW5zdGFuY2UiLCJpdGVtX2xpc3QiLCJvcGVuQ2FsbEJhY2siLCJiYWNrZ3JvdW5kIiwic2Vla0NoaWxkIiwic2NhbGUiLCJGSVRfU0NBTEUiLCJtYWluX2NvbnRhaW5lciIsInJhbmtfcGFuZWwiLCJteV9yYW5rX25kIiwicmFua19pbmRleF9sYiIsIkxhYmVsIiwibGFiZWxfdGlwc19sYiIsIml0ZW1fc2Nyb2xsdmlld19uZCIsIml0ZW1fc2Nyb2xsdmlld19zaXplIiwiZ2V0Q29udGVudFNpemUiLCJpdGVtX3Njcm9sbHZpZXdfc3YiLCJnZXRDb21wb25lbnQiLCJTY3JvbGxWaWV3IiwiaXRlbV9jb250ZW50X25kIiwicmVnaXN0ZXJFdmVudCIsIlV0aWxzIiwib25Ub3VjaEVuZCIsIm9wZW5SYW5rUmV3YXJkUGFuZWwiLCJiaW5kIiwiYWRkR2xvYmFsRXZlbnQiLCJSQU5LX1JFV0FSRF9MSVNUIiwiZGF0YSIsImNlbGxfZGF0YV9saXN0IiwicmFua19hd2FyZCIsInNvcnQiLCJhIiwiYiIsInJhbmsxIiwicmFuazIiLCJzaG93RW1wdHlJY29uIiwidXBkYXRlUmFua0xpc3QiLCJ1cGRhdGVNeVJhbmtJbmZvIiwicmFuayIsIm9wZW5Sb290V25kIiwicGFyYW1zIiwicmFua19yZXdhcmRfdHlwZSIsInNlbmQxNjY1MCIsIm15X3JhbmsiLCJzdHJpbmciLCJUSTE4TiIsImNlbGxfZGF0YSIsImkiLCJvZmZzZXRYIiwiaXRlbV9jb3VudCIsImdldEFyckxlbiIsImF3YXJkIiwiaXRlbV93aWR0aCIsIkJhY2tQYWNrSXRlbSIsIldpZHRoIiwidG90YWxfd2lkdGgiLCJtYXhfd2lkdGgiLCJNYXRoIiwibWF4Iiwid2lkdGgiLCJzZXRDb250ZW50U2l6ZSIsImhlaWdodCIsIngiLCJpbmRleCIsInYiLCJpdGVtIiwiSXRlbXNQb29sIiwiZ2V0SXRlbSIsInNob3ciLCJzZXRQYXJlbnQiLCJzZXREYXRhIiwiYmlkIiwibnVtIiwic2V0UG9zaXRpb24iLCJjb21tb25fc2Nyb2xsdmlldyIsImxheV9zY3JvbGx2aWV3IiwiYmdTaXplIiwidGFiX3NpemUiLCJzaXplIiwic2V0dGluZyIsIml0ZW1fY2xhc3MiLCJzdGFydF94Iiwic3BhY2VfeCIsInN0YXJ0X3kiLCJzcGFjZV95IiwiaXRlbV9oZWlnaHQiLCJyb3ciLCJjb2wiLCJuZWVkX2R5bmFtaWMiLCJjcmVhdGVTY3JvbGwiLCJ2MiIsIlNjcm9sbFZpZXdEaXIiLCJ2ZXJ0aWNhbCIsIlNjcm9sbFZpZXdTdGFydFBvcyIsInRvcCIsImJvb2wiLCJlbXB0eV9jb24iLCJOb2RlIiwic2V0QW5jaG9yUG9pbnQiLCJtYWluX3BhbmVsIiwiYWRkQ2hpbGQiLCJyZXMiLCJnZXRCaWdCZyIsImVtcHR5X2JnIiwiY3JlYXRlSW1hZ2UiLCJsb2FkUmVzIiwic2Zfb2JqIiwic3ByaXRlRnJhbWUiLCJlbXB0eV9sYWJlbCIsImNyZWF0ZUxhYmVsIiwiQ29sb3IiLCJzdHIiLCJhY3RpdmUiLCJjbG9zZUNhbGxCYWNrIiwiZGVsZXRlTWUiLCJrIiwiZGVzdHJveSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxVQUFELENBQXRCOztBQUNBLElBQUlDLGdCQUFnQixHQUFH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QUsrRCxXQUFMLENBQWlCaEUsTUFBakIsR0FBMEJtRSxHQUExQjtBQUNBLFNBQUtmLFNBQUwsQ0FBZWdCLE1BQWYsR0FBd0JqQixJQUF4QjtBQUNILEdBOUo0QjtBQWdLN0I7QUFDQWtCLEVBQUFBLGFBQWEsRUFBRSx5QkFBWTtBQUN2QixRQUFJLEtBQUt2QyxpQkFBVCxFQUE0QjtBQUN4QixXQUFLQSxpQkFBTCxDQUF1QndDLFFBQXZCO0FBQ0EsV0FBS3hDLGlCQUFMLEdBQXlCLElBQXpCO0FBQ0g7O0FBQ0QsUUFBSSxLQUFLekUsU0FBVCxFQUFvQjtBQUNoQixXQUFLLElBQUlrSCxDQUFULElBQWMsS0FBS2xILFNBQW5CLEVBQThCO0FBQzFCLGFBQUtBLFNBQUwsQ0FBZWtILENBQWYsRUFBa0JELFFBQWxCO0FBQ0EsYUFBS2pILFNBQUwsQ0FBZWtILENBQWYsSUFBb0IsSUFBcEI7QUFDSDs7QUFDRCxXQUFLbEgsU0FBTCxHQUFpQixJQUFqQjtBQUNIOztBQUNELFFBQUksS0FBSytGLFNBQVQsRUFBb0I7QUFDaEIsV0FBS0EsU0FBTCxDQUFlb0IsT0FBZjtBQUNBLFdBQUtSLFdBQUwsQ0FBaUJRLE9BQWpCO0FBQ0EsV0FBS2IsUUFBTCxDQUFjYSxPQUFkO0FBQ0EsV0FBS3BCLFNBQUwsR0FBaUIsSUFBakI7QUFDQSxXQUFLTyxRQUFMLEdBQWdCLElBQWhCO0FBQ0EsV0FBS0ssV0FBTCxHQUFtQixJQUFuQjtBQUNIOztBQUNELFNBQUs3RyxJQUFMLENBQVV3QixtQkFBVixDQUE4QixLQUE5QjtBQUNIO0FBdEw0QixDQUFULENBQXhCIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGF1dGhvcjogeHh4QHN5Zy5jb20o5b+F5aGrLCDliJvlu7rmqKHlnZfnmoTkurrlkZgpXG4vLyBAZGVzY3JpcHRpb246XG4vLyAgICAg6L+Z6YeM5piv5o+P6L+w6L+Z5Liq56qX5L2T55qE5L2c55So55qEXG4vLyA8YnIvPkNyZWF0ZTogMjAxOS0wNC0yMyAyMDozNTowNiBcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG52YXIgUGF0aFRvb2wgPSByZXF1aXJlKFwicGF0aHRvb2xcIik7XG52YXIgQ29tbW9uU2Nyb2xsVmlldyA9IHJlcXVpcmUoXCJjb21tb25fc2Nyb2xsdmlld1wiKTtcbnZhciBSYW5rUmV3YXJkSXRlbSA9IHJlcXVpcmUoXCJyYW5rX3Jld2FyZF9pdGVtXCIpO1xudmFyIEFjdGlvbkV2ZW50ID0gcmVxdWlyZShcImFjdGlvbl9ldmVudFwiKTtcblxudmFyIFJhbmtfcmV3YXJkV2luZG93ID0gY2MuQ2xhc3Moe1xuICAgIGV4dGVuZHM6IEJhc2VWaWV3LFxuICAgIGN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wcmVmYWJQYXRoID0gUGF0aFRvb2wuZ2V0UHJlZmFiUGF0aChcInJhbmtcIiwgXCJyYW5rX3Jld2FyZF9wYW5lbFwiKTtcbiAgICAgICAgdGhpcy52aWV3VGFnID0gU0NFTkVfVEFHLmRpYWxvZ3VlOyAgICAgICAgICAgICAgICAvL+ivpeeql+S9k+aJgOWxnnVp5bGC57qnLOWFqOWxj3Vp6ZyA6KaB5ZyodWnlsYIs6Z2e5YWo5bGPdWnlnKhkaWFsb2d1ZeWxgizov5nkuKropoHms6jmhI9cbiAgICAgICAgdGhpcy53aW5fdHlwZSA9IFdpblR5cGUuQmlnOyAgICAgICAgICAgICAgIC8v5piv5ZCm5piv5YWo5bGP56qX5L2TICBXaW5UeXBlLkZ1bGwsIFdpblR5cGUuQmlnLCBXaW5UeXBlLk1pbmksIFdpblR5cGUuVGlwc1xuICAgIH0sXG5cbiAgICAvLyDliJ3lp4vljJbkuIDkupvphY3nva7mlbDmja4s5Y+v5Lul55So5LqO5aOw5piO5LiA5Lqb5Y+Y6YeP5LmL57G755qEXG4gICAgaW5pdENvbmZpZzogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmN0cmwgPSByZXF1aXJlKFwicmFua19jb250cm9sbGVyXCIpLmdldEluc3RhbmNlKCk7XG4gICAgICAgIHRoaXMuaXRlbV9saXN0ID0gW107XG5cbiAgICB9LFxuXG4gICAgLy8g6aKE5Yi25L2T5Yqg6L295a6M5oiQ5LmL5ZCO55qE5Zue6LCDLOWPr+S7peWcqOi/memHjOaNleiOt+ebuOWFs+iKgueCueaIluiAhee7hOS7tlxuICAgIG9wZW5DYWxsQmFjazogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmJhY2tncm91bmQgPSB0aGlzLnNlZWtDaGlsZChcImJhY2tncm91bmRcIik7XG4gICAgICAgIHRoaXMuYmFja2dyb3VuZC5zY2FsZSA9IEZJVF9TQ0FMRTtcbiAgICAgICAgdGhpcy5tYWluX2NvbnRhaW5lciA9IHRoaXMuc2Vla0NoaWxkKFwibWFpbl9jb250YWluZXJcIik7XG4gICAgICAgIHRoaXMucmFua19wYW5lbCA9IHRoaXMuc2Vla0NoaWxkKFwicmFua19wYW5lbFwiKTtcbiAgICAgICAgdGhpcy5teV9yYW5rX25kID0gdGhpcy5zZWVrQ2hpbGQoXCJteV9yYW5rXCIpO1xuXG4gICAgICAgIHRoaXMucmFua19pbmRleF9sYiA9IHRoaXMuc2Vla0NoaWxkKHRoaXMubXlfcmFua19uZCwgXCJyYW5rX2lkXCIsIGNjLkxhYmVsKTtcbiAgICAgICAgdGhpcy5sYWJlbF90aXBzX2xiID0gdGhpcy5zZWVrQ2hpbGQodGhpcy5teV9yYW5rX25kLCBcImxhYmVsX3RpcHNcIiwgY2MuTGFiZWwpO1xuXG4gICAgICAgIHRoaXMuaXRlbV9zY3JvbGx2aWV3X25kID0gdGhpcy5zZWVrQ2hpbGQodGhpcy5teV9yYW5rX25kLCBcIml0ZW1fc2Nyb2xsdmlld1wiKTtcbiAgICAgICAgdGhpcy5pdGVtX3Njcm9sbHZpZXdfc2l6ZSA9IHRoaXMuaXRlbV9zY3JvbGx2aWV3X25kLmdldENvbnRlbnRTaXplKCk7XG4gICAgICAgIHRoaXMuaXRlbV9zY3JvbGx2aWV3X3N2ID0gdGhpcy5pdGVtX3Njcm9sbHZpZXdfbmQuZ2V0Q29tcG9uZW50KGNjLlNjcm9sbFZpZXcpO1xuICAgICAgICB0aGlzLml0ZW1fY29udGVudF9uZCA9IHRoaXMuc2Vla0NoaWxkKHRoaXMuaXRlbV9zY3JvbGx2aWV3X25kLCBcImNvbnRlbnRcIik7XG5cbiAgICB9LFxuXG4gICAgLy8g5rOo5YaM5LqL5Lu255uR5ZCs55qE5o6l5Y+jLOS4jemcgOimgeaJi+WKqOiwg+eUqCzlpoLmnpzmmK/kvb/nlKhnY29yZS5HbG9iYWxFdmVudOebkeWQrCzlj6/ku6Xnm7TmjqXosIPnlKhhZGRHbG9iYWxFdmVudFxuICAgIHJlZ2lzdGVyRXZlbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgVXRpbHMub25Ub3VjaEVuZCh0aGlzLmJhY2tncm91bmQsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuY3RybC5vcGVuUmFua1Jld2FyZFBhbmVsKGZhbHNlKVxuICAgICAgICB9LmJpbmQodGhpcyksIDIpXG5cbiAgICAgICAgdGhpcy5hZGRHbG9iYWxFdmVudChBY3Rpb25FdmVudC5SQU5LX1JFV0FSRF9MSVNULCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgaWYgKCFkYXRhKSByZXR1cm5cbiAgICAgICAgICAgIHRoaXMuY2VsbF9kYXRhX2xpc3QgPSBkYXRhLnJhbmtfYXdhcmQ7XG4gICAgICAgICAgICB0aGlzLmNlbGxfZGF0YV9saXN0LnNvcnQoZnVuY3Rpb24oYSxiKXtcbiAgICAgICAgICAgICAgICBpZihhLnJhbmsxIDwgYi5yYW5rMikgICB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBpZiAodGhpcy5jZWxsX2RhdGFfbGlzdCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93RW1wdHlJY29uKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUmFua0xpc3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudXBkYXRlTXlSYW5rSW5mbyhkYXRhLnJhbmspO1xuICAgICAgICB9LCB0aGlzKVxuICAgIH0sXG5cbiAgICAvLyDpooTliLbkvZPliqDovb3lrozmiJDkuYvlkI4s5re75Yqg5Yiw5a+55bqU5Li76IqC54K55LmL5ZCO55qE5Zue6LCDLOS5n+WwseaYr+S4gOS4queql+S9k+eahOato+W8j+WFpeWPoyzlj6/ku6Xorr7nva7kuIDkupvmlbDmja7kuoZcbiAgICBvcGVuUm9vdFduZDogZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICB0aGlzLnJhbmtfcmV3YXJkX3R5cGUgPSBwYXJhbXMgfHwgMTtcbiAgICAgICAgcmVxdWlyZShcImFjdGlvbl9jb250cm9sbGVyXCIpLmdldEluc3RhbmNlKCkuc2VuZDE2NjUwKHRoaXMucmFua19yZXdhcmRfdHlwZSlcbiAgICB9LFxuXG4gICAgLy/mm7TmlrDmiJHnmoTmjpLooYzkv6Hmga9cbiAgICB1cGRhdGVNeVJhbmtJbmZvOiBmdW5jdGlvbiAobXlfcmFuaykge1xuICAgICAgICBpZiAoIXRoaXMuY2VsbF9kYXRhX2xpc3QpIHJldHVyblxuICAgICAgICBpZiAobXlfcmFuayA9PSBudWxsIHx8IG15X3JhbmsgPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5yYW5rX2luZGV4X2xiLnN0cmluZyA9IFwiXCI7XG4gICAgICAgICAgICB0aGlzLmxhYmVsX3RpcHNfbGIuc3RyaW5nID0gVXRpbHMuVEkxOE4oXCLmnKrkuIrmppxcIik7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJhbmtfaW5kZXhfbGIuc3RyaW5nID0gbXlfcmFuaztcbiAgICAgICAgdmFyIGNlbGxfZGF0YSA9IG51bGw7XG4gICAgICAgIGZvciAodmFyIGkgaW4gdGhpcy5jZWxsX2RhdGFfbGlzdCkge1xuICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmNlbGxfZGF0YV9saXN0W2ldXG4gICAgICAgICAgICBpZiAoZGF0YS5yYW5rMSAmJiBkYXRhLnJhbmsyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG15X3JhbmsgPj0gZGF0YS5yYW5rMSAmJiBteV9yYW5rIDw9IGRhdGEucmFuazIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2VsbF9kYXRhID0gZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEucmFuazEpIHtcbiAgICAgICAgICAgICAgICBpZiAobXlfcmFuayA8PSBkYXRhLnJhbmsxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNlbGxfZGF0YSA9IGRhdGFcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjZWxsX2RhdGEpIHJldHVyblxuXG4gICAgICAgIHZhciBzY2FsZSA9IDAuODtcbiAgICAgICAgdmFyIG9mZnNldFggPSAxMDtcbiAgICAgICAgdmFyIGl0ZW1fY291bnQgPSBVdGlscy5nZXRBcnJMZW4oY2VsbF9kYXRhLmF3YXJkKTtcbiAgICAgICAgdmFyIGl0ZW1fd2lkdGggPSBCYWNrUGFja0l0ZW0uV2lkdGggKiBzY2FsZTtcbiAgICAgICAgdmFyIHRvdGFsX3dpZHRoID0gKGl0ZW1fd2lkdGggKyBvZmZzZXRYKSAqIGl0ZW1fY291bnQ7XG4gICAgICAgIHZhciBtYXhfd2lkdGggPSBNYXRoLm1heCh0aGlzLml0ZW1fc2Nyb2xsdmlld19zaXplLndpZHRoLCB0b3RhbF93aWR0aCk7XG4gICAgICAgIHRoaXMuaXRlbV9jb250ZW50X25kLnNldENvbnRlbnRTaXplKG1heF93aWR0aCwgdGhpcy5pdGVtX3Njcm9sbHZpZXdfc2l6ZS5oZWlnaHQpO1xuXG4gICAgICAgIHRoaXMuaXRlbV9jb250ZW50X25kLnggPSAwO1xuXG4gICAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgaW4gY2VsbF9kYXRhLmF3YXJkKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gY2VsbF9kYXRhLmF3YXJkW2ldO1xuICAgICAgICAgICAgaWYgKCF0aGlzLml0ZW1fbGlzdFtpXSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBJdGVtc1Bvb2wuZ2V0SW5zdGFuY2UoKS5nZXRJdGVtKFwiYmFja3BhY2tfaXRlbVwiKTtcbiAgICAgICAgICAgICAgICBpdGVtLmluaXRDb25maWcoZmFsc2UsIHNjYWxlLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgaXRlbS5zaG93KCk7XG4gICAgICAgICAgICAgICAgaXRlbS5zZXRQYXJlbnQodGhpcy5pdGVtX2NvbnRlbnRfbmQpO1xuICAgICAgICAgICAgICAgIGl0ZW0uc2V0RGF0YSh7IGJpZDogdi5iaWQsIG51bTogdi5udW0gfSk7XG4gICAgICAgICAgICAgICAgaXRlbS5zZXRQb3NpdGlvbihpbmRleCAqIChpdGVtX3dpZHRoICsgb2Zmc2V0WCkgKyA2MCwgMCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtX2xpc3RbaV0gPSBpdGVtO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gaW5kZXggKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIHVwZGF0ZVJhbmtMaXN0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbW1vbl9zY3JvbGx2aWV3KSB7XG4gICAgICAgICAgICB0aGlzLmNvbW1vbl9zY3JvbGx2aWV3LnNldERhdGEodGhpcy5jZWxsX2RhdGFfbGlzdClcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHZhciBsYXlfc2Nyb2xsdmlldyA9IHRoaXMuc2Vla0NoaWxkKHRoaXMubWFpbl9jb250YWluZXIsIFwibGF5X3Njcm9sbHZpZXdcIilcbiAgICAgICAgdmFyIGJnU2l6ZSA9IGxheV9zY3JvbGx2aWV3LmdldENvbnRlbnRTaXplKCk7XG4gICAgICAgIHZhciB0YWJfc2l6ZSA9IGNjLnNpemUoYmdTaXplLndpZHRoLCBiZ1NpemUuaGVpZ2h0KTtcbiAgICAgICAgdmFyIHNldHRpbmcgPSB7XG4gICAgICAgICAgICBpdGVtX2NsYXNzOiBSYW5rUmV3YXJkSXRlbSwgICAgICAvLyDljZXlhYPnsbtcbiAgICAgICAgICAgIHN0YXJ0X3g6IDAsICAgICAgICAgICAgICAgICAgICAvLyDnrKzkuIDkuKrljZXlhYPnmoRY6LW354K5XG4gICAgICAgICAgICBzcGFjZV94OiAwLCAgICAgICAgICAgICAgICAgICAgLy8geOaWueWQkeeahOmXtOmalFxuICAgICAgICAgICAgc3RhcnRfeTogMCwgICAgICAgICAgICAgICAgICAgIC8vIOesrOS4gOS4quWNleWFg+eahFnotbfngrlcbiAgICAgICAgICAgIHNwYWNlX3k6IDAsICAgICAgICAgICAgICAgICAgIC8vIHnmlrnlkJHnmoTpl7TpmpRcbiAgICAgICAgICAgIGl0ZW1fd2lkdGg6IDYzNCwgICAgICAgICAgICAgICAvLyDljZXlhYPnmoTlsLrlr7h3aWR0aFxuICAgICAgICAgICAgaXRlbV9oZWlnaHQ6IDE0MiwgICAgICAgICAgICAgIC8vIOWNleWFg+eahOWwuuWvuGhlaWdodFxuICAgICAgICAgICAgcm93OiAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIOihjOaVsO+8jOS9nOeUqOS6juawtOW5s+a7muWKqOexu+Wei1xuICAgICAgICAgICAgY29sOiAxLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWIl+aVsO+8jOS9nOeUqOS6juWeguebtOa7muWKqOexu+Wei1xuICAgICAgICAgICAgbmVlZF9keW5hbWljOiB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb21tb25fc2Nyb2xsdmlldyA9IG5ldyBDb21tb25TY3JvbGxWaWV3KClcbiAgICAgICAgdGhpcy5jb21tb25fc2Nyb2xsdmlldy5jcmVhdGVTY3JvbGwobGF5X3Njcm9sbHZpZXcsIGNjLnYyKDAsIDApLCBTY3JvbGxWaWV3RGlyLnZlcnRpY2FsLCBTY3JvbGxWaWV3U3RhcnRQb3MudG9wLCB0YWJfc2l6ZSwgc2V0dGluZywgY2MudjIoMC41LCAwLjUpKVxuICAgICAgICB0aGlzLmNvbW1vbl9zY3JvbGx2aWV3LnNldERhdGEodGhpcy5jZWxsX2RhdGFfbGlzdClcbiAgICB9LFxuXG4gICAgc2hvd0VtcHR5SWNvbjogZnVuY3Rpb24gKGJvb2wpIHtcbiAgICAgICAgaWYgKCF0aGlzLmVtcHR5X2NvbiAmJiBib29sID09IGZhbHNlKSByZXR1cm5cbiAgICAgICAgaWYgKCF0aGlzLmVtcHR5X2Nvbikge1xuICAgICAgICAgICAgdmFyIHNpemUgPSBjYy5zaXplKDIwMCwgMjAwKTtcbiAgICAgICAgICAgIHRoaXMuZW1wdHlfY29uID0gbmV3IGNjLk5vZGUoKTtcbiAgICAgICAgICAgIHRoaXMuZW1wdHlfY29uLnNldENvbnRlbnRTaXplKHNpemUpO1xuICAgICAgICAgICAgdGhpcy5lbXB0eV9jb24uc2V0QW5jaG9yUG9pbnQoY2MudjIoMC41LCAwLjUpKTtcbiAgICAgICAgICAgIHRoaXMuZW1wdHlfY29uLnNldFBvc2l0aW9uKGNjLnYyKDAsIDApKTtcbiAgICAgICAgICAgIHRoaXMubWFpbl9wYW5lbC5hZGRDaGlsZCh0aGlzLmVtcHR5X2Nvbik7XG4gICAgICAgICAgICB2YXIgcmVzID0gUGF0aFRvb2wuZ2V0QmlnQmcoXCJiaWdiZ18zXCIpO1xuICAgICAgICAgICAgdGhpcy5lbXB0eV9iZyA9IFV0aWxzLmNyZWF0ZUltYWdlKHRoaXMuZW1wdHlfY29uLCBudWxsLCAwLCAwLCBjYy52MigwLjUsIDAuNSksIGZhbHNlKVxuICAgICAgICAgICAgdGhpcy5sb2FkUmVzKHJlcywgZnVuY3Rpb24gKHNmX29iaikge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlfYmcuc3ByaXRlRnJhbWUgPSBzZl9vYmo7XG4gICAgICAgICAgICB9LmJpbmQodGhpcykpXG4gICAgICAgICAgICB0aGlzLmVtcHR5X2xhYmVsID0gVXRpbHMuY3JlYXRlTGFiZWwoMjYsIG5ldyBjYy5Db2xvcigweDY4LCAweDQ1LCAweDJhLCAweGZmKSwgbnVsbCwgMCwgLTEwMCwgXCJcIiwgdGhpcy5lbXB0eV9jb24sIDAsIGNjLnYyKDAuNSwgMC41KSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN0ciA9IFV0aWxzLlRJMThOKFwi5pqC5peg5aWW5Yqx5pWw5o2uXCIpO1xuICAgICAgICB0aGlzLmVtcHR5X2xhYmVsLnN0cmluZyA9IHN0cjtcbiAgICAgICAgdGhpcy5lbXB0eV9jb24uYWN0aXZlID0gYm9vbDtcbiAgICB9LFxuXG4gICAgLy8g5YWz6Zet56qX5L2T5Zue6LCDLOmcgOimgeWcqOi/memHjOiwg+eUqOivpeeql+S9k+aJgOWxnmNvbnRyb2xsZXLnmoRjbG9zZeaWueazleayoeeUqOS6jue9ruepuuivpeeql+S9k+WunuS+i+WvueixoVxuICAgIGNsb3NlQ2FsbEJhY2s6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29tbW9uX3Njcm9sbHZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuY29tbW9uX3Njcm9sbHZpZXcuZGVsZXRlTWUoKTtcbiAgICAgICAgICAgIHRoaXMuY29tbW9uX3Njcm9sbHZpZXcgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLml0ZW1fbGlzdCkge1xuICAgICAgICAgICAgZm9yICh2YXIgayBpbiB0aGlzLml0ZW1fbGlzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbV9saXN0W2tdLmRlbGV0ZU1lKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtX2xpc3Rba10gPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pdGVtX2xpc3QgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmVtcHR5X2Nvbikge1xuICAgICAgICAgICAgdGhpcy5lbXB0eV9jb24uZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5lbXB0eV9sYWJlbC5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLmVtcHR5X2JnLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuZW1wdHlfY29uID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZW1wdHlfYmcgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5lbXB0eV9sYWJlbCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdHJsLm9wZW5SYW5rUmV3YXJkUGFuZWwoZmFsc2UpXG4gICAgfSxcbn0pIl19
|