|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/mod/activity/view/activity_sign_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, 'fa662d7qhpEWLCKSJGaPb0N', 'activity_sign_window');
|
// Scripts/mod/activity/view/activity_sign_window.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 这里是描述这个窗体的作用的
|
// <br/>Create: 2019-05-06 14:34:01
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var MainuiController = require("mainui_controller");
|
|
var MainuiConst = require("mainui_const");
|
|
var ActivityConst = require("activity_const");
|
|
var Activity_signWindow = cc.Class({
|
"extends": BaseView,
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("activity", "activity_sign_window");
|
this.viewTag = SCENE_TAG.dialogue; //该窗体所属ui层级,全屏ui需要在ui层,非全屏ui在dialogue层,这个要注意
|
|
this.win_type = WinType.Tips; //是否是全屏窗体 WinType.Full, WinType.Big, WinType.Mini, WinType.Tips
|
|
this.ctrl = arguments[0];
|
this.model = this.ctrl.getModel();
|
},
|
// 初始化一些配置数据,可以用于声明一些变量之类的
|
initConfig: function initConfig() {
|
this.item_list = [];
|
},
|
// 预制体加载完成之后的回调,可以在这里捕获相关节点或者组件
|
openCallBack: function openCallBack() {
|
this.main_panel = this.root_wnd.getChildByName("main_panel");
|
this.background = this.root_wnd.getChildByName("background_panel");
|
this.background.scale = FIT_SCALE;
|
this.main_container = this.main_panel.getChildByName("main_container");
|
this.label = Utils.createRichLabel(24, new cc.Color(0x68, 0x45, 0x2a, 0xff), cc.v2(0, 0.5), cc.v2(-this.main_container.width / 2 + 30, -this.main_container.height / 2 + 60), 30, 500);
|
this.label.horizontalAlign = cc.macro.TextAlignment.LEFT;
|
this.main_container.addChild(this.label.node);
|
this.item_container = this.main_panel.getChildByName("item_container");
|
this.item_view = this.item_container.getChildByName("item_view");
|
this.item_content = this.item_view.getChildByName("content");
|
this.ok_btn = this.main_panel.getChildByName("ok_btn");
|
this.cancel_btn = this.main_panel.getChildByName("cancel_btn");
|
this.close_btn = this.main_panel.getChildByName("close_btn");
|
this.cancel_lab = this.cancel_btn.getChildByName("Label").getComponent(cc.Label);
|
this.ok_lab = this.ok_btn.getChildByName("Label").getComponent(cc.Label);
|
},
|
// 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent
|
registerEvent: function registerEvent() {
|
Utils.onTouchEnd(this.close_btn, function () {
|
this.ctrl.openSignView(false);
|
}.bind(this), 2);
|
Utils.onTouchEnd(this.cancel_btn, function () {
|
this.ctrl.openSignView(false);
|
}.bind(this), 2);
|
Utils.onTouchEnd(this.ok_btn, function () {
|
this.clickHandle();
|
this.ctrl.openSignView(false);
|
}.bind(this), 2);
|
},
|
// 预制体加载完成之后,添加到对应主节点之后的回调,也就是一个窗体的正式入口,可以设置一些数据了
|
openRootWnd: function openRootWnd(params) {
|
if (!params || params[0] == null) return;
|
var config = Config.activity_data.data_sign_info[params[0]];
|
if (!config) return;
|
this.id = params[0];
|
this.time = config.time;
|
this.label.string = config.desc;
|
this.createItemList(config.items);
|
this.cancel_lab.string = config.cancel;
|
this.ok_lab.string = config.ok;
|
|
if (params[1] && params[1].timer) {
|
this.setTimer(config);
|
}
|
},
|
createItemList: function createItemList(list) {
|
if (list == null || Utils.next(list) == null) return;
|
|
for (var i in this.item_list) {
|
this.item_list[i].suspendAllActions();
|
this.item_list[i].setVisible(false);
|
}
|
|
var item = null;
|
var scale = 0.8;
|
var off = 6;
|
var _x = 0;
|
var _y = 0;
|
var sum = list.length;
|
var item_conf = null;
|
var total_width = sum * 120 * scale + (sum - 1) * off;
|
var start_x = 0;
|
var index = 0;
|
var max_width = Math.max(this.item_view.getContentSize().width, total_width);
|
this.item_content.setContentSize(cc.size(max_width, this.item_view.getContentSize().height));
|
|
for (var i in list) {
|
var bid = list[i];
|
var num = 1;
|
item_conf = Utils.getItemConfig(bid);
|
|
if (item_conf) {
|
item = this.item_list[index];
|
|
if (item == null) {
|
var item = ItemsPool.getInstance().getItem("backpack_item");
|
|
if (this.item_view) {
|
item.setParent(this.item_content);
|
}
|
|
this.item_list.push(item);
|
item.initConfig(false, scale, false, true);
|
item.show();
|
}
|
|
_x = start_x + (120 * scale + off) * index + 120 * scale * 0.5;
|
item.setData({
|
bid: bid,
|
num: num
|
});
|
item.setPosition(_x, _y);
|
item.setVisible(true);
|
index = index + 1;
|
}
|
}
|
},
|
setTimer: function setTimer() {
|
var config = Config.activity_data.data_sign_info[this.id];
|
|
if (this.timer_id) {
|
gcore.Timer.del(this.timer_id);
|
}
|
|
this.timer_id = gcore.Timer.set(function () {
|
this.time = this.time - 1;
|
|
if (this.time == 0) {
|
this.ctrl.openSignView(false);
|
} else if (this.cancel_lab) {
|
this.cancel_lab.string = cc.js.formatStr("%s(%s)", config.cancel, this.time);
|
}
|
}.bind(this), 1000, this.time);
|
this.cancel_lab.string = cc.js.formatStr("%s(%s)", config.cancel, this.time);
|
},
|
clickHandle: function clickHandle() {
|
if (this.id == ActivityConst.ActivitySignType.arena_champion) {
|
MainuiController.getInstance().changeMainUIStatus(MainuiConst.btn_index.main_scene, MainuiConst.sub_type.champion_call);
|
} else if (this.id == ActivityConst.ActivitySignType.arena_champion_guess) {
|
MainuiController.getInstance().changeMainUIStatus(MainuiConst.btn_index.main_scene, MainuiConst.sub_type.champion_call);
|
} else if (this.id == ActivityConst.ActivitySignType.godbattle || this.id == ActivityConst.ActivitySignType.godbattle_sign) {// if(GodbattleController:getInstance():getModel():getApplyStatus() == GodBattleConstants.apply_status.un_apply){
|
// GodbattleController:getInstance():requestApplyGodBattle()
|
// }else{
|
// GodbattleController:getInstance():requestEnterGodBattle()
|
// }
|
}
|
},
|
// 关闭窗体回调,需要在这里调用该窗体所属controller的close方法没用于置空该窗体实例对象
|
closeCallBack: function closeCallBack() {
|
for (var i in this.item_list) {
|
this.item_list[i].deleteMe();
|
}
|
|
if (this.timer_id) {
|
gcore.Timer.del(this.timer_id);
|
}
|
|
this.item_list = 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxhY3Rpdml0eVxcdmlld1xcYWN0aXZpdHlfc2lnbl93aW5kb3cuanMiXSwibmFtZXMiOlsiUGF0aFRvb2wiLCJyZXF1aXJlIiwiTWFpbnVpQ29udHJvbGxlciIsIk1haW51aUNvbnN0IiwiQWN0aXZpdHlDb25zdCIsIkFjdGl2aXR5X3NpZ25XaW5kb3ciLCJjYyIsIkNsYXNzIiwiQmFzZVZpZXciLCJjdG9yIiwicHJlZmFiUGF0aCIsImdldFByZWZhYlBhdGgiLCJ2aWV3VGFnIiwiU0NFTkVfVEFHIiwiZGlhbG9ndWUiLCJ3aW5fdHlwZSIsIldpblR5cGUiLCJUaXBzIiwiY3RybCIsImFyZ3VtZW50cyIsIm1vZGVsIiwiZ2V0TW9kZWwiLCJpbml0Q29uZmlnIiwiaXRlbV9saXN0Iiwib3BlbkNhbGxCYWNrIiwibWFpbl9wYW5lbCIsInJvb3Rfd25kIiwiZ2V0Q2hpbGRCeU5hbWUiLCJiYWNrZ3JvdW5kIiwic2NhbGUiLCJGSVRfU0NBTEUiLCJtYWluX2NvbnRhaW5lciIsImxhYmVsIiwiVXRpbHMiLCJjcmVhdGVSaWNoTGFiZWwiLCJDb2xvciIsInYyIiwid2lkdGgiLCJoZWlnaHQiLCJob3Jpem9udGFsQWxpZ24iLCJtYWNybyIsIlRleHRBbGlnbm1lbnQiLCJMRUZUIiwiYWRkQ2hpbGQiLCJub2RlIiwiaXRlbV9jb250YWluZXIiLCJpdGVtX3ZpZXciLCJpdGVtX2NvbnRlbnQiLCJva19idG4iLCJjYW5jZWxfYnRuIiwiY2xvc2VfYnRuIiwiY2FuY2VsX2xhYiIsImdldENvbXBvbmVudCIsIkxhYmVsIiwib2tfbGFiIiwicmVnaXN0ZXJFdmVudCIsIm9uVG91Y2hFbmQiLCJvcGVuU2lnblZpZXciLCJiaW5kIiwiY2xpY2tIYW5kbGUiLCJvcGVuUm9vdFduZCIsInBhcmFtcyIsImNvbmZpZyIsIkNvbmZpZyIsImFjdGl2aXR5X2RhdGEiLCJkYXRhX3NpZ25faW5mbyIsImlkIiwidGltZSIsInN0cmluZyIsImRlc2MiLCJjcmVhdGVJdGVtTGlzdCIsIml0ZW1zIiwiY2FuY2VsIiwib2siLCJ0aW1lciIsInNldFRpbWVyIiwibGlzdCIsIm5leHQiLCJpIiwic3VzcGVuZEFsbEFjdGlvbnMiLCJzZXRWaXNpYmxlIiwiaXRlbSIsIm9mZiIsIl94IiwiX3kiLCJzdW0iLCJsZW5ndGgiLCJpdGVtX2NvbmYiLCJ0b3RhbF93aWR0aCIsInN0YXJ0X3giLCJpbmRleCIsIm1heF93aWR0aCIsIk1hdGgiLCJtYXgiLCJnZXRDb250ZW50U2l6ZSIsInNldENvbnRlbnRTaXplIiwic2l6ZSIsImJpZCIsIm51bSIsImdldEl0ZW1Db25maWciLCJJdGVtc1Bvb2wiLCJnZXRJbnN0YW5jZSIsImdldEl0ZW0iLCJzZXRQYXJlbnQiLCJwdXNoIiwic2hvdyIsInNldERhdGEiLCJzZXRQb3NpdGlvbiIsInRpbWVyX2lkIiwiZ2NvcmUiLCJUaW1lciIsImRlbCIsInNldCIsImpzIiwiZm9ybWF0U3RyIiwiQWN0aXZpdHlTaWduVHlwZSIsImFyZW5hX2NoYW1waW9uIiwiY2hhbmdlTWFpblVJU3RhdHVzIiwiYnRuX2luZGV4IiwibWFpbl9zY2VuZSIsInN1Yl90eXBlIiwiY2hhbXBpb25fY2FsbCIsImFyZW5hX2NoYW1waW9uX2d1ZXNzIiwiZ29kYmF0dGxlIiwiZ29kYmF0dGxlX3NpZ24iLCJjbG9zZUNhbGxCYWNrIiwiZGVsZXRlTWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxnQkFBZ0IsR0FBR0QsT0FBTyxDQUFDLG1CQUFELENBQTlCOztBQUNBLElBQUlFLFdBQVcsR0FBR0YsT0FBTyxDQUFDLGNBQUQsQ0FBekI7O0FBQ0EsSUFBSUcsYUFBYSxHQUFHSCxPQUFPLENBQUMsZ0JBQUQsQ0FBM0I7O0FBRUEsSUFBSUksbUJBQW1CLEdBQUdDLEVBQUUsQ0FBQ0MsS0FBSCxDQUFT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aUIsSUFBakI7QUFDSDtBQTVKOEIsQ0FBVCxDQUExQiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBhdXRob3I6IHh4eEBzeWcuY29tKOW/heWhqywg5Yib5bu65qih5Z2X55qE5Lq65ZGYKVxuLy8gQGRlc2NyaXB0aW9uOlxuLy8gICAgIOi/memHjOaYr+aPj+i/sOi/meS4queql+S9k+eahOS9nOeUqOeahFxuLy8gPGJyLz5DcmVhdGU6IDIwMTktMDUtMDYgMTQ6MzQ6MDFcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG52YXIgUGF0aFRvb2wgPSByZXF1aXJlKFwicGF0aHRvb2xcIik7XG52YXIgTWFpbnVpQ29udHJvbGxlciA9IHJlcXVpcmUoXCJtYWludWlfY29udHJvbGxlclwiKVxudmFyIE1haW51aUNvbnN0ID0gcmVxdWlyZShcIm1haW51aV9jb25zdFwiKTtcbnZhciBBY3Rpdml0eUNvbnN0ID0gcmVxdWlyZShcImFjdGl2aXR5X2NvbnN0XCIpO1xuXG52YXIgQWN0aXZpdHlfc2lnbldpbmRvdyA9IGNjLkNsYXNzKHtcbiAgICBleHRlbmRzOiBCYXNlVmlldyxcbiAgICBjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucHJlZmFiUGF0aCA9IFBhdGhUb29sLmdldFByZWZhYlBhdGgoXCJhY3Rpdml0eVwiLCBcImFjdGl2aXR5X3NpZ25fd2luZG93XCIpO1xuICAgICAgICB0aGlzLnZpZXdUYWcgPSBTQ0VORV9UQUcuZGlhbG9ndWU7ICAgICAgICAgICAgICAgIC8v6K+l56qX5L2T5omA5bGedWnlsYLnuqcs5YWo5bGPdWnpnIDopoHlnKh1aeWxgizpnZ7lhajlsY91aeWcqGRpYWxvZ3Vl5bGCLOi/meS4quimgeazqOaEj1xuICAgICAgICB0aGlzLndpbl90eXBlID0gV2luVHlwZS5UaXBzOyAgICAgICAgICAgICAgIC8v5piv5ZCm5piv5YWo5bGP56qX5L2TICBXaW5UeXBlLkZ1bGwsIFdpblR5cGUuQmlnLCBXaW5UeXBlLk1pbmksIFdpblR5cGUuVGlwc1xuICAgICAgICB0aGlzLmN0cmwgPSBhcmd1bWVudHNbMF07XG4gICAgICAgIHRoaXMubW9kZWwgPSB0aGlzLmN0cmwuZ2V0TW9kZWwoKTtcbiAgICB9LFxuXG4gICAgLy8g5Yid5aeL5YyW5LiA5Lqb6YWN572u5pWw5o2uLOWPr+S7peeUqOS6juWjsOaYjuS4gOS6m+WPmOmHj+S5i+exu+eahFxuICAgIGluaXRDb25maWc6ZnVuY3Rpb24oKXtcbiAgICAgICAgdGhpcy5pdGVtX2xpc3QgPSBbXTtcbiAgICB9LFxuXG4gICAgLy8g6aKE5Yi25L2T5Yqg6L295a6M5oiQ5LmL5ZCO55qE5Zue6LCDLOWPr+S7peWcqOi/memHjOaNleiOt+ebuOWFs+iKgueCueaIluiAhee7hOS7tlxuICAgIG9wZW5DYWxsQmFjazpmdW5jdGlvbigpe1xuICAgICAgICB0aGlzLm1haW5fcGFuZWwgPSB0aGlzLnJvb3Rfd25kLmdldENoaWxkQnlOYW1lKFwibWFpbl9wYW5lbFwiKTtcblxuICAgICAgICB0aGlzLmJhY2tncm91bmQgPSB0aGlzLnJvb3Rfd25kLmdldENoaWxkQnlOYW1lKFwiYmFja2dyb3VuZF9wYW5lbFwiKTtcbiAgICAgICAgdGhpcy5iYWNrZ3JvdW5kLnNjYWxlID0gRklUX1NDQUxFO1xuICAgICAgICB0aGlzLm1haW5fY29udGFpbmVyID0gdGhpcy5tYWluX3BhbmVsLmdldENoaWxkQnlOYW1lKFwibWFpbl9jb250YWluZXJcIik7XG4gICAgICAgIFxuICAgICAgICB0aGlzLmxhYmVsID0gVXRpbHMuY3JlYXRlUmljaExhYmVsKDI0LCBuZXcgY2MuQ29sb3IoMHg2OCwweDQ1LDB4MmEsIDB4ZmYpLCBjYy52MigwLCAwLjUpLCBjYy52MigtdGhpcy5tYWluX2NvbnRhaW5lci53aWR0aC8yKzMwLC10aGlzLm1haW5fY29udGFpbmVyLmhlaWdodC8yKzYwKSwzMCw1MDApO1xuICAgICAgICB0aGlzLmxhYmVsLmhvcml6b250YWxBbGlnbiA9IGNjLm1hY3JvLlRleHRBbGlnbm1lbnQuTEVGVDtcbiAgICAgICAgdGhpcy5tYWluX2NvbnRhaW5lci5hZGRDaGlsZCh0aGlzLmxhYmVsLm5vZGUpO1xuICAgIFxuICAgICAgICB0aGlzLml0ZW1fY29udGFpbmVyID0gdGhpcy5tYWluX3BhbmVsLmdldENoaWxkQnlOYW1lKFwiaXRlbV9jb250YWluZXJcIik7XG4gICAgICAgIHRoaXMuaXRlbV92aWV3ID0gdGhpcy5pdGVtX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcIml0ZW1fdmlld1wiKTtcbiAgICAgICAgdGhpcy5pdGVtX2NvbnRlbnQgPSB0aGlzLml0ZW1fdmlldy5nZXRDaGlsZEJ5TmFtZShcImNvbnRlbnRcIik7XG4gICAgICAgIFxuICAgICAgICB0aGlzLm9rX2J0biA9IHRoaXMubWFpbl9wYW5lbC5nZXRDaGlsZEJ5TmFtZShcIm9rX2J0blwiKTtcbiAgICAgICAgdGhpcy5jYW5jZWxfYnRuID0gdGhpcy5tYWluX3BhbmVsLmdldENoaWxkQnlOYW1lKFwiY2FuY2VsX2J0blwiKTtcbiAgICAgICAgdGhpcy5jbG9zZV9idG4gPSB0aGlzLm1haW5fcGFuZWwuZ2V0Q2hpbGRCeU5hbWUoXCJjbG9zZV9idG5cIik7XG5cbiAgICAgICAgdGhpcy5jYW5jZWxfbGFiID0gdGhpcy5jYW5jZWxfYnRuLmdldENoaWxkQnlOYW1lKFwiTGFiZWxcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKTtcbiAgICAgICAgdGhpcy5va19sYWIgPSB0aGlzLm9rX2J0bi5nZXRDaGlsZEJ5TmFtZShcIkxhYmVsXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCk7XG5cbiAgICB9LFxuXG4gICAgLy8g5rOo5YaM5LqL5Lu255uR5ZCs55qE5o6l5Y+jLOS4jemcgOimgeaJi+WKqOiwg+eUqCzlpoLmnpzmmK/kvb/nlKhnY29yZS5HbG9iYWxFdmVudOebkeWQrCzlj6/ku6Xnm7TmjqXosIPnlKhhZGRHbG9iYWxFdmVudFxuICAgIHJlZ2lzdGVyRXZlbnQ6ZnVuY3Rpb24oKXtcbiAgICAgICAgVXRpbHMub25Ub3VjaEVuZCh0aGlzLmNsb3NlX2J0biwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5jdHJsLm9wZW5TaWduVmlldyhmYWxzZSk7XG4gICAgICAgIH0uYmluZCh0aGlzKSwgMik7XG5cbiAgICAgICAgVXRpbHMub25Ub3VjaEVuZCh0aGlzLmNhbmNlbF9idG4sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuY3RybC5vcGVuU2lnblZpZXcoZmFsc2UpO1xuICAgICAgICB9LmJpbmQodGhpcyksIDIpO1xuXG4gICAgICAgIFV0aWxzLm9uVG91Y2hFbmQodGhpcy5va19idG4sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuY2xpY2tIYW5kbGUoKTtcbiAgICAgICAgICAgIHRoaXMuY3RybC5vcGVuU2lnblZpZXcoZmFsc2UpO1xuICAgICAgICB9LmJpbmQodGhpcyksIDIpO1xuICAgIH0sXG5cbiAgICAvLyDpooTliLbkvZPliqDovb3lrozmiJDkuYvlkI4s5re75Yqg5Yiw5a+55bqU5Li76IqC54K55LmL5ZCO55qE5Zue6LCDLOS5n+WwseaYr+S4gOS4queql+S9k+eahOato+W8j+WFpeWPoyzlj6/ku6Xorr7nva7kuIDkupvmlbDmja7kuoZcbiAgICBvcGVuUm9vdFduZDpmdW5jdGlvbihwYXJhbXMpe1xuICAgICAgICBpZighcGFyYW1zIHx8IHBhcmFtc1swXSA9PSBudWxsKXJldHVybjtcbiAgICAgICAgdmFyIGNvbmZpZyA9IENvbmZpZy5hY3Rpdml0eV9kYXRhLmRhdGFfc2lnbl9pbmZvW3BhcmFtc1swXV07XG4gICAgICAgIGlmKCFjb25maWcpcmV0dXJuO1xuICAgICAgICB0aGlzLmlkID0gcGFyYW1zWzBdO1xuICAgICAgICB0aGlzLnRpbWUgPSBjb25maWcudGltZTtcbiAgICAgICAgdGhpcy5sYWJlbC5zdHJpbmcgPSBjb25maWcuZGVzYztcbiAgICAgICAgdGhpcy5jcmVhdGVJdGVtTGlzdChjb25maWcuaXRlbXMpO1xuICAgICAgICB0aGlzLmNhbmNlbF9sYWIuc3RyaW5nID0gY29uZmlnLmNhbmNlbDtcbiAgICAgICAgdGhpcy5va19sYWIuc3RyaW5nID0gY29uZmlnLm9rO1xuICAgICAgICBpZihwYXJhbXNbMV0gJiYgcGFyYW1zWzFdLnRpbWVyKXtcbiAgICAgICAgICAgIHRoaXMuc2V0VGltZXIoY29uZmlnKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBjcmVhdGVJdGVtTGlzdDpmdW5jdGlvbihsaXN0KXtcbiAgICAgICAgaWYobGlzdCA9PSBudWxsIHx8IFV0aWxzLm5leHQobGlzdCkgPT0gbnVsbClyZXR1cm47XG4gICAgICAgIGZvcih2YXIgaSBpbiB0aGlzLml0ZW1fbGlzdCl7XG4gICAgICAgICAgICB0aGlzLml0ZW1fbGlzdFtpXS5zdXNwZW5kQWxsQWN0aW9ucygpO1xuICAgICAgICAgICAgdGhpcy5pdGVtX2xpc3RbaV0uc2V0VmlzaWJsZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGl0ZW0gPSBudWxsO1xuICAgICAgICB2YXIgc2NhbGUgPSAwLjg7XG4gICAgICAgIHZhciBvZmYgPSA2O1xuICAgICAgICB2YXIgX3ggPSAwO1xuICAgICAgICB2YXIgX3kgPSAwO1xuICAgICAgICB2YXIgc3VtID0gbGlzdC5sZW5ndGg7XG4gICAgICAgIHZhciBpdGVtX2NvbmYgPSBudWxsO1xuICAgICAgICB2YXIgdG90YWxfd2lkdGggPSBzdW0gKiAxMjAgKiBzY2FsZSArIChzdW0gLSAxKSAqIG9mZjtcbiAgICAgICAgdmFyIHN0YXJ0X3ggPSAwO1xuICAgICAgICB2YXIgaW5kZXggPSAwO1xuXG4gICAgICAgIHZhciBtYXhfd2lkdGggPSBNYXRoLm1heCh0aGlzLml0ZW1fdmlldy5nZXRDb250ZW50U2l6ZSgpLndpZHRoLCB0b3RhbF93aWR0aClcbiAgICAgICAgdGhpcy5pdGVtX2NvbnRlbnQuc2V0Q29udGVudFNpemUoY2Muc2l6ZShtYXhfd2lkdGgsIHRoaXMuaXRlbV92aWV3LmdldENvbnRlbnRTaXplKCkuaGVpZ2h0KSk7XG5cbiAgICAgICAgZm9yKHZhciBpIGluIGxpc3Qpe1xuICAgICAgICAgICAgdmFyIGJpZCA9IGxpc3RbaV07XG4gICAgICAgICAgICB2YXIgbnVtID0gMTtcbiAgICAgICAgICAgIGl0ZW1fY29uZiA9IFV0aWxzLmdldEl0ZW1Db25maWcoYmlkKTtcbiAgICAgICAgICAgIGlmKGl0ZW1fY29uZil7XG4gICAgICAgICAgICAgICAgaXRlbSA9IHRoaXMuaXRlbV9saXN0W2luZGV4XTtcbiAgICAgICAgICAgICAgICBpZihpdGVtID09IG51bGwpe1xuICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IEl0ZW1zUG9vbC5nZXRJbnN0YW5jZSgpLmdldEl0ZW0oXCJiYWNrcGFja19pdGVtXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLml0ZW1fdmlldyl7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNldFBhcmVudCh0aGlzLml0ZW1fY29udGVudClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1fbGlzdC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmluaXRDb25maWcoZmFsc2UsIHNjYWxlLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc2hvdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBfeCA9IHN0YXJ0X3ggKyAoMTIwICogc2NhbGUgKyBvZmYpICogKGluZGV4KSArIDEyMCpzY2FsZSowLjU7XG4gICAgICAgICAgICAgICAgaXRlbS5zZXREYXRhKHtiaWQ6YmlkLCBudW06bnVtfSk7XG4gICAgICAgICAgICAgICAgaXRlbS5zZXRQb3NpdGlvbihfeCwgX3kpO1xuICAgICAgICAgICAgICAgIGl0ZW0uc2V0VmlzaWJsZSh0cnVlKTtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGluZGV4ICsgMVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBcbiAgICBzZXRUaW1lcjpmdW5jdGlvbigpe1xuICAgIHZhciBjb25maWcgPSBDb25maWcuYWN0aXZpdHlfZGF0YS5kYXRhX3NpZ25faW5mb1t0aGlzLmlkXTtcbiAgICAgICAgaWYodGhpcy50aW1lcl9pZCl7XG4gICAgICAgICAgICBnY29yZS5UaW1lci5kZWwodGhpcy50aW1lcl9pZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aW1lcl9pZCA9IGdjb3JlLlRpbWVyLnNldChmdW5jdGlvbigpe1xuICAgICAgICAgICAgdGhpcy50aW1lID0gdGhpcy50aW1lIC0gMTtcbiAgICAgICAgICAgIGlmKHRoaXMudGltZSA9PSAwKXtcbiAgICAgICAgICAgICAgICB0aGlzLmN0cmwub3BlblNpZ25WaWV3KGZhbHNlKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKHRoaXMuY2FuY2VsX2xhYil7XG4gICAgICAgICAgICAgICAgdGhpcy5jYW5jZWxfbGFiLnN0cmluZyA9IGNjLmpzLmZvcm1hdFN0cihcIiVzKCVzKVwiLCBjb25maWcuY2FuY2VsLCB0aGlzLnRpbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LmJpbmQodGhpcyksIDEwMDAsIHRoaXMudGltZSlcbiAgICAgICAgdGhpcy5jYW5jZWxfbGFiLnN0cmluZyA9IGNjLmpzLmZvcm1hdFN0cihcIiVzKCVzKVwiLCBjb25maWcuY2FuY2VsLCB0aGlzLnRpbWUpO1xuICAgIH0sXG5cbiAgICBjbGlja0hhbmRsZTpmdW5jdGlvbigpe1xuICAgICAgICBpZih0aGlzLmlkID09IEFjdGl2aXR5Q29uc3QuQWN0aXZpdHlTaWduVHlwZS5hcmVuYV9jaGFtcGlvbil7XG4gICAgICAgICAgICBNYWludWlDb250cm9sbGVyLmdldEluc3RhbmNlKCkuY2hhbmdlTWFpblVJU3RhdHVzKE1haW51aUNvbnN0LmJ0bl9pbmRleC5tYWluX3NjZW5lLCBNYWludWlDb25zdC5zdWJfdHlwZS5jaGFtcGlvbl9jYWxsKTtcbiAgICAgICAgfWVsc2UgaWYodGhpcy5pZCA9PSBBY3Rpdml0eUNvbnN0LkFjdGl2aXR5U2lnblR5cGUuYXJlbmFfY2hhbXBpb25fZ3Vlc3Mpe1xuICAgICAgICAgICAgTWFpbnVpQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmNoYW5nZU1haW5VSVN0YXR1cyhNYWludWlDb25zdC5idG5faW5kZXgubWFpbl9zY2VuZSwgTWFpbnVpQ29uc3Quc3ViX3R5cGUuY2hhbXBpb25fY2FsbCk7XG4gICAgICAgIH1lbHNlIGlmKHRoaXMuaWQgPT0gQWN0aXZpdHlDb25zdC5BY3Rpdml0eVNpZ25UeXBlLmdvZGJhdHRsZSB8fCB0aGlzLmlkID09IEFjdGl2aXR5Q29uc3QuQWN0aXZpdHlTaWduVHlwZS5nb2RiYXR0bGVfc2lnbil7XG4gICAgICAgICAgICAvLyBpZihHb2RiYXR0bGVDb250cm9sbGVyOmdldEluc3RhbmNlKCk6Z2V0TW9kZWwoKTpnZXRBcHBseVN0YXR1cygpID09IEdvZEJhdHRsZUNvbnN0YW50cy5hcHBseV9zdGF0dXMudW5fYXBwbHkpe1xuICAgICAgICAgICAgLy8gICAgIEdvZGJhdHRsZUNvbnRyb2xsZXI6Z2V0SW5zdGFuY2UoKTpyZXF1ZXN0QXBwbHlHb2RCYXR0bGUoKVxuICAgICAgICAgICAgLy8gfWVsc2V7XG4gICAgICAgICAgICAvLyAgICAgR29kYmF0dGxlQ29udHJvbGxlcjpnZXRJbnN0YW5jZSgpOnJlcXVlc3RFbnRlckdvZEJhdHRsZSgpXG4gICAgICAgICAgICAvLyB9XG4gICAgICAgIH1cbiAgICB9LFxuXG5cbiAgICAvLyDlhbPpl63nqpfkvZPlm57osIMs6ZyA6KaB5Zyo6L+Z6YeM6LCD55So6K+l56qX5L2T5omA5bGeY29udHJvbGxlcueahGNsb3Nl5pa55rOV5rKh55So5LqO572u56m66K+l56qX5L2T5a6e5L6L5a+56LGhXG4gICAgY2xvc2VDYWxsQmFjazpmdW5jdGlvbigpe1xuICAgICAgICBmb3IodmFyIGkgaW4gdGhpcy5pdGVtX2xpc3Qpe1xuICAgICAgICAgICAgdGhpcy5pdGVtX2xpc3RbaV0uZGVsZXRlTWUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLnRpbWVyX2lkKXtcbiAgICAgICAgICAgIGdjb3JlLlRpbWVyLmRlbCh0aGlzLnRpbWVyX2lkKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLml0ZW1fbGlzdCA9IG51bGw7XG4gICAgfSxcbn0pIl19
|