(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/Scripts/mod/ladder/ladder_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, '50728I/mu9Dq5gNFyfCbUPi', 'ladder_model'); // Scripts/mod/ladder/ladder_model.js "use strict"; // -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 跨服天梯model //
Create: 2019-07-24 10:23:54 // -------------------------------------------------------------------- var RoleController = require("role_controller"); var MainSceneController = require("mainscene_controller"); var SceneConst = require("scene_const"); var LadderEvent = require("ladder_event"); var LadderModel = cc.Class({ "extends": BaseClass, ctor: function ctor() {}, properties: {}, initConfig: function initConfig() { this.myBaseInfo = {}; // 个人数据 this.enemyListData = []; // 挑战对手数据 this.ladderOpenStatus = 0; // 天梯是否开启 this.guildwar_red_list = {}; // 红点数据 }, //个人数据 setLadderMyBaseInfo: function setLadderMyBaseInfo(data) { this.myBaseInfo = data; }, getLadderMyBaseInfo: function getLadderMyBaseInfo() { return this.myBaseInfo; }, //获取剩余挑战次数 getLeftChallengeCount: function getLeftChallengeCount() { if (this.myBaseInfo) { return this.myBaseInfo.can_combat_num || 0; } return 0; }, //获取今日购买次数 getTodayBuyCount: function getTodayBuyCount() { if (this.myBaseInfo) { return this.myBaseInfo.buy_combat_num || 0; } return 0; }, //获取今日剩余购买次数 getTodayLeftBuyCount: function getTodayLeftBuyCount() { var role_vo = RoleController.getInstance().getRoleVo(); var buy_count = this.myBaseInfo.buy_combat_num || 0; var max_count = 0; for (var k in Config.sky_ladder_data.data_buy_num) { var v = Config.sky_ladder_data.data_buy_num[k]; if (v.vip <= role_vo.vip_lev) { max_count = max_count + 1; } } var left_count = max_count - buy_count; if (left_count < 0) { left_count = 0; } return left_count; }, //设置挑战对手数据 setLadderEnemyListData: function setLadderEnemyListData(data) { this.enemyListData = data || {}; }, updateLadderEnemyListData: function updateLadderEnemyListData(data) { data = data || {}; for (var k in data) { var newData = data[k]; for (var _ in this.enemyListData) { var oldData = this.enemyListData[_]; if (newData.idx == oldData.idx) { for (var key in newData) { oldData[key] = newData[key]; } break; } } } }, getLadderEnemyListData: function getLadderEnemyListData() { return this.enemyListData; }, getLadderEnemyDataByIndex: function getLadderEnemyDataByIndex(index) { var enemy_data = {}; for (var k in this.enemyListData) { var eData = this.enemyListData[k]; if (eData.idx == index) { enemy_data = eData; break; } } return enemy_data; }, //天梯是否开启 setLadderOpenStatus: function setLadderOpenStatus(status) { this.ladderOpenStatus = status; }, //天梯活动是否开启 getLadderIsOpen: function getLadderIsOpen() { return this.ladderOpenStatus && this.ladderOpenStatus == 1; }, //是否满足天梯功能开启条件 not_tips 不飘字提示 getLadderOpenStatus: function getLadderOpenStatus(not_tips) { not_tips = not_tips || false; var role_vo = RoleController.getInstance().getRoleVo(); var config = config.sky_ladder_data.data_const.join_min_lev; if (config && config.val <= role_vo.lev) { return { bool: false }; } else { if (!not_tips) { message(config.desc); } return { bool: false, desc: config.desc }; } }, //更新天梯红点 updateLadderRedStatus: function updateLadderRedStatus(bid, status) { RedMgr.getInstance().addCalHandler(function () { var _status = this.guildwar_red_list[bid]; if (_status == status) return; this.guildwar_red_list[bid] = status; //更新主界面图标红点 var ladder_status = this.checkLadderRedStatus(); MainSceneController.getInstance().setBuildRedStatus(SceneConst.CenterSceneBuild.ladder, { bid: CrossgroundConst.Red_Type.ladder, status: ladder_status }); //更新天梯界面红点 gcore.GlobalEvent.fire(LadderEvent.UpdateLadderRedStatus, bid, status); }.bind(this), RedIds.Ladder); }, checkRedIsShowByRedType: function checkRedIsShowByRedType(redType) { return this.guildwar_red_list[redType] || false; }, checkLadderRedStatus: function checkLadderRedStatus() { for (var k in this.guildwar_red_list) { var v = this.guildwar_red_list[k]; if (v == true) { 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxsYWRkZXJcXGxhZGRlcl9tb2RlbC5qcyJdLCJuYW1lcyI6WyJSb2xlQ29udHJvbGxlciIsInJlcXVpcmUiLCJNYWluU2NlbmVDb250cm9sbGVyIiwiU2NlbmVDb25zdCIsIkxhZGRlckV2ZW50IiwiTGFkZGVyTW9kZWwiLCJjYyIsIkNsYXNzIiwiQmFzZUNsYXNzIiwiY3RvciIsInByb3BlcnRpZXMiLCJpbml0Q29uZmlnIiwibXlCYXNlSW5mbyIsImVuZW15TGlzdERhdGEiLCJsYWRkZXJPcGVuU3RhdHVzIiwiZ3VpbGR3YXJfcmVkX2xpc3QiLCJzZXRMYWRkZXJNeUJhc2VJbmZvIiwiZGF0YSIsImdldExhZGRlck15QmFzZUluZm8iLCJnZXRMZWZ0Q2hhbGxlbmdlQ291bnQiLCJjYW5fY29tYmF0X251bSIsImdldFRvZGF5QnV5Q291bnQiLCJidXlfY29tYmF0X251bSIsImdldFRvZGF5TGVmdEJ1eUNvdW50Iiwicm9sZV92byIsImdldEluc3RhbmNlIiwiZ2V0Um9sZVZvIiwiYnV5X2NvdW50IiwibWF4X2NvdW50IiwiayIsIkNvbmZpZyIsInNreV9sYWRkZXJfZGF0YSIsImRhdGFfYnV5X251bSIsInYiLCJ2aXAiLCJ2aXBfbGV2IiwibGVmdF9jb3VudCIsInNldExhZGRlckVuZW15TGlzdERhdGEiLCJ1cGRhdGVMYWRkZXJFbmVteUxpc3REYXRhIiwibmV3RGF0YSIsIl8iLCJvbGREYXRhIiwiaWR4Iiwia2V5IiwiZ2V0TGFkZGVyRW5lbXlMaXN0RGF0YSIsImdldExhZGRlckVuZW15RGF0YUJ5SW5kZXgiLCJpbmRleCIsImVuZW15X2RhdGEiLCJlRGF0YSIsInNldExhZGRlck9wZW5TdGF0dXMiLCJzdGF0dXMiLCJnZXRMYWRkZXJJc09wZW4iLCJnZXRMYWRkZXJPcGVuU3RhdHVzIiwibm90X3RpcHMiLCJjb25maWciLCJkYXRhX2NvbnN0Iiwiam9pbl9taW5fbGV2IiwidmFsIiwibGV2IiwiYm9vbCIsIm1lc3NhZ2UiLCJkZXNjIiwidXBkYXRlTGFkZGVyUmVkU3RhdHVzIiwiYmlkIiwiUmVkTWdyIiwiYWRkQ2FsSGFuZGxlciIsIl9zdGF0dXMiLCJsYWRkZXJfc3RhdHVzIiwiY2hlY2tMYWRkZXJSZWRTdGF0dXMiLCJzZXRCdWlsZFJlZFN0YXR1cyIsIkNlbnRlclNjZW5lQnVpbGQiLCJsYWRkZXIiLCJDcm9zc2dyb3VuZENvbnN0IiwiUmVkX1R5cGUiLCJnY29yZSIsIkdsb2JhbEV2ZW50IiwiZmlyZSIsIlVwZGF0ZUxhZGRlclJlZFN0YXR1cyIsImJpbmQiLCJSZWRJZHMiLCJMYWRkZXIiLCJjaGVja1JlZElzU2hvd0J5UmVkVHlwZSIsInJlZFR5cGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUEsY0FBYyxHQUFHQyxPQUFPLENBQUMsaUJBQUQsQ0FBNUI7O0FBQ0EsSUFBSUMsbUJBQW1CLEdBQUdELE9BQU8sQ0FBQyxzQkFBRCxDQUFqQzs7QUFDQSxJQUFJRSxVQUFVLEdBQUdGLE9BQU8sQ0FBQyxhQUFELENBQXhCOztBQUNBLElBQUlHLFdBQVcsR0FBR0gsT0FBTyxDQUFDLGNBQUQsQ0FBekI7O0FBRUEsSUFBSUksV0FBVyxHQUFHQyxFQUFFLENBQUNDLEtBQUgsQ0FBUztBQUN2QixhQUFTQyxTQURjO0FBRXZCQyxFQUFBQSxJQUFJLEVBQUUsZ0JBQVksQ0FDakIsQ0FIc0I7QUFLdkJDLEVBQUFBLFVBQVUsRUFBRSxFQUxXO0FBUXZCQyxFQUFBQSxVQUFVLEVBQUUsc0JBQVk7QUFDcEIsU0FBS0MsVUFBTCxHQUFrQixFQUFsQixDQURvQixDQUNPOztBQUMzQixTQUFLQyxhQUFMLEdBQXFCLEVBQXJCLENBRm9CLENBRU87O0FBQzNCLFNBQUtDLGdCQUFMLEdBQXdCLENBQXhCLENBSG9CLENBR087O0FBRTNCLFNBQUtDLGlCQUFMLEdBQXlCLEVBQXpCLENBTG9CLENBS1M7QUFDaEMsR0Fkc0I7QUFnQnZCO0FBQ0FDLEVB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Q0o7O0FBQ0QsV0FBTyxLQUFQO0FBQ0g7QUFuSnNCLENBQVQsQ0FBbEIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAYXV0aG9yOiB4eHhAc3lnLmNvbSjlv4XloassIOWIm+W7uuaooeWdl+eahOS6uuWRmClcbi8vIEBkZXNjcmlwdGlvbjpcbi8vICAgICAg6Leo5pyN5aSp5qKvbW9kZWxcbi8vIDxici8+Q3JlYXRlOiAyMDE5LTA3LTI0IDEwOjIzOjU0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudmFyIFJvbGVDb250cm9sbGVyID0gcmVxdWlyZShcInJvbGVfY29udHJvbGxlclwiKTtcbnZhciBNYWluU2NlbmVDb250cm9sbGVyID0gcmVxdWlyZShcIm1haW5zY2VuZV9jb250cm9sbGVyXCIpO1xudmFyIFNjZW5lQ29uc3QgPSByZXF1aXJlKFwic2NlbmVfY29uc3RcIik7XG52YXIgTGFkZGVyRXZlbnQgPSByZXF1aXJlKFwibGFkZGVyX2V2ZW50XCIpO1xuXG52YXIgTGFkZGVyTW9kZWwgPSBjYy5DbGFzcyh7XG4gICAgZXh0ZW5kczogQmFzZUNsYXNzLFxuICAgIGN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICB9LFxuXG4gICAgcHJvcGVydGllczoge1xuICAgIH0sXG5cbiAgICBpbml0Q29uZmlnOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMubXlCYXNlSW5mbyA9IHt9OyAgICAgIC8vIOS4quS6uuaVsOaNrlxuICAgICAgICB0aGlzLmVuZW15TGlzdERhdGEgPSBbXTtcdCAgLy8g5oyR5oiY5a+55omL5pWw5o2uXG4gICAgICAgIHRoaXMubGFkZGVyT3BlblN0YXR1cyA9IDA7IC8vIOWkqeair+aYr+WQpuW8gOWQr1xuXG4gICAgICAgIHRoaXMuZ3VpbGR3YXJfcmVkX2xpc3QgPSB7fTtcdC8vIOe6oueCueaVsOaNrlxuICAgIH0sXG5cbiAgICAvL+S4quS6uuaVsOaNrlxuICAgIHNldExhZGRlck15QmFzZUluZm86IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHRoaXMubXlCYXNlSW5mbyA9IGRhdGE7XG4gICAgfSxcblxuICAgIGdldExhZGRlck15QmFzZUluZm86IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXlCYXNlSW5mbztcbiAgICB9LFxuXG4gICAgLy/ojrflj5bliankvZnmjJHmiJjmrKHmlbBcbiAgICBnZXRMZWZ0Q2hhbGxlbmdlQ291bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMubXlCYXNlSW5mbykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubXlCYXNlSW5mby5jYW5fY29tYmF0X251bSB8fCAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwXG4gICAgfSxcblxuICAgIC8v6I635Y+W5LuK5pel6LSt5Lmw5qyh5pWwXG4gICAgZ2V0VG9kYXlCdXlDb3VudDogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5teUJhc2VJbmZvKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5teUJhc2VJbmZvLmJ1eV9jb21iYXRfbnVtIHx8IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDBcbiAgICB9LFxuXG4gICAgLy/ojrflj5bku4rml6XliankvZnotK3kubDmrKHmlbBcbiAgICBnZXRUb2RheUxlZnRCdXlDb3VudDogZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgcm9sZV92byA9IFJvbGVDb250cm9sbGVyLmdldEluc3RhbmNlKCkuZ2V0Um9sZVZvKCk7XG4gICAgICAgIGxldCBidXlfY291bnQgPSB0aGlzLm15QmFzZUluZm8uYnV5X2NvbWJhdF9udW0gfHwgMDtcbiAgICAgICAgbGV0IG1heF9jb3VudCA9IDA7XG4gICAgICAgIGZvciAobGV0IGsgaW4gQ29uZmlnLnNreV9sYWRkZXJfZGF0YS5kYXRhX2J1eV9udW0pIHtcbiAgICAgICAgICAgIGxldCB2ID0gQ29uZmlnLnNreV9sYWRkZXJfZGF0YS5kYXRhX2J1eV9udW1ba107XG4gICAgICAgICAgICBpZiAodi52aXAgPD0gcm9sZV92by52aXBfbGV2KSB7XG4gICAgICAgICAgICAgICAgbWF4X2NvdW50ID0gbWF4X2NvdW50ICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgbGVmdF9jb3VudCA9IG1heF9jb3VudCAtIGJ1eV9jb3VudDtcbiAgICAgICAgaWYgKGxlZnRfY291bnQgPCAwKSB7XG4gICAgICAgICAgICBsZWZ0X2NvdW50ID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGVmdF9jb3VudFxuICAgIH0sXG5cbiAgICAvL+iuvue9ruaMkeaImOWvueaJi+aVsOaNrlxuICAgIHNldExhZGRlckVuZW15TGlzdERhdGE6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHRoaXMuZW5lbXlMaXN0RGF0YSA9IGRhdGEgfHwge307XG4gICAgfSxcblxuICAgIHVwZGF0ZUxhZGRlckVuZW15TGlzdERhdGE6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIGRhdGEgPSBkYXRhIHx8IHt9O1xuICAgICAgICBmb3IgKGxldCBrIGluIGRhdGEpIHtcbiAgICAgICAgICAgIGxldCBuZXdEYXRhID0gZGF0YVtrXTtcbiAgICAgICAgICAgIGZvciAobGV0IF8gaW4gdGhpcy5lbmVteUxpc3REYXRhKSB7XG4gICAgICAgICAgICAgICAgbGV0IG9sZERhdGEgPSB0aGlzLmVuZW15TGlzdERhdGFbX107XG4gICAgICAgICAgICAgICAgaWYgKG5ld0RhdGEuaWR4ID09IG9sZERhdGEuaWR4KSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBuZXdEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbGREYXRhW2tleV0gPSBuZXdEYXRhW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgZ2V0TGFkZGVyRW5lbXlMaXN0RGF0YTogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbmVteUxpc3REYXRhXG4gICAgfSxcblxuICAgIGdldExhZGRlckVuZW15RGF0YUJ5SW5kZXg6IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICBsZXQgZW5lbXlfZGF0YSA9IHt9O1xuICAgICAgICBmb3IgKGxldCBrIGluIHRoaXMuZW5lbXlMaXN0RGF0YSkge1xuICAgICAgICAgICAgbGV0IGVEYXRhID0gdGhpcy5lbmVteUxpc3REYXRhW2tdO1xuICAgICAgICAgICAgaWYgKGVEYXRhLmlkeCA9PSBpbmRleCkge1xuICAgICAgICAgICAgICAgIGVuZW15X2RhdGEgPSBlRGF0YTtcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbmVteV9kYXRhXG4gICAgfSxcblxuICAgIC8v5aSp5qKv5piv5ZCm5byA5ZCvXG4gICAgc2V0TGFkZGVyT3BlblN0YXR1czogZnVuY3Rpb24gKHN0YXR1cykge1xuICAgICAgICB0aGlzLmxhZGRlck9wZW5TdGF0dXMgPSBzdGF0dXM7XG4gICAgfSxcblxuICAgIC8v5aSp5qKv5rS75Yqo5piv5ZCm5byA5ZCvXG4gICAgZ2V0TGFkZGVySXNPcGVuOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhZGRlck9wZW5TdGF0dXMgJiYgdGhpcy5sYWRkZXJPcGVuU3RhdHVzID09IDE7XG4gICAgfSxcblxuICAgIC8v5piv5ZCm5ruh6Laz5aSp5qKv5Yqf6IO95byA5ZCv5p2h5Lu2IG5vdF90aXBzIOS4jemjmOWtl+aPkOekulxuICAgIGdldExhZGRlck9wZW5TdGF0dXM6IGZ1bmN0aW9uIChub3RfdGlwcykge1xuICAgICAgICBub3RfdGlwcyA9IG5vdF90aXBzIHx8IGZhbHNlO1xuICAgICAgICBsZXQgcm9sZV92byA9IFJvbGVDb250cm9sbGVyLmdldEluc3RhbmNlKCkuZ2V0Um9sZVZvKCk7XG4gICAgICAgIGxldCBjb25maWcgPSBjb25maWcuc2t5X2xhZGRlcl9kYXRhLmRhdGFfY29uc3Quam9pbl9taW5fbGV2O1xuICAgICAgICBpZiAoY29uZmlnICYmIGNvbmZpZy52YWwgPD0gcm9sZV92by5sZXYpIHtcbiAgICAgICAgICAgIHJldHVybiB7IGJvb2w6IGZhbHNlIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghbm90X3RpcHMpIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlKGNvbmZpZy5kZXNjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IGJvb2w6IGZhbHNlLCBkZXNjOiBjb25maWcuZGVzYyB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLy/mm7TmlrDlpKnmoq/nuqLngrlcbiAgICB1cGRhdGVMYWRkZXJSZWRTdGF0dXM6IGZ1bmN0aW9uIChiaWQsIHN0YXR1cykge1xuICAgICAgICBSZWRNZ3IuZ2V0SW5zdGFuY2UoKS5hZGRDYWxIYW5kbGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxldCBfc3RhdHVzID0gdGhpcy5ndWlsZHdhcl9yZWRfbGlzdFtiaWRdO1xuICAgICAgICAgICAgaWYgKF9zdGF0dXMgPT0gc3RhdHVzKSByZXR1cm5cbiAgICAgICAgICAgIHRoaXMuZ3VpbGR3YXJfcmVkX2xpc3RbYmlkXSA9IHN0YXR1cztcbiAgICAgICAgICAgIC8v5pu05paw5Li755WM6Z2i5Zu+5qCH57qi54K5XG4gICAgICAgICAgICBsZXQgbGFkZGVyX3N0YXR1cyA9IHRoaXMuY2hlY2tMYWRkZXJSZWRTdGF0dXMoKTtcbiAgICAgICAgICAgIE1haW5TY2VuZUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5zZXRCdWlsZFJlZFN0YXR1cyhTY2VuZUNvbnN0LkNlbnRlclNjZW5lQnVpbGQubGFkZGVyLCB7IGJpZDogQ3Jvc3Nncm91bmRDb25zdC5SZWRfVHlwZS5sYWRkZXIsIHN0YXR1czogbGFkZGVyX3N0YXR1cyB9KVxuICAgICAgICAgICAgLy/mm7TmlrDlpKnmoq/nlYzpnaLnuqLngrlcbiAgICAgICAgICAgIGdjb3JlLkdsb2JhbEV2ZW50LmZpcmUoTGFkZGVyRXZlbnQuVXBkYXRlTGFkZGVyUmVkU3RhdHVzLCBiaWQsIHN0YXR1cyk7XG4gICAgICAgIH0uYmluZCh0aGlzKSwgUmVkSWRzLkxhZGRlcilcbiAgICB9LFxuXG4gICAgY2hlY2tSZWRJc1Nob3dCeVJlZFR5cGU6IGZ1bmN0aW9uIChyZWRUeXBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmd1aWxkd2FyX3JlZF9saXN0W3JlZFR5cGVdIHx8IGZhbHNlXG4gICAgfSxcblxuICAgIGNoZWNrTGFkZGVyUmVkU3RhdHVzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAobGV0IGsgaW4gdGhpcy5ndWlsZHdhcl9yZWRfbGlzdCkge1xuICAgICAgICAgICAgbGV0IHYgPSB0aGlzLmd1aWxkd2FyX3JlZF9saXN0W2tdO1xuICAgICAgICAgICAgaWYgKHYgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxufSk7Il19